PDA

Ver la Versión Completa : DBGrid zebrado


Paulao
02-03-2009, 18:15:39
Hizo mi codigo para poner el DBgrid con listras y no funciono. Mi delphi es el 5(Delphi 5). Mi codigo abajo es: El error estas en las lines con comentarios.
procedure TfrmRelGerencialMT.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if not odd(qryAlimentadores.RecNo)then
begin
DBGrid1.Canvas.Brush.Color:= clHighlight;
DBGrid1.Canvas.FillRect(Rect);
//DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);

if gdFocused in State then
begin
DBGrid1.Canvas.Brush.Color:= clBlack;
DBGrid1.Canvas.FillRect(Rect);
//DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
end;

end
end;

coso
02-03-2009, 19:09:57
se ha dado muchas veces este tema. Te recomiendo que eches un vistazo al foro. De todas maneras, te pongo aqui codigo (es de un componente, modificalo a gusto)



procedure TUDBGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (datasource.dataset.recordcount = 0) and (gdSelected in state) then canvas.brush.color := clSilver
else
begin
if (gdSelected in state) then canvas.Brush.Color := ColorSeleccionado
else
if SelectedRows.CurrentRowSelected
then canvas.Brush.Color := ColorSelecciones
else
if data.RecNo mod 2 = 0
then canvas.Brush.Color := ColorPar
else canvas.Brush.Color := ColorImpar;

canvas.Font.Color := $FFFFFF xor canvas.Brush.Color;
end;

DefaultDrawColumnCell(Rect,DataCol,Column,State);
inherited DrawColumnCell(Rect,DataCol,Column,State);
end;

coso
02-03-2009, 19:15:14
Creo que el unico problema que tenias es que en delphi 5 el drawdatacell se deja por cuestiones de compatibilidad con versiones anteriores, pero no se usa: de la ayuda de delphi.


Occurs when the grid needs to paint a cell if the State property of Columns is csDefault.

type
TDrawDataCellEvent = procedure (Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState) of object;
property OnDrawDataCell: TDrawDataCellEvent;

Description

Do not write an OnDrawDataCell event handler. OnDrawDataCell is obsolete and included for backward compatibility. Instead, write an OnDrawColumnCell event handler.

Neftali [Germán.Estévez]
03-03-2009, 11:20:49
En mi página web puedes encontrar un componente que te permite realizar eso (y algunas cosillas más) sin tocar lo que ya tienes (es decir, no es un DBGrid); Basta con que lo sueltes en el formulario y lo actives.

También está el código fuente, así que si te interesa más, puedes mirarlo y extraer lo que te interese. échale un vistazo, está asquí y se llama TCustomizaGrid y puedes descargarlo desde aquí (http://neftali.clubdelphi.com/?p=262).

Paulao
04-03-2009, 14:11:21
Hizo como el amigo cazo lo dijo y logre exito

rretamar
04-03-2009, 14:55:20
En mi caso uso el componente ExtDBGrid, que ya tiene esa función en las propiedades. Tiene muchísimas cosas útiles de las que carecen las DbGRid de Delphi. Lo más interesante es la posibilidad de generar reportes "al vuelo" usando Quickreports, sin escribir una sola línea de código.

Es software libre y se puede descargar de Torry.Net

Saludos !

coso
04-03-2009, 15:46:44
Hizo como el amigo cazo lo dijo y logre exito


jajjaj, ya me veo cociendo patatas...;)

fjcg02
04-03-2009, 18:14:14
Te han bautizado cazo... digo coso

Saludos