Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   colores en un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=16666)

frf_84 06-12-2004 22:18:28

colores en un dbgrid
 
buenas tengo una tabla en la que uno de sus campo es de tipo booleano, y me gustaria que al mostrar sus registros en un dbgrid los registros que estan con el valor verdadero de este campo quiero mostrarlos con un color por ejemplo rojo t lo que lo tienen a falso amarillo po ejemplo, he leido que el componente canvas se puede hacer que no lo he conseguio y por eso os pido ayuda.
gracias.

Neftali [Germán.Estévez] 07-12-2004 09:44:37

Revisa éste hilo:
http://www.clubdelphi.com/foros/showthread.php?t=14929

Puedes encontrar respuestas anteriores a ésta pregunta.

burasu 07-12-2004 12:14:57

Este es el código que utiizo yo, lo añado en el OnDrawColumnCell de la rejilla, y lo puedes usar tanto si esta está enlazada con un componente Tabla como con un componetne SQL. En este caso, yo uso los colores para determinar si el usuario está en el sistema y si el usuario está activado o no.

Código Delphi [-]
  if gdselected in state then begin                   // REGISTRO SELECCIONADO POR EL USUARIO.
    dbgrid1.canvas.brush.color := RGB(0,0,128);
    dbgrid1.canvas.Font.color := RGB(255,255,255);
    dbgrid1.canvas.Font.style:=[fsBold];                  // Lo ponemos en modo negrita
  end
  else begin
   if (TBUsuarios.RecNo mod 2) = 0 then begin         // COMPROBAMOS SI EL REGISTRO ESTÁ SITUADO EN REJILLA PAR O IMPAR
    if Column.Field.Dataset.FieldbyName('LActivo').Value = 1 then begin   // SI EL REGISTRO ESTÁ BLOQUEADO.
      dbgrid1.canvas.brush.color := RGB(255,0,0);
      dbgrid1.canvas.font.color := RGB(255,255,255);
      dbgrid1.canvas.Font.style:=[fsBold];
    end
    else begin
      if (TablaAcceso[TBUsuarios.FieldbyName('NUsuario').AsInteger-1] = 1) and ( TBUsuarios.FieldbyName('NUsuario').Value<> ModuloDatos.RegFichIni.UltUser) then begin
        dbgrid1.canvas.brush.color := RGB(0,128,128);    // Verde Teal'
        dbgrid1.canvas.Font.color:=RGB(255,255,255);    // Blanco
        dbgrid1.canvas.Font.style:=[fsBold];
      end
      else begin
          dbgrid1.canvas.brush.color := RGB(255,255,225);   // Amarillo Claro
          dbgrid1.canvas.Font.color := RGB(0,0,0);
          dbgrid1.canvas.Font.style:=[];
      end;
    end;
   end
   else begin
    if Column.Field.Dataset.FieldbyName('LActivo').Value = 1 then begin
      dbgrid1.canvas.brush.color := RGB(255,0,0);
      dbgrid1.canvas.font.color := RGB(255,255,255);
      dbgrid1.canvas.Font.style:=[fsBold];
    end
    else begin
//      if (TBUsuarios.FieldbyName('NUsuario').Value = AcUser) and (AcUser <> ModuloDatos.RegFichIni.UltUser) then begin
      if (TablaAcceso[TBUsuarios.FieldbyName('NUsuario').AsInteger-1] = 1) and ( TBUsuarios.FieldbyName('NUsuario').Value<> ModuloDatos.RegFichIni.UltUser) then begin
        dbgrid1.canvas.brush.color := RGB(0,128,128);
        dbgrid1.canvas.Font.color:=RGB(250,250,183);
        dbgrid1.canvas.Font.style:=[fsBold];
      end
      else begin
        dbgrid1.canvas.brush.color := RGB(250,250,183);
        dbgrid1.canvas.Font.color := RGB(0,0,0);
        dbgrid1.canvas.Font.style:=[];
      end;
    end;
   end;
  end;

  dbgrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);

Espero que te ayude :cool:

P.D: Visto así creo que se puede optimizar bastante, pero eso ya te lo dejo a tí. :D


La franja horaria es GMT +2. Ahora son las 09:02:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi