Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elisei

[Resolvido] Mudando cor das palavras do DBgrid quando data for me

Recommended Posts

Olá, boa tarde a todos.

 

Em meu DBgrid, listo uma tabela com um campo date. Minha intenção é pegar a data atual e comparar com todas as datas que estão listadas em meu DBgrid. As datas que estão no DBgrid que são menores que a data atual, terão suas palavras (fonte) coloridas com uma determinada cor. As datas que são maiores que a data atual, permanecerão como estão (cor preta por exemplo).

 

Tentei fazer com um showmessage por exemplo, mas nao está correto.

 

DataHoje := Date;
	with DMalma.QrSessoes do begin
		while not Eof do begin
			  for Cont := 0 to FieldDefList.Count - 1 do begin
				  if ParamByName('data_sessao').AsDate < DataHoje then
					 Showmessage('hoje é: ' + datetoStr(DataHoje));	// colori a fonte das linhas		  
			  end;
			  Next;
		end;
	end;

Exemplo de como deveria ficar:

 

Data atual = 11/02/2009

 

DBGRID:

 

01/02/2009

02/02/2009

06/02/2009

08/02/2009

10/02/2009

11/02/2009

13/02/2009

15/02/2009

20/02/2009

26/02/2009

28/02/2009

 

 

Alguém pode me ajudar a desenvolver esta lógica?

 

Desde já, muito obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

 

Bom, veja se a logica a seguir resolve seu problema.

 

No evento DrawColumnCell do DBGrid, adicione o código semelhante ao seguir, criando suas regras:

 

if DataSourceGrid.DataSet.FieldByName('data_sessao').AsDate < Date Then
	   DBGrid1.Canvas.Font.Color := clRed;
	   DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, State);

Post o resultado

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá boa tarde.

 

if DataSourceGrid.DataSet.FieldByName('data_sessao').AsDate < Date Then
	   DBGrid1.Canvas.Font.Color := clRed;
	   DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, State);

Fiz apenas as seguintes alterações:

 

if DataSource.DataSet.FieldByName('data_sessao').AsDateTime < Date Then
	   DBGrid1.Canvas.Font.Color := clRed;
	   DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, State);

Funcionou perfeitamente. Exatamente como eu previa.

Muito obrigado pela atenção.

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.