Mudar as cores no evento DrawColumnCell!!!

24/09/2018

0

Bom dia.

Estou com um probleminha que não estou conseguindo resolver.

Tenho dois DBGrids onde no 'Dbgrid1' coloco as contas e no 'Dbgrid2' as parcelas das mesmas e desta forma atualizo as cores conforme baixa nas contas e parcelas.

Digamos que para o 'Dbgrid1' uso o DM.qcontasareceber e no 'Dbgrid2' uso o DM.qparcelasR.

Preciso que as contas vencendo no dia atual fiquem conforme abaixo.
 //A Pagar Hoje
           else if (dm.qcontasreceberPROXIMOPAGAMENTO.Value = date) then

              begin
                 DBGrid1.Canvas.Brush.Color := clGray;
                 DBGrid1.Canvas.Font.Color := clBlack;
              end

porém preciso puxar mais um campo para validação do DM.qparcelasR mais ou menos assim

//A Pagar Hoje
           else if (dm.qcontasreceberPROXIMOPAGAMENTO.Value = date) and
                   (dm.qparcelas_RContaFinalizada.Value = 'Não') then

              begin
                 DBGrid1.Canvas.Brush.Color := clGray;
                 DBGrid1.Canvas.Font.Color := clBlack;
              end

porém quando coloco desta forma acima não muda a cor do grid como se não reconhecesse o comando.

Alguém pode me ajudar?

Segue abaixo todo o código de pintura para quem interessar!!!

Todos os demais códigos estão todos funcionando!!!

 procedure Tfrm_ContasAReceber.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
          // Selecionado
 if (gdSelected in State) or (gdFocused in State) then
       Begin
          DBGrid1.Canvas.Brush.Color := clBlue;
          DBGrid1.Canvas.Font.Color := clWhite;
       End

             // Sem gerar Parcela
   Else   if (dm.qcontasreceberESTATUS.Value = 'QUITADO') and
              (dm.qContasreceberULTIMAPARCELA.Value = 0) then
   begin
       DBGrid1.Canvas.Brush.Color := clBlack;
       DBGrid1.Canvas.Font.Color := clWhite;
   end
             // Pago
   Else   if (dm.qContasreceberESTATUS.Value = 'QUITADO') then
   begin
       DBGrid1.Canvas.Brush.Color := clYellow;
       DBGrid1.Canvas.Font.Color := clBlack;
   end
     //A Pagar Hoje
           else if (dm.qcontasreceberPROXIMOPAGAMENTO.Value = date) then

              begin
                 DBGrid1.Canvas.Brush.Color := clGray;
                 DBGrid1.Canvas.Font.Color := clBlack;
              end
              // Vencida
    else if (dm.qcontasreceberPROXIMOPAGAMENTO.Value < date) and
            (dm.qcontasreceberESTATUS.Value = 'PENDENTE') then

     begin
      DBGrid1.Canvas.Brush.Color := clRed;
      DBGrid1.Canvas.Font.Color := clWhite;
     end
                  // A Pagar
    else  if (dm.qContasreceberPROXIMOPAGAMENTO.Value > date)and
             (dm.qcontasreceberESTATUS.Value = 'PENDENTE') then
            begin
             DBGrid1.Canvas.Brush.Color := clGreen;
             DBGrid1.Canvas.Font.Color := clWhite;
            end;

   DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
Marcelo Mousinho

Marcelo Mousinho

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar