Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar color filas DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=29454)

Iskariote0087 23-01-2006 09:34:33

Cambiar color filas DBGrid
 
Hola tengo un pequeño problema.
Dependiendo del valor de una variable quiero q el registro q grabo en el DBGrid se grabe con un color o con otro, casi lo consigo pero en vez de cambiar un solo registro me cambian todos y eso NO NO. Lo estoy haciendo asi:

En el evento DrawColumnCell
if linea=0 then
DBGrid1.Canvas.Brush.Color:=clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);


Con esto me cambia todo el DBGrid, hay alguna forma de que me cambie una sola linea.
Lo que quiero consegir es cada linea este de un color diferente para que se distingan bien.Que tal una ayudita.Gracias

Un saludete
Iskariote

tuto 23-01-2006 09:50:15

Yo eso lo tengo en un TstringGrid de la siguiente forma;

if (Pos('DIFERENTE', Sgrid1.cells[0,row]) > 0) then
begin
Sgrid1.canvas.brush.Color := clred;
Sgrid1.canvas.fillrect(rect);
Sgrid1.canvas.textrect(rect, rect.left, rect.top, Sgrid1.Cells[col,row]);
end;

Espero te pueda ayudar o guiar.

;-)

Neftali [Germán.Estévez] 23-01-2006 12:31:28

Revisa los hilos que aparecen al final de la página o realiza una búsqueda en los foros; Es un tema que ya se ha tratado muchas veces.

Iskariote0087 23-01-2006 13:56:52

Agradecimiento
 
Gracias por vuestras contestaciones, pero algo no estoy haciendo bien.Despues de revisar con detenimiento algunos hilos he tomado una idea bastante buena, hago lo siguiente:
if linea=0 then
DBGrid1.Canvas.Brush.Color:=clRed;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.Font.Color:=clWindowText;


Pero este codigo me cambia todas las lineas no solo una. Es mas cuando la variable Linea tiene 1 todas las lineas me las pone de un color y si viene con 0 me las pone de otro. algo se me queda en el tintero y no se que es.Alguna alma caritativa que me eche un cable???????
Un saludete
Iskariote

josem 23-01-2006 15:16:26

Pintar una fila en un DbGrid
 
Hola, espero que este ejemplo te sirva.

Saludos
Jose Miguel

procedure TFMntInventario.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
iDif : Extended;
iFile: Extended;
begin
// Cambia color a Existencia por debajo del minimo
if ( Dt1.TInventario.FieldByName('ExistAct').AsInteger <
Dt1.TInventario.FieldByName('ExistMin').AsInteger ) then begin
DBGrid1.Canvas.Font.Color := clRed;
end;

// Cambia color a inventario inactivo
if ( SoloNumeros(Dt1.TInventario.FieldByName('Activo').AsString, 0) = '0' ) then begin
DBGrid1.Canvas.Font.Color := clSilver;
end;
if ( FCampoJPG( Dt1.TInventario, 'ActivaVencto' )) then begin
iDif := StrToDate(FormatFecha(Dt1.TInventario.FieldByName( 'FecVcto' ).AsString)) - Date;
iFile := StrToInt(SoloNumeros(Dt1.TInventario.FieldByName( 'AvisoVcto' ).AsString, 0));
// Cambia color a inventario vencido
if ( SoloNumeros( Dt1.TInventario.FieldByName('ActivaVencto').AsString, 0) = '1' ) then begin
if ( Abs( iFile ) >= iDif ) then begin
DBGrid1.Canvas.Brush.Color := $004080FF;
end;
end;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Neftali [Germán.Estévez] 23-01-2006 15:57:01

(1) Leed la guía de estilo, por favor.
(2) Utilizad TAG's en los mensajes (sobre todos los de delphi); Seleccionáis el trozo de texto correspondiente a código Delphi y pulsáis sobre el icono que hay en la barra del editor (no es tan difícil...).


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

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