Calculos em campo data do dbgrid

Delphi

25/12/2013

Prezados Amigos, estou tenho na minha tabela (mysql) 2 campos: data_entrada e data_previsao. gostaria de pegar essas duas informações e seguir a seguinte logica:

1) Caso a data_entrada ultrapasse 'x' dias a linha do dbgrid deve ficar de uma determinada cor.
2) Caso a data_previsao seja alcançada a linha do dbgrid deve ficar de outra cor.

Gostaria, se nao for abusar, de uma explicação da funcao que for postada como ajuda para que eu possa entender a logica do funcionamento de como o dbgrid manipula os dados e de como posso futuramente 'pegar' uma informação precisa em qualquer celula do dbgrid.

Obrigado a todos e um Feliz Natal para toda a comunidade.


Lammer Ltda

Lammer Ltda

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

25/12/2013

Olá, neste momento está um pouco complicado pra eu explicar direitinho como funciona, mas veja esse link, talvez lhe ajude: Coloring DBGrid.
Feliz Natal e, desde já, um ótimo Ano Novo.
GOSTEI 0
Lammer Ltda

Lammer Ltda

25/12/2013

Olá, neste momento está um pouco complicado pra eu explicar direitinho como funciona, mas veja esse link, talvez lhe ajude: Coloring DBGrid.
Feliz Natal e, desde já, um ótimo Ano Novo.


Muito Bom o Texto!!! Muito Bom Mesmo!!! Obrigado, já consegui colorir o dbgrib.

Um detalhe: o codigo

procedure TForm1.DBGrid1DrawColumnCell
   (Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn;
    State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency>36000 then
  DBGrid1.Canvas.Font.Color:=clMaroon;
DBGrid1.DefaultDrawColumnCell
  (Rect, DataCol, Column, State);
end;


Como faço para adapta-lo para verificar se a data do campo é menor ou maior que a data atual?
GOSTEI 0
Lammer Ltda

Lammer Ltda

25/12/2013

Olá, neste momento está um pouco complicado pra eu explicar direitinho como funciona, mas veja esse link, talvez lhe ajude: Coloring DBGrid.
Feliz Natal e, desde já, um ótimo Ano Novo.


Muito Bom o Texto!!! Muito Bom Mesmo!!! Obrigado, já consegui colorir o dbgrib.

Um detalhe: o codigo

procedure TForm1.DBGrid1DrawColumnCell
   (Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn;
    State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency>36000 then
  DBGrid1.Canvas.Font.Color:=clMaroon;
DBGrid1.DefaultDrawColumnCell
  (Rect, DataCol, Column, State);
end;


Como faço para adapta-lo para verificar se a data do campo é menor ou maior que a data atual?





Resolvido:

procedure TfrmPrincipal.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if (dmCadOS.qryLancOS.FieldByName('previsao').AsDateTime < Date) then
  begin
  DBGrid1.Canvas.Brush.Color:= RGB(255,0,0);
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end
  else
  begin
  DBGrid1.Canvas.Brush.Color:= RGB(0,255  ,0);
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end
end;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/12/2013

Opa, eu já vinha ajudar a adaptar o código, mas show de bola que você conseguiu.
Grande abraço e bons códigos.
GOSTEI 0
POSTAR