Deixar o dbgrid com o fundo Cinza ou Branco cfe o dia

Delphi

24/06/2006

galera tenho um DBgrid e não estou conseguindo achar a logica de quando tiver uns 10 registros com datas diferentes deixar ele zebrado por data

assim:

01/07/2006 Branco
01/07/2006 Branco
01/07/2006 Branco
02/07/2006 Cinza
03/07/2006 Branco
04/07/2006 Cinza
04/07/2006 Cinza

assim posso deixar no grid o o dia em destaque

Thanks


Marcos Fernando

Marcos Fernando

Curtidas 0

Respostas

Aerreira

Aerreira

24/06/2006

Basta alterar a cor se o dia for Par ou Impar:

procedure gridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Year, Month, Day: Word;
begin
  DecodeDate(CampoData.Value, Year, Month, Day);
  If odd(Day) then
     begin
     gridMain.Canvas.Brush.Color:= clSilver;
     end
  else
     begin
     gridMain.Canvas.Brush.Color:= clWhite;
     end;

  if gdSelected in State then
     begin
     gridMain.Canvas.Font.Color:= clWhite;
     gridMain.Canvas.Brush.Color:= clNavy;
     end;

  grid.DefaultDrawDataCell(rect,Column.Field,State);
end;



GOSTEI 0
Marcos Fernando

Marcos Fernando

24/06/2006

Eu já pensei nisso,

supondo que tenha duas datas diferentes e impares?

01/07/2006 Branco
01/07/2006 Branco
01/07/2006 Branco
03/07/2006 Cinza
03/07/2006 Cinza
03/07/2006 Cinza

ali me parece que vai ficar tudo branco que seja
01/07/2006 Branco
01/07/2006 Branco
01/07/2006 Branco
03/07/2006 Branco
03/07/2006 Branco
03/07/2006 Branco

Preciso de algo certo,
Grato guri pela força

Thanks


GOSTEI 0
Aerreira

Aerreira

24/06/2006

Bom, então nesse caso você terá que criar algum modo de identificar em cada linha do grid se a data (no dataset) do registro anterior ou posterior é diferente e fazer a variação da cor. Mas realmente não está vindo na cabeça agora um meio fácil de fazer isso. Talvez usando um vetor, mas será ruim se sua tabela for muito grande... é... não sei...


GOSTEI 0
POSTAR