Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2003
jealousy jealousy is offline
Miembro
 
Registrado: ago 2003
Posts: 49
Poder: 0
jealousy Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 07-10-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
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!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 07-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #4  
Antiguo 08-10-2003
jealousy jealousy is offline
Miembro
 
Registrado: ago 2003
Posts: 49
Poder: 0
jealousy Va por buen camino
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).
Responder Con Cita
  #5  
Antiguo 07-05-2014
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 19
amadis Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:44:01.


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
Copyright 1996-2007 Club Delphi