Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Alternar dos colores en las lineas de un DBGrid. (https://www.clubdelphi.com/foros/showthread.php?t=4260)

jealousy 07-10-2003 21:12:11

Alternar dos colores en las lineas de un DBGrid.
 
Hola,

¿Como podria hacer q un DBGrid Alternara el color de las lineas. Osea, por ejemplo: Blanca-Gris-Blanca-Gris
Igual que algunas facturas y albaranes. Es algo q ayuda mucho visualmente.

Gracias :)

delphi.com.ar 07-10-2003 21:24:28

Yo recomiendo usar un RxDBGrid, de la siguiente manera:
Código:

procedure TForm1.GridGetCellParams(Sender: TObject; Field: TField;
  AFont: TFont; var Background: TColor; Highlight: Boolean);
begin
  if DataSet.RecNo mod 2 = 0 Then
    Background := clSilver;
end;

Saludos!

roman 07-10-2003 21:43:27

Con el DBGrid normalito puedes hacerlo poniendo su propiedad DefaultDrawing en false y escribiendo esto en su evento OnDrawColumnCell:

Código:

const
  // Aquí los colores que desees
  Colores: array[Boolean] of TColor = (clWhite, clSilver);

var
  Color: TColor;

begin
  Color := Colores[ Odd(Column.Field.DataSet.RecNo)];
  if not (gdSelected in State) then
    (Sender as TDBGrid).Canvas.Brush.Color := Color;

  (Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

// Saludos

jealousy 08-10-2003 12:14:40

Gracias a los dos :) me va genial !!! pero........


....Me funciona en todas las Rejillas menos en una donde hago la venta. Se trata de una tabla Detalle (lineas de venta) me da un error Acces violation in .exe

He pensado q podria ser el numero de registros, y al añadir la primera linea, al solo haber un registro por eso me daba error, pero aun metiendolo en un if para comprobar el numero de registros y segun esto poner la propiedad DefaultDrawing en false, me sigue dando error en cuanto llega al numero de registros que le especifico que primero han sido 2 (logico).

amadis 07-05-2014 15:45:23

Que tal Amigos.

Comparto un aporte del colega Mike Eberhart


http://suretalent.blogspot.com.ar/20...-mods-for.html

Son instrucciones para modificar la unit dbgrid.pas.

De esa forma, luego incluimos el archivo dbgrid.pas modificado a la carpeta del proyecto.
Y automaticamente se asigna el color alternado a las filas sin programar nada. Funciona de maravillas tras cambiar indices en tiempo de ejecución.

Sólo tenemos que asignarle un color a las celdas. Y la unit le asignará un color mas claro de la gama seleccionada a la fila siguiente.

El truco funciona perfectamente hasta delphi xe2.

Yo lo he usado hasta xe2. Luego he pasado a xe5 y dejó de funcionar. No genera errores pero no funciona.


La franja horaria es GMT +2. Ahora son las 20:35:30.

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