Sobre Criação de Componentes
Criei um componente para controle das Mensagens de Erro na aplicação. O caso é que precisei trabalhar com alguns outros pontos, então no Constructor do componente, crio um TApplicationEvents.
O caso é que, foi só eu criar esse TApplicationEvent no constructor do componente, que o componente, ao ser inserido no form (mesmo em DesignTime) fecha o Delphi. Estranho, mas simplesmente fecha o delphi.
Uso o Delphi 7.
O caso é que, foi só eu criar esse TApplicationEvent no constructor do componente, que o componente, ao ser inserido no form (mesmo em DesignTime) fecha o Delphi. Estranho, mas simplesmente fecha o delphi.
Uso o Delphi 7.
Thomaz_prg
Curtidas 0
Respostas
Micheus
18/08/2006
Vc precisa processar estes eventos em design-time?
Talvez se vc criar o objeto apenas em run-time pode não ter esse efeito estranho. Tente verificar o estado o componente antes de criar e utilizar o objeto, utilizando a propriedade ComponentState:
Talvez se vc criar o objeto apenas em run-time pode não ter esse efeito estranho. Tente verificar o estado o componente antes de criar e utilizar o objeto, utilizando a propriedade ComponentState:
if not (csDesigning in ComponentState) then CompAppEvents := TApplicationEvents.Create ...
GOSTEI 0
Thomaz_prg
18/08/2006
Muito Obrigado pela dica amigo...
realmente não preciso desse componente em DesignTime... vou testar sua dica...
muito obrigado mesmo!
Ah, se o componente ficar bom, mando aqui pro pessoal pra ficar disponível pra download.
realmente não preciso desse componente em DesignTime... vou testar sua dica...
muito obrigado mesmo!
Ah, se o componente ficar bom, mando aqui pro pessoal pra ficar disponível pra download.
GOSTEI 0
Thiago Vidal
18/08/2006
tecnicamente, vc nao precisaria de um TApplicationEvents para isso.
base vc colocar, no Create do seu componente:
e no Destroy:
Ele deve estar fechando o Delphi, pq o Delphi tem o seu proprio evento no Application.OnExcept, se vc apontar para o seu componente, e depois destruí-lo, qdo houver uma exceção ocorrerá um access violation, e aí o Delphi fecha. Por isso recomendo salvar a instrução atual do Application.OnExcept e restaurar na hora de destruir o componente.
lembrando que o objeto Application fica na unit Forms.
Espero ter ajudado.
base vc colocar, no Create do seu componente:
if not (csDesigning in ComponentState) then begin FOldOnExcept := Application.OnExcept; Application.OnExcept := AppExcept; end;
e no Destroy:
if not (csDesigning in ComponentState) then begin Application.OnExcept := FOldExcept; end;
Ele deve estar fechando o Delphi, pq o Delphi tem o seu proprio evento no Application.OnExcept, se vc apontar para o seu componente, e depois destruí-lo, qdo houver uma exceção ocorrerá um access violation, e aí o Delphi fecha. Por isso recomendo salvar a instrução atual do Application.OnExcept e restaurar na hora de destruir o componente.
lembrando que o objeto Application fica na unit Forms.
Espero ter ajudado.
GOSTEI 0
Thomaz_prg
18/08/2006
Beleza Thiago...
vou testar isso e posto pra dizer se deu certo.
vou testar isso e posto pra dizer se deu certo.
GOSTEI 0