Fórum Sobre Criação de Componentes #327767
18/08/2006
0
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
Curtir tópico
+ 0Posts
19/08/2006
Micheus
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
19/08/2006
Thomaz_prg
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
21/08/2006
Thiago Vidal
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
22/08/2006
Thomaz_prg
vou testar isso e posto pra dizer se deu certo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)