Fórum Deixar o dbgrid com o fundo Cinza ou Branco cfe o dia #324152

24/06/2006

0

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

Responder

Posts

24/06/2006

Aerreira

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;



Responder

Gostei + 0

24/06/2006

Marcos Fernando

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


Responder

Gostei + 0

24/06/2006

Aerreira

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar