PDA

Ver la Versión Completa : Colorear filas de un grid en concreto


superhopi
30-08-2003, 20:19:11
Hola chicos, queria ver si me podias echar una mano...
Tengo en un Dbgrid unos datos de unos clientes y me gustaria, para que el usuario pudiera diferenciar mejor los clientes que tienen una opcion a si/no se pudiera pintar la fila de Si a un color y la de No a otro...
Se puede tal cosa???
Gracias.

jhonny
30-08-2003, 21:12:17
Si se puede es algo asi:
En el evento DrawColumnCell de la DbGrid adecua lo siguiente:

if (CondicionCliente= 'SI') then
begin
DBGfechaserv.Canvas.Brush.Color:=clYellow;
DBGfechaserv.Canvas.FillRect(Rect);
DBGfechaserv.Canvas.Font.Color:=clWindowText;
end
else
begin
if (CondicionCliente ='No') then
begin
DBGfechaserv.Canvas.Brush.Color:= clRed;
DBGfechaserv.Canvas.FillRect(Rect);
DBGfechaserv.Canvas.Font.Color:=clWindowText;
end
end;

Si quieres mas informacion debes ir a:
www.clubdelphi.com/~cadetill (http://www.clubdelphi.com/~cadetill)

delphi.com.ar
01-09-2003, 15:48:26
Otra opción puede ser utilizar la RxDBGrid, y trabajar con los eventos OnGetCellParams:

if (Query.FieldByName('CONDICION').AsString = 'SI') and (not Highlight) then
Background := clRed
else
Background := clBlue;


Saludos!

seb@
04-09-2003, 13:33:15
Me anda bien la coloracion, el tema es que no veo el contenido que tiene, es como si la coloración haya borrado el contenido de la grilla....me pueden ayudar???? Muchas Gracias

delphi.com.ar
04-09-2003, 16:05:45
¿No será que el color de la fuente sea el mismo que el del fondo?... por lo que sería imposible distinguir el texto.
¿Por cuál de las soluciones has optado?

champy
09-09-2003, 19:18:27
Ciertamente cuando haces el Fillrect, rellenas d color el Canvas del DbGrid y el texto queda tapado... la mejor solución es dibujar el texto encima del canvas despues de rellenarlo... algo así


DBGRID.Canvas.Brush.Color := ClRed;

dbgrid.Canvas.FillRect(REct);

DbGrid.Canvas.TextOut(Rect.left +1, Rect.top +1, DbGrid.Fields[DataCol].AsString )

TextOut es un procedimiento que dibuja el texto que se le pasa en un canvas,

Datacol es una constante que se recive en el OnDrawColumCell que nos sirve de indice para saber que texto se tiene que extraer del grid para dibujarlo...

Espero que e sirva la ayuda

seb@
10-09-2003, 14:03:18
Ya pude solucionar mi problema con un dbgrid ahora estoy trabajando con tstringgrid y parece que no funciona de la misma manera que el dbgrid, alguien sabe como colorear un tstringgrid...?????????? Desde ya muchas gracias

JavierB
10-09-2003, 19:03:23
Hola, seb@.

Para un TStringGrid utiliza el evento onDrawCell con un código parecido a este:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Txt: String;
begin
if (ACol=2) and (ARow=2) then
begin
Txt:=StringGrid1.Cells[ACol,ARow];
with StringGrid1.Canvas do
begin
Brush.Color:=clGreen;
TextRect(Rect,Rect.Left+2,Rect.Top+2,Txt);
end;
end;
end;

Espero que te sirva. Saludos, :cool:

ContraVeneno
06-08-2005, 00:39:52
Solo quiero agradecer el comentario de Maese Federico (http://www.clubdelphi.com/foros/showpost.php?p=13086&postcount=3), ya que dos años después de haberlo hecho, ahora me ha ayudado a mi con las JVCL (TJvDBGrid) a resolver el mismo dilema.

superhopi
12-08-2005, 01:09:56
Vaya vaya, despues de dos años...
Uf, cuanto tiempo ha pasado de eso la verdad, yo me acuerdo que estaba haciendo las practicas ...
Desgraciadamente no encontre trabajo de lo que me gustaba, y ahora apenas llego ni a programar... solo a modo "hobbie"

Bueno, por que cuento mi vida si es triste y aburrida?
Jajaja, me ha resultado curioso recibir un correo como que alguien habia escrito algo en el foro despues de tanto tiempo.

Venga, un saludo.

Cristian desde Valencia. :D