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. :)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.