Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pintar filas y cuadros simultaneamente en un Grid (https://www.clubdelphi.com/foros/showthread.php?t=81344)

Lenny 06-11-2012 06:47:44

Pintar filas y cuadros simultaneamente en un Grid
 
Estimados, acudo nuevamente a ustedes buscando ayuda... Necesito pintar las filas de un grid, lo hago con este codigo:

Pinta Filas de un Grid:

Código Delphi [-]
if (Sender as TDBGrid).Datasource.DataSet.RecNo mod 2 = 0 then
        (Sender as TDBGrid).Canvas.Brush.Color := $00FBEFEF
      else
        (Sender as TDBGrid).Canvas.Brush.Color := $00F4DEE4;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
(Sender as TDBGrid).DefaultDrawColumnCell(rect,DataCol,Column,State);

Tambien necesito pintar ciertos cuadros del grid que cumplan con X condicion, en este caso utilizo est codigo:

Pintar cuadros de un Grid:

Código Delphi [-]
begin
  if (Column.Field.AsString > '') and
     (Column.Field is TStringField) and
     (Column.Field.Value = 'Control') then
  begin
     JvDBUltimGrid1.Canvas.Brush.Color:= $F581DA;
     JvDBUltimGrid1.Canvas.Font.Color:= clWhite;
     JvDBUltimGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
     JvDBUltimGrid1.WordWrap:= True;
end;
  if (Column.Field.AsString > '') and
     (Column.Field is TStringField) and
     (Column.Field.Value = 'OK') then
  begin
     JvDBUltimGrid1.Canvas.Brush.Color:= $F5A9A9;
     JvDBUltimGrid1.Canvas.Font.Color:= clWhite;
     JvDBUltimGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
     JvDBUltimGrid1.WordWrap:= True;
  end;
end;

Ambos funcionan perfectos por su cuenta, la pregunta del millon ya que he provado muchas formas de "fucionar" ambos codigos pero siempre uno manda sobre el otro... ¿¿¿Se pueden mesclar para obtener ambos resultados sobre un mismo grid??? obviamente si existe otro codigo que haga lo mismo estaria eternamente agradecido, agradesco de antemano cualquier ayuda, gracias!!

Casimiro Notevi 06-11-2012 11:22:48

Deja esta línea para la última:
Código Delphi [-]
(Sender as TDBGrid).DefaultDrawColumnCell(rect,DataCol,Column,State);
Y evidentemente en la opción del color tendrás que decidirte por una u otra, en ambos cambias tanto el 'brush' como el 'font' color.

Lenny 06-11-2012 14:16:06

Perfecto estimado!!! funciona tal cual necesito, pero... (por que siempre tiene que haber un pero???) cuando coloco la ultima linea de codigo:

Código Delphi [-]
(Sender as TDBGrid).DefaultDrawColumnCell(rect,DataCol,Column,State);

Me "saca" el wordwrap que tengo activado en el grid... intente colocar por todos lados esta linea (literalmente por todos lados):

Código Delphi [-]
JvDBUltimGrid1.WordWrap:= True;

Pero aun asi sigue perdiendo el "formato"... alguna sugerencia please???


La franja horaria es GMT +2. Ahora son las 20:15:00.

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