Hoy os presento un pequeño truco que hará que vuestros DBGrids luzcan mucho mejor añadiendo unas pocas lineas de código.
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:
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:
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.
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.