FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Colorear filas de un grid en concreto
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.
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre. |
#2
|
||||
|
||||
Si se puede es algo asi:
En el evento DrawColumnCell de la DbGrid adecua lo siguiente: Código:
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; www.clubdelphi.com/~cadetill
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Otra opción puede ser utilizar la RxDBGrid, y trabajar con los eventos OnGetCellParams:
Código:
if (Query.FieldByName('CONDICION').AsString = 'SI') and (not Highlight) then Background := clRed else Background := clBlue;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
||||
|
||||
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
__________________
Sebastian Ibarrola -------------------------- |
#5
|
||||
|
||||
¿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?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#6
|
||||
|
||||
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 |
#7
|
||||
|
||||
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
__________________
Sebastian Ibarrola -------------------------- |
#8
|
||||
|
||||
Hola, seb@.
Para un TStringGrid utiliza el evento onDrawCell con un código parecido a este: Código:
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;
__________________
Lo importante no es saber, sino tener el e-mail del que sabe. |
#9
|
||||
|
||||
Solo quiero agradecer el comentario de Maese Federico, 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.
__________________
|
#10
|
||||
|
||||
Vaya
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.
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre. |
|
|
|