GARANTIR DESCONTO

Fórum mudando cor da fonte do cxGrid #460229

05/11/2013

0

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

Responder

Posts

05/11/2013

Thiago Irrazabal

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.
Responder

Gostei + 0

05/11/2013

Nícolas Braz


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"
Responder

Gostei + 0

05/11/2013

Nícolas Braz

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;
Responder

Gostei + 0

05/11/2013

Thiago Irrazabal

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.
Responder

Gostei + 0

05/11/2013

Nícolas Braz

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
Responder

Gostei + 0

05/11/2013

Thiago Irrazabal

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




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

05/11/2013

Nícolas Braz

Sim, foi mesmo.
Responder

Gostei + 0

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

Aceitar