Ir para conteúdo
Fórum Script Brasil
  • 0

Mudar as cores no evento DrawColumnCell!!!


mmousinho

Pergunta

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;

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...