Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Poner color de fondo y letra en ExpressQuantumGrid cxGrid
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Poner color de fondo y letra en ExpressQuantumGrid cxGrid

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Poner color de fondo y letra en ExpressQuantumGrid cxGrid Responder citando

Estoy desarrollando una aplicación de Facturación y Contabilidad, uso como motor de base de datos Firebird, como lenguaje de programación Dephi 6 y, dentro de Delphi 6, uso el componente ExpressQuantumGrid en su versión 6.40. En concreto uso cxGrid, antes usaba la versión 4 de ExpressQuantumGrid y en el evento DrawCell del grid ponía el color de fondo de cada fila en función de unos valores, también el color de la letra, incluso ponía el formato tachado en algunas líneas. Ahora veo que con la nueva versión, en el cxGrid existe el evento DrawCell pero el código que tenía para la versión 4 no me vale para la 6.

Pongo el código que usaba para la versión 4 y que funcionaba perfectamente:

Código:

  if not ANode.HasChildren then
  begin
    if (ANode.Values[Tablaresueltatecnico.Index] = Tablaresueltatecnico.ValueChecked) or
        (ANode.Values[Tablaestado.Index] = 'Cancelado') or
        (ANode.Values[Tablaestado.Index] = 'Resuelto') or
        (ANode.Values[Tablaestado.Index] = 'Desestimado') then
      AFont.Style := [fsStrikeOut];

    if ANode.Values[Tablaaceptada.Index] = Tablaaceptada.ValueUnchecked then
      AFont.Style := AFont.Style + [fsBold];

    if ANode.Values[Tablareaperturas.Index] > 0 then
      AColor := vtColorIncidenciaReaperturas;

    if not vtColorIncidenciasPorFuente then
    begin
      if ANode.Values[Tablaprioridad.Index] >= 8 then
        AColor := vtColorIncidenciaPrioridadAlta;
      if (ANode.Values[Tablaprioridad.Index] <= 7) and
          (ANode.Values[Tablaprioridad.Index] >= 6) then
        AColor := vtColorIncidenciasPrioridadMedia;
      if (ANode.Values[Tablaprioridad.Index] <= 5) then
        AColor := vtColorIncidenciasPrioridadBaja;
    end;

    if ASelected then
      AFont.Color := vtColorIncidenciasFuenteSeleccionada
    else
    begin
      if not vtColorIncidenciasPorFuente then
        AFont.Color := vtColorIncidenciasFuenteNoSeleccionada
      else
      begin
        if ANode.Values[Tablaprioridad.Index] >= 8 then
          AFont.Color := vtColorIncidenciaPrioridadAlta;
        if (ANode.Values[Tablaprioridad.Index] <= 7) and
            (ANode.Values[Tablaprioridad.Index] >= 6) then
          AFont.Color := vtColorIncidenciasPrioridadMedia;
        if (ANode.Values[Tablaprioridad.Index] <= 5) then
          AFont.Color := vtColorIncidenciasPrioridadBaja;
      end;
    end;
  end;


¿Cómo puedo pasar este código a la nueva versión 6.40 de ExpressQuantumGrid (cxGrid)?
MensajePublicado:
Jue Oct 06, 2011 5:23 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Poner color de fondo y letra en ExpressQuantumGrid cxGri Responder citando



Anuncios



Para poner el color de fondo de una fila de un cxGrid sería algo así (siempre en el evento CustomDrawCell del TableView del cxGrid):

Código:

  ACanvas.Brush.Color := vtColorIncidenciaReaperturas;


Donde "vtColorIncidenciaReaperturas" es una de tus variables, de tipo integer, donde guardas el valor numérico del color.

Para cambiar el estilo de la letra, por ejemplo a tachado:

Código:

  ACanvas.Canvas.Font.Style := [fsStrikeOut];


Si quieres dejar el mismo estilo que tenga y además añadir otro, por ejemplo si tienes el tipo de letra itálica y quieres también ponerla en negrita sería algo así:

Código:

  ACanvas.Canvas.Font.Style := ACanvas.Canvas.Font.Style + [fsBold];


Para cambiar el color de la fuente:

Código:

  ACanvas.Canvas.Font.Color := vtColorIncidenciaPrioridadAlta


Para obtener el valor de una columna de la fila actual y así poder indicar los colores y formatos según el valor de una o varias columnas sería algo así

Código:

  AViewInfo.GridRecord.Values[tablaViewresueltatecnico.Index]


Con lo cual, la transcripción de tu código de la versión 4 a la 6 sería algo así:

Código:

  if (AViewInfo.GridRecord.Values[tablaViewresueltatecnico.Index] = 'S') or
        (AViewInfo.GridRecord.Values[tablaViewestado.Index] = 'Cancelado') or
        (AViewInfo.GridRecord.Values[tablaViewestado.Index] = 'Resuelto') or
        (AViewInfo.GridRecord.Values[tablaViewestado.Index] = 'Desestimado') then
    ACanvas.Canvas.Font.Style := [fsStrikeOut];

  if AViewInfo.GridRecord.Values[tablaViewaceptada.Index] = 'N' then
      ACanvas.Canvas.Font.Style := ACanvas.Canvas.Font.Style + [fsBold];

  if AViewInfo.GridRecord.Values[tablaViewreaperturas.Index] > 0 then
    ACanvas.Brush.Color := vtColorIncidenciaReaperturas;

  if not vtColorIncidenciasPorFuente then
  begin
    if AViewInfo.GridRecord.Values[tablaViewprioridad.Index] >= 8 then
      ACanvas.Brush.Color := vtColorIncidenciaPrioridadAlta;
    if (AViewInfo.GridRecord.Values[tablaViewprioridad.Index] <= 7) and
        (AViewInfo.GridRecord.Values[tablaViewprioridad.Index] >= 6) then
      ACanvas.Brush.Color := vtColorIncidenciasPrioridadMedia;
    if (AViewInfo.GridRecord.Values[tablaViewprioridad.Index] <= 5) then
      ACanvas.Brush.Color := vtColorIncidenciasPrioridadBaja;
  end;


  if AViewInfo.GridRecord.Selected then
    ACanvas.Canvas.Font.Color := vtColorIncidenciasFuenteSeleccionada
  else
  begin
    if not vtColorIncidenciasPorFuente then
      ACanvas.Canvas.Font.Color := vtColorIncidenciasFuenteNoSeleccionada
    else
    begin
      if AViewInfo.GridRecord.Values[tablaViewprioridad.Index] >= 8 then
        ACanvas.Canvas.Font.Color := vtColorIncidenciaPrioridadAlta;
      if (AViewInfo.GridRecord.Values[tablaViewprioridad.Index] <= 7) and
          (AViewInfo.GridRecord.Values[tablaViewprioridad.Index] >= 6) then
        ACanvas.Canvas.Font.Color := vtColorIncidenciasPrioridadMedia;
      if (AViewInfo.GridRecord.Values[tablaViewprioridad.Index] <= 5) then
        ACanvas.Canvas.Font.Color := vtColorIncidenciasPrioridadBaja;
    end;
  end;
MensajePublicado:
Jue Oct 06, 2011 5:32 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: [RESUELTO] Poner color de fondo y letra ExpressQuantumGrid Responder citando



Anuncios



alonsojpd escribió:
Para poner el color de fondo de una fila de un cxGrid sería algo así (siempre en el evento CustomDrawCell del TableView del cxGrid):

Código:

  ACanvas.Brush.Color := vtColorIncidenciaReaperturas;


Donde "vtColorIncidenciaReaperturas" es una de tus variables, de tipo ...


¡¡Excelente!! solucionado con tus indicaciones. Muchas gracias.
MensajePublicado:
Jue Oct 06, 2011 5:33 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+