Fórum Programando Timer Delphi 7 Por Favor me ajudem !! #420043

17/07/2012

0

Pessoal eu nunca vi isso , mas queria uma luz !
Estou desenvolvendo um programa de cadastro de funcionario terceiro.
Eu queria que no DBGRID ficasse em vermelho, quando a data da integração do funcionario vencesse .
Eu pensei em algo assim ,programar algo no componente TIMER.

Exemplo mais claro !

Cadastrei um funcionario hoje a integração dele na empresa é valida por 30 dias , chegando nessa data de vencimento automaticamente no DBGRID mudasse a cor para vermelho.

Sei que existe algo parecido com isso, mas nem imagino como faz.
Alguém pode me ajudar ..

Desde ja Muito Obrigado.
Watson Rocha

Watson Rocha

Responder

Posts

18/07/2012

Anderson Rodrigues

Ola, vc vai ter que programar no evento OnDrawColumnCell do DBGrid, através deste vc pode mudar a cor de uma célula ou de toda a linha do form. Não tenho nenhum exemplo aqui no momento, mas procure na net Zebrar DBGrid, seguem os mesmos padrões, ou se preferir tem um curso de DBGrid que mostra como fazer exatamente isso que você que, é Free.

[].s
Responder

Gostei + 0

18/07/2012

Eliel Martins

Olá Watson !

Conforme foi relatado abaixo, você deve utilizar o evento OnDrawColumn, estou colocando abaixo um exemplo de um código que fiz para um gerenciamento de contas a pagar.


procedure TFrmGerenciador_Contas_Pagar.Grid_Gen_PagarDrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
{Situação Lançamento}
if Column.Field = Cds_Gen_PagarCPG_IMG then begin
Grid_Gen_Pagar.Canvas.FillRect(Rect);
Grid_Gen_Pagar.DefaultDrawDataCell(Rect,Column.Field,State);
if (Cds_Gen_Pagar.FieldByName(CPG_VENCIMENTO).AsDateTime > Date) and
(Cds_Gen_Pagar.FieldByName(CPG_VALOR_PAGO).AsFloat = 0) then begin
cxImg.Draw(Grid_Gen_Pagar.Canvas,rect.Left + 6,rect.top,0);
end else if (Cds_Gen_Pagar.FieldByName(CPG_VENCIMENTO).AsDateTime < Date) and
(Cds_Gen_Pagar.FieldByName(CPG_VALOR_PAGO).AsFloat = 0) then begin
cxImg.Draw(Grid_Gen_Pagar.Canvas,rect.Left + 6,rect.top,2);
end else if (Cds_Gen_Pagar.FieldByName(CPG_VENCIMENTO).AsDateTime = Date) and
(Cds_Gen_Pagar.FieldByName(CPG_VALOR_PAGO).AsFloat = 0) then begin
cxImg.Draw(Grid_Gen_Pagar.Canvas,rect.Left + 6,rect.top,10);
end else if Cds_Gen_Pagar.FieldByName(CPG_VALOR_PAGO).AsInteger > 0 then begin
cxImg.Draw(Grid_Gen_Pagar.Canvas,rect.Left + 6,rect.top,7);
end else begin
cxImg.Draw(Grid_Gen_Pagar.Canvas,rect.Left + 6,rect.top,11);
end;
end;
end;


Espero ter ajudado.

Atenciosamente,

Eliel G. Martins
Responder

Gostei + 0

19/07/2012

Watson Rocha

Eliel Boa tarde !

Eu fiz esse esquema e deu erro is not a valid date and time ...
Responder

Gostei + 0

19/07/2012

Watson Rocha

alguem sabe pq ?
Responder

Gostei + 0

19/07/2012

Joel Rodrigues

Aparentemente algum registro está vindo com o campo CPG_VENCIMENTO em branco ou com um valor inválido. Verifique isso.
Responder

Gostei + 0

20/07/2012

Watson Rocha

Pessoal estou conseguindo resolver esse problema ,
eu coloquei um DBcombobox e dois itens nele , BLOQUEADO E DESBLOQUEADO .

Eu queria que no DBGRID quando for selecionado BLOQUEADO a linha inteira ficasse vermelha e quando voltasse para DESBLOQUADO ficasse preto ...

Alguem pode me dar uma luz !!

minha tabela é sesmt e o campo que irá receber essas informações no banco é STATUS.

Obrigado
Responder

Gostei + 0

21/07/2012

Watson Rocha

Pessoal Continuo aguardando uma resposta , alguem pode me ajudar ?
Responder

Gostei + 0

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

Aceitar