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 dbgrid1.canvas.brush.color := RGB(0,0,128);
dbgrid1.canvas.Font.color := RGB(255,255,255);
dbgrid1.canvas.Font.style:=[fsBold]; end
else begin
if (TBUsuarios.RecNo mod 2) = 0 then 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 (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(255,255,255); dbgrid1.canvas.Font.style:=[fsBold];
end
else begin
dbgrid1.canvas.brush.color := RGB(255,255,225); 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 (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
P.D: Visto así creo que se puede optimizar bastante, pero eso ya te lo dejo a tí.
