ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[resolvido] Evento DrawColumnCell Dbgrid

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Seg Fev 20, 2017 1:21 pm    Assunto: [resolvido] Evento DrawColumnCell Dbgrid Responder com Citação

Amigos, estou montando uma rotina pra mudar a cor dos dados no grid.

Minha ideia é a seguinte:

-Contas que venceram no sabado, domingo e que estão vencendo hoje, ficam com a cor laranja.
-Contas que venceram na sexta pra traz, cor vermelha
-Contas que vencem de amanhã em diante, cor verde.

PS: não estou conseguindo postar code no site, ele sai todo errado e incompleto, por isso subi um txt no drive.

A rotina que fiz está dando uns erros de read adress. O ruim é que não ocorre sempre e esta me deixando louco.

Se alguém puder analisar o codigo e ver se está tudo certo eu agradeço.

Link: https://drive.google.com/open?id=0B6PYigOlc_ewd0dVSUF6dkJJakk


Editado pela última vez por renanbg em Seg Mar 06, 2017 9:56 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Fev 20, 2017 2:55 pm    Assunto: Responder com Citação

Quando for postar e código sair incompleto e/ou bagunçado, selecione o checkbox Desativar HTML nesta mensagem que deve resolver.

Analisando seu código, me parece correto.

Estes erros de Access Violation acontece quando se tenta acessar algo que ainda não foi criado ou instanciado.

Verifique se você não está tentando acessar o frmdm ou qrContas_receber antes de criá-los.

Fiz algumas alterações no código removendo as linhas repetidas.

Veja se ajuda:

Código:
var
  I: Integer;
  campoData: TDateTime;
begin 
  campoData := frmdm.qrContas_receberVENCIMENTO.AsDateTime;
  I := Trunc(Date - campoData);

  if campoData < Date then
  begin
    if ((DayOfWeek(campoData) = 1) or (DayOfWeek(campoData) = 7)) and (DayOfWeek(Date) = 2) then
    begin
      if (I >= 1) and (I < 3) then
        TDBGrid(Sender).Canvas.Font.Color := $000080FF
      else
        TDBGrid(Sender).Canvas.Font.Color := clRed;
    end
    else
      TDBGrid(Sender).Canvas.Font.Color := clRed;
  end
  else
    if campoData = Date then
      TDBGrid(Sender).Canvas.Font.Color := $000080FF
    else
      TDBGrid(Sender).Canvas.Font.Color := clGreen;

  if gdSelected in State then
    TDBGrid(Sender).Canvas.Font.Color := clwhite;

  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Seg Fev 20, 2017 4:18 pm    Assunto: Responder com Citação

Olá natan.

Infelizmente esse erro não ocorre a todo momento, isso que me intriga.
Pensei que esse codigo podia estar dando algum bug.

Vou repassar novamente todas as linhas desse form, e ver se descubro algo.

Obrigado pela ajuda.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Seg Fev 20, 2017 4:33 pm    Assunto: Responder com Citação

Se o erro é de Access Violation, você pode fazer o seguinte

Vou passar o caminho utilizando com base o Delphi 2010 e o Delphi 6

Delphi 2010

Citação:
Acesse Tools > Options > Debugger Options > Embarcadero Debuggers > Native OS Exceptions


Delphi 6

Citação:
Acesse Tools > Debugger Options > OS Exceptions


Na lista de Exceptions, selecione Access Violation e no Handled By, altere de User Program para Debugger


Assim, quando estourar algum erro de Access Violation, o debugger irá apontar a linha que deu o erro pra você
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Ter Fev 21, 2017 10:40 am    Assunto: Responder com Citação

Obrigado pelas dicas.

Fiz uma revisão completa no formulario. Tinha umas 800 linhas. ufa...

Achei alguns casos onde eu limpava os componentes do form 2 vezes atraves de eventos diferentes...não sei se podia ser isso, mas vou ir monitorando e ver no que dá.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB