mudando cor da fonte do cxGrid

Delphi

05/11/2013

Boa tarde galera,

Estou usando um código semelhante ao que eu usava no grid padrão do Delphi mas quando ele localiza as minhas contas ele pinta a linha da cor incorreta e quando eu clico na linha ele coloca a cor correta.

with ds.DataSet do
  begin
    if FieldByName('QUITADA').AsString = 'S' then
      ACanvas.Brush.Color := clGreen;

    if (FieldByName('DATAVENCIMENTO').AsDateTime > date) then
        ACanvas.Brush.Color  := clYellow;

    if (FieldByName('DATAVENCIMENTO').AsDateTime <= date) and
            (FieldByName('QUITADA').AsString = 'N') then
      ACanvas.Brush.Color  := clRed;
  end;
Nícolas Braz

Nícolas Braz

Curtidas 0

Respostas

Thiago Irrazabal

Thiago Irrazabal

05/11/2013

Boa tarde, eu usaria TcxStyleRepository e criaria os "Styles" da grid, depois em Styles (Isso fica nos eventos), da cxGridDBTableView no evento OnGetContentStyle, eu passaria as cores das fontes de acordo com os registros, segue um exemplo.


if (ARecord is TcxGridDataRow) and (ARecord.Values[rdbConsultaNewQUITADA.Index] = 'S') then
    AStyle.Font.Color := clGreen
  else if (ARecord is TcxGridDataRow) and (ARecord.Values[rdbConsultaNewDATAVENCIMENTO.Index] > Date) then
    AStyle.Font.Color := clYellow
  else if (ARecord is TcxGridDataRow) and (ARecord.Values[rdbConsultaNewDATAVENCIMENTO.Index] <= Date) and (ARecord.Values[rdbConsultaNewQUITADA.Index] = 'N') then
    AStyle.Font.Color := clRed;





Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Nícolas Braz

Nícolas Braz

05/11/2013


if (ARecord is TcxGridDataRow) and (ARecord.Values[rdbConsultaNewQUITADA.Index] = 'S') then
AStyle.Font.Color := clGreen
else if (ARecord is TcxGridDataRow) and (ARecord.Values[rdbConsultaNewDATAVENCIMENTO.Index] > Date) then
AStyle.Font.Color := clYellow
else if (ARecord is TcxGridDataRow) and (ARecord.Values[rdbConsultaNewDATAVENCIMENTO.Index] <= Date) and (ARecord.Values[rdbConsultaNewQUITADA.Index] = 'N') then
AStyle.Font.Color := clRed;


Eu tentei o código usando o dataset e o problema continua, eu criei os estilos já também mas eu não entendi o que é esse "RDBCONSULTA"
GOSTEI 0
Nícolas Braz

Nícolas Braz

05/11/2013

Ficou assim o código mas eu tomo um acess violation.

  if (ARecord is TcxGridDataRow) and (ARecord.Values[dbGrid1DBTableView1QUITADA.Index] = 'S') then
    AStyle.Font.Color := clGreen
  else if (ARecord is TcxGridDataRow) and (ARecord.Values[dbGrid1DBTableView1DATAVENCIMENTO.Index] > Date) then
    AStyle.Font.Color := clYellow
  else if (ARecord is TcxGridDataRow) and (ARecord.Values[dbGrid1DBTableView1DATAVENCIMENTO.Index] <= Date) and
                                          (ARecord.Values[dbGrid1DBTableView1QUITADA.Index] = 'N') then
    AStyle.Font.Color := clRed;
GOSTEI 0
Thiago Irrazabal

Thiago Irrazabal

05/11/2013

Não passa o nome das CORES, "clRed, clYellow" e sim o nome dos "styles" que tu criou apontando é claro para o ".FONT.COLOR".

if (ARecord is TcxGridDataRow) and (ARecord.Values[dbGrid1DBTableView1QUITADA.Index] = 'S') then
  AStyle.Font.Color := cxStyleGreen.Font.Color
else if (ARecord is TcxGridDataRow) and (ARecord.Values[dbGrid1DBTableView1DATAVENCIMENTO.Index] > Date) then
  AStyle.Font.Color := cxStyleYellow.Font.Color
else if (ARecord is TcxGridDataRow) and (ARecord.Values[dbGrid1DBTableView1DATAVENCIMENTO.Index] <= Date) and (ARecord.Values[dbGrid1DBTableView1QUITADA.Index] = 'N') then
  AStyle.Font.Color := cxStyleRed.Font.Color;





Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Nícolas Braz

Nícolas Braz

05/11/2013

Resolvi da seguinte maneira.

Adicionei um cxStyleRepository adicionei as cores que eu queria e no evento onGetContentStyle.

if ARecord.Values[dbGrid1DBTableView1QUITADA.Index] = 'S' then
AStyle := cxGreen

else if ARecord.Values[dbGrid1DBTableView1DATAVENCIMENTO.Index] > Date then
AStyle := cxYellow

else if (ARecord.Values[dbGrid1DBTableView1DATAVENCIMENTO.Index] <= Date) and
(ARecord.Values[dbGrid1DBTableView1QUITADA.Index] = 'N') then
AStyle := cxRed;


Valeu :D
GOSTEI 0
Thiago Irrazabal

Thiago Irrazabal

05/11/2013

Pois então, foi o que eu disse no primeiro post :D, qualquer dúvida estamos aí, abraço.




Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Nícolas Braz

Nícolas Braz

05/11/2013

Sim, foi mesmo.
GOSTEI 0
POSTAR