Fórum Executar comando em componente de outro form... #340657

19/04/2007

0

É o seguinte galera, tenho um form que é criado dinamicamente em meu sistema, quando eu preciso dele eu mando criar e após utilizar eu o destruo, mas a dúvida é a seguinte, preciso executar um comando em um componente que está nele, então tentei criar executar o comando no componente e despois destruir. eu não preciso ver este form eu só preciso ter acesso aos componentes e ao codigo dele, tentei da forma abaixo mais não deu certo, deu acces violation, alguem teria alguma idéia??

Application.createForm(TmeuForm,meuForm);
MeuForm.MeuComponente.Visible := False;
MeuForm.Release;


Alexandreb

Alexandreb

Responder

Posts

19/04/2007

Nerdex

Amigo, é só minha opinião: Não faça isso, é anti ético e muito feio! :wink: pois ... vc quer criar um Form só para chamar o componente e depois deixá-lo invisível??? :P

Deixe seu componente no Form (Principal), e dê um create quando for necessitar do mesmo, e assim poderá instanciar nos Forms secundários, bastando instanciar no uses dos Forms secundários a Unit Principal (do Form Principal).

Abraço


Responder

Gostei + 0

19/04/2007

Alexandreb

Olá amigo NerdeX. Obrigado pela dica, mas eu que não expliquei correto. No exemplo eu deixei o componente invisivel, mas foi apenas um exemplo. A situação real é a seguinte, estou utilizando o componente mxprotector, porém ele tem de ficar no meu form de login, pois eu quero que ele dispare os eventos ´invalidsystemtime´ e ´Expiration´ na tela de login, portanto se eu o colocasse em outro form como o principal por exemplo, ele não iria disparar no login conforme eu gostaria de fazer, só que em um outro form de validar a licença, eu preciso dar um reset no mxprotector, somente isso, então por isso eu pensei em criar o form de login, dar o reset no mxprotector que está nele e já destruir o form login logo em seguida, pois a minha intenção era somente ter acesso ao form para resetar o mxprotector, e não quero que o form de login apareça e nada, simplesmente resetar o componente . Estava dando erro de access violation conforme eu tinha feito, pois o codigo ficou da seguinte forma:


Application.createForm(TmeuForm,meuForm);
MeuForm.MeuComponente.Visible := False;
MeuForm.Release;



Mas já consegui resolver meu problema, só tive de mudar de release para free, o codigo que funcionou perfeito está logo abaixo:

Application.createForm(TmeuForm,meuForm);
MeuForm.MxProtector.Reset;
MeuForm.free;



Mesmo assim obrigado em tentar ajudar.

T+


Responder

Gostei + 0

20/04/2007

Marco Salles

sinceramente , eu não estou convencido que mudar o MeuForm.Release; para MeuForm.Free vai resolver problemas de acesso Violado...
Sei não , mas acho melhor o amigo teimar ainda em achar uma solução , pois não faz muito sentido , pelo menos para mim , esta saída :cry:


Responder

Gostei + 0

23/04/2007

Alexandreb

Olá Marco Salles, realmente é muito estranho...mas está funcionando perfeitamente...

Mesmo assim obrigado em coloborar com sua dica!!

T+


Responder

Gostei + 0

24/04/2007

Ehimura

Olá amigo.

Para resolver o problema, tente fazer o seguinte.
Crie uma Unit contendo àquelas funções que necessita chamar dinamicamente pelo aplicativo.
Assim não seria necessário criar o form toda vez que precisasse da função.

Espero ter ajudado.
Um grande abraço


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar