PDA

Ver la Versión Completa : Colores a un DBGrid


cmm07
10-02-2008, 20:50:03
Hola, de nuevo molestando:D:D:D, bueno esta es mi duda, es un poco tonta :p:p:p:

Lo que necesito hacer es que un DBGrid cambie el color en cada fila aqui les dejo una foto

http://img218.imageshack.us/img218/2502/dbgridyl1.png

esta foto es solo un montaje algo falso, eso mismo necesito hacer en delphi 7

los colores son:
Color1: $00FFFAF0.
Color2: $00FFEFCA.


Gracias por su atención

SALU2

QUE SIGA CRECIENDO:.........:):)

Delphius
10-02-2008, 21:26:37
Hola cmm07,
¿Probaste haciendo una búsqueda en los foros? El tema es moneda corriente en los foros. Por ejemplo, aquí (http://www.clubdelphi.com/foros/showthread.php?t=50979&highlight=Colorear+dbgrid)y aquí (http://www.clubdelphi.com/foros/showthread.php?t=24520&highlight=Colorear+dbgrid).

O también puedes optar por un componentes de terceros que realice esto por ti. Un sitio donde conseguirlos: torry (http://www.torry.net).

Saludos,

gluglu
10-02-2008, 22:03:35
Deberías buscar más en los foros tal y como comenta también nuestro amigo Delphius.

No obstante, te expongo directamente aquí el codigo que precisas para colorear el DBGrid tal y como expones :

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If (not (gdSelected in State)) and (DataSet1.Recno mod 2 = 0) and (not DataSet1.IsEmpty) then
DBGrid1.Canvas.Brush.Color := $00FFEFCA;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Utiliza el evento OnDrawColumnCell del DBGrid. Y por defecto le indicas como color al DBGrid en su propiedad Color el otro color que indicas :

DBGrid1.Color := $00FFFAF0;

DataSet1 es el DataSet asociado al DBGrid.

Saludos.

cmm07
10-02-2008, 22:47:14
Muchas pero muchas gracias, me funciono de maravilla, no se como agradecerles...

Gracias.

SALU2

Lisandro
02-03-2012, 23:09:15
Hola amigos:
Después de andar bastante, he logrado manejar el tema, y agradecido a todo lo que me enseñaron todos desde allí, a continuación listo como lo hago:

{ método llamado desde DBGrid DrawColumnCell }
procedure TFECuentaCasaConque.GrillaDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Num: Integer;
R: TRect;
Conque, Haber: Integer;
begin
if (DataCol = 2) or (DataCol = 5) then
with dmCajaHogar do { el datamodule con la tabla QCuentaCasa}
begin
if QCuentaCasa.FieldByName('HABER').AsInteger = 0 then
begin
Grilla.Canvas.Brush.Color:= $00F3E8FF; {Rosa}
Grilla.Canvas.Font.Color:= clRed;
Grilla.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
endGrilla.Canvas.Brush.Color:= clLimMed1;
4:
else
if (DataCol in [3,6]) then { la columna 3 (comienza en 0) tiene el campo "CONQUE" a colorear }
with dmCajaHogar do
begin
Num:=TStringGrid(Grilla).Row;
R:=TStringGrid(Grilla).CellRect(DataCol,Num);
with Grilla do { es el DBGid }
begin
Conque:= QCuentaCasa.FieldByName('CONQUE').AsInteger;
if not(gdFocused in State) then
case Conque of
1: Grilla.Canvas.Brush.Color:= clVerCla1;
2: Grilla.Canvas.Brush.Color:= clCelMed1;
3: { .... yo sigo hasta 11 }
end
else
if gdFocused in State then
case dmCajaHogar.QCajaHogarCON.AsInteger of
1: Grilla.Columns[3].color:= clVerCla2;
2: Grilla.Columns[3].color:= clCelMed2;
end;
Grilla.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end;

Un abrazo y saludos a todos.

Lisandro

ecfisa
03-03-2012, 00:27:13
Hola Lisandro.

Primeramente gracias por aportarnos tu código.

Lo que te voy a solicitar es, que cuando incluyas código en tus mensajes, utilices TAG's. Te pongo una imágen que explica su uso:

http://img403.imageshack.us/img403/3461/75416396.jpg

Saludos y gracias por tu colaboración. :)