Ir para conteúdo

POWERED BY:

Arquivado

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

Jonathan_Ds

Mudar cor da linha do dbgrid ao mudar de linha

Recommended Posts

Olá, parece meio confuso mas vamos lá,

 

Tenho que montar uma tela de conferência de dados, listo esses dados em uma grid, e vou conferindo os dados linha a linha, após conferir os dados da primeira linha, passarei para a segunda, e a linha de cima muda de cor para constatar que foi lido. Até aí tudo bem, eu conseguir fazer isso colocando um campo chamado LIDO na tabela QueryMovto, e implantei o código.

 

procedure TFormConfereFilme.DBGrid1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 If Dados.QueryMovtoLIDO.Value = 'True' then 
 Dbgrid1.Canvas.Font.Color:= clGreen; 
 Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State);

end;

 

Ou seja, quando QueryMovtoLIDO.Value = 'True' a linha fica verde

 

Até aí estou conseguindo fazer mudar de cor, mas toda hora que passar na coluna LIDO, tenho que escrever True.

Será que tem algum modo de fazer automático, sem ter que ficar escrevendo True toda hora ?

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, se você fez um campo true, em QueryMovto

quando você escreve true, você esta alterando a tabela dos dados ?

se estiver ele ficaria true até voce mudar para false,

 

sendo assim ao iniciar o formulario com esta DB grid, de um close, open, na tabela

e voce nao colocou um ELSE caso o valor nao seja true ai

ela terá que constar o campo como true sim, sem ter que marcar nada

apesar que é dificil saber oque esta fazendo na pratica e de que forma

 

outra coisa que notei

procedure TFormConfereFilme.DBGrid1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

 If Dados.QueryMovtoLIDO.Value = 'True' then 
 Dbgrid1.Canvas.Font.Color:= clGreen; 
 Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State);

end;

 

voce tem mais de uma linha de comando ai neste IF, o correto é você por um begin/end ai

 

 


procedure TFormConfereFilme.DBGrid1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 If Dados.QueryMovtoLIDO.Value = 'True' then 
begin 

 Dbgrid1.Canvas.Font.Color:= clGreen; 
 end
else
begin
Dbgrid1.Canvas.Font.Color:= clblack; //cor se for false aqui

end;
//e este campo default aqui em baixo 
 Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State);

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara beleza,

 

Acho que eu confundi você, esse True foi um termo que eu usei para mostrar que o campo foi lido,

 

Ou seja, podia ser qualquer outro valor, exemplo:

 

If Dados.QueryMovtoLIDO.Value = 'L' then

 

 

 

O que faço é o seguinte: Eu venho apertando Tab no grid conferindo os campos. o campo LIDO é o ultimo campo da

 

linha, o jeito que eu achei de mudar a cor da linha quando for para a outra linha foi: Quando o campo LIDO for

 

igual a L, mudar a linha para verde, daí eu digito L, e vou para a próxima linha.

 

Agora vem o que eu estou querendo: eu quero colocar esse L na tabela no campo LIDO de uma forma automática, e não

 

digitando.

 

 

 

 

Ps. Quando abro o Form, estou dando Close e Open na tabela.

E não coloquei um else, pelo fato de não haver outra condição além de lido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

EU ENTENDI AMIGO, nao importa se é true ou L, etc, o que importa é que este campos seja gravado na tabela e recuperado, usando a condição para mudar a cor da linha

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.