Lo que tratamos de conseguir es que nuestro DBGrid presente las filas con colores alternos y además que la fila seleccionada se resalte también de manera alterna.
Para conseguir este objetivo debemos escribir la función GridDrawColumnCell como sigue:
procedure TfrmPrincipal.GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const RowColors: array[Boolean] of TColor = (clSilver, clWhite); RowSelectedColors: array[Boolean] of TColor = (clHotLight, clHighlight); var OddRow: Boolean; begin if (Sender is TDBGrid) then begin OddRow := Odd(TDBGrid(Sender).DataSource.DataSet.RecNo); if (gdSelected in State) then TDBGrid(Sender).Canvas.Brush.Color := RowSelectedColors[OddRow] else TDBGrid(Sender).Canvas.Brush.Color := RowColors[OddRow]; TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end;
Este procedimiento lo podemos poner en el formulario donde esté el DBGrid o bien en una unidad aparte y luego importarla con el comando Uses. Si incluimos el procedimiento en el formulario, es importante hacerlo como procedimiento de clase:
TfrmPrincipal = class(TForm) { Otros métodos y propiedades del formulario } procedure GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); private { Private declarations } public { Public declarations } end;
De esta manera podremos seleccionar el DBGrid y asignar el procedimiento al evento OnDrawColumnCell.
Si tienes cualquier duda o comentario recuerda que puedes exponerlo aquí o bien mediante nuestro twitter y facebook.
0 comentarios:
Publicar un comentario