• 0
Sign in to follow this  
mmousinho

Mudar as cores no evento DrawColumnCell!!!

Question

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;

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

AVISO:  Poste suas dúvidas no forum Delphi .... o Forum Tutorias & Dicas deve ser usado apenas para postar códigos prontos... ok ?

Veja esse exemplo e tente aplicar ao seu código

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

   if (gdSelected in state) then
      DBGrid1.Canvas.Font.Color:= clred
   else
      DBGrid1.Canvas.Font.Color:= clBlack;

   DBGrid1.Canvas.FillRect(Rect);
   DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

   /// CAMPO QUE VOCE QUER ALTERAR A COR
   if Column.Field = CDS_Cadmov1.FieldByName('VALTOT') then
      begin
         //// CONDIÇÃO PARA ALTERAR A COR DO CAMPO
         if CDS_Cadmov1DTSINAL.Text = '' then
            begin
                DBGrid1.Canvas.Brush.Color:= clRed;
                DBGrid1.Canvas.Font.Color:= clYellow;
                DBGrid1.Canvas.FillRect(Rect);
                DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
      end;

end;

abraço

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this