Fórum Colorir uma celula no cxgrid #452495
19/08/2013
0
Eu tenho um código para colorir uma celula do dbgrid em uma determinada situação:
//Alterando a Cor da Coluna CodEmp.
with dbgrid20 do
begin
if (column.field.fieldname) = 'codemp' then
begin
if ftd001datcan.value > 0 then
Canvas.Brush.Color := clred
else if ftd001temmdf.value = 1 then
Canvas.Brush.Color := clYellow
else
Canvas.Brush.Color := clbtnface;
Canvas.Font.Color := clwindowtext;
Canvas.FillRect(Rect);
end;
end;
Preciso que esse mesmo código funcione no cxgrid. O que consegui até agora é colorir de amarelo a coluna codemp inteira e nao é isso que dever fazer
Código que criei:
//Alterando a Cor da Coluna CodEmp.
if (AViewInfo.Item.Index = cxGrid5DBTableView1Column1.Index)then
begin
if ftd001datcan.value > 0 then
ACanvas.Brush.Color := clred
else if ftd001temmdf.value = 1 then
ACanvas.Brush.Color := clYellow
else
ACanvas.Brush.Color := clbtnface;
ACanvas.Font.Color := clwindowtext;
ACanvas.FillRect(AViewInfo.Bounds);
end;
Achei diversos ativo no google mas nenhum me ajuda, alguem que conhece pode me ajudar?
obrigado
"Deus Abençoe"
Wilton Júnior
Curtir tópico
+ 0Posts
19/08/2013
Joel Rodrigues
Aí lá você pode verificar o conteúdo da célula usando o objeto AViewInfo e mexer na formatação usando o objeto ACanvas. Por exemplo:
procedure TFrmRelatorioPontoPedido.gridRelatorioDBTableView1STATUSCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.Text = 'Inataivo' then
begin
ACanvas.Font.Color := clRed;
end;
end;Aí eu verifiquei na coluna STATUS se alguma célula tem o texto "Inativo", Se tiver, pinto a fonte de vermelho.
É só adaptar.
Abraço.
Gostei + 0
19/08/2013
Wilton Júnior
para cada condição ela tem que ficar de uma cor.
Gostei + 0
19/08/2013
Joel Rodrigues
Gostei + 0
19/08/2013
Wilton Júnior
procedure TCR001.cxGrid5DBTableView1Column1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
//Alterando a Cor da Coluna CodEmp.
if (AViewInfo.Item.Index = cxGrid5DBTableView1Column1.Index)then
begin
if ftd001datcan.value > 0 then
ACanvas.Brush.Color := clred
else if ftd001temmdf.value = 1 then
ACanvas.Brush.Color := clYellow
else
ACanvas.Brush.Color := clbtnface;
ACanvas.Font.Color := clwindowtext;
ACanvas.FillRect(AViewInfo.Bounds);
end;
end;
Gostei + 0
19/08/2013
Joel Rodrigues
Gostei + 0
19/08/2013
Wilton Júnior
Gostei + 0
19/08/2013
Deivison Melo
Veja se isso aqui ajudará desenvolver o que está desejando:
http://www.activedelphi.com.br/forum/viewtopic.php?t=72347&sid=9476dfb99be9e6957fe00a4f416fe5e7
Abração e bons Códigos!
Gostei + 0
19/08/2013
Wilton Júnior
obrigado
Gostei + 0
20/08/2013
Wilton Júnior
obrigado
Gostei + 0
20/08/2013
Joel Rodrigues
Gostei + 0
20/08/2013
Wilton Júnior
Tem momentos que clico na coluna e fica amarelo.
Testei com aqueles que estao com datcan >0 e funcionou ficou em vermelho.
Gostei + 0
20/08/2013
Wilton Júnior
Gostei + 0
20/08/2013
Wilton Júnior
if (AViewInfo.Item.Index = cxGrid5DBTableView1Column1.Index)then
begin
if (AViewInfo.GridRecord.Values[cxGrid5DBTableView1Column19.Index] > 0) then //ftd001datcan.value > 0
ACanvas.Brush.Color := clred
else if (AViewInfo.GridRecord.Values[cxGrid5DBTableView1Column20.Index] = 1) then //ftd001temmdf.value = 1
ACanvas.Brush.Color := clYellow
else
ACanvas.Brush.Color := clbtnface;
ACanvas.Font.Color := clwindowtext;
ACanvas.FillRect(AViewInfo.Bounds);
end;
Gostei + 0
20/08/2013
Joel Rodrigues
Neste caso, estou concluindo o tópico.
Abraço a todos.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)