Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DBGrid zebrado (https://www.clubdelphi.com/foros/showthread.php?t=63776)

Paulao 02-03-2009 18:15:39

DBGrid zebrado
 
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.
Código Delphi [-]
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)

Código Delphi [-]

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.

Cita:

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í.

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

Cita:

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


La franja horaria es GMT +2. Ahora son las 19:13:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi