Executar comando em componente de outro form...
É 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;
Application.createForm(TmeuForm,meuForm);
MeuForm.MeuComponente.Visible := False;
MeuForm.Release;
Alexandreb
Curtidas 0
Respostas
Nerdex
19/04/2007
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
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
GOSTEI 0
Alexandreb
19/04/2007
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:
Mas já consegui resolver meu problema, só tive de mudar de release para free, o codigo que funcionou perfeito está logo abaixo:
Mesmo assim obrigado em tentar ajudar.
T+
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+
GOSTEI 0
Marco Salles
19/04/2007
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:
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:
GOSTEI 0
Alexandreb
19/04/2007
Olá Marco Salles, realmente é muito estranho...mas está funcionando perfeitamente...
Mesmo assim obrigado em coloborar com sua dica!!
T+
Mesmo assim obrigado em coloborar com sua dica!!
T+
GOSTEI 0
Ehimura
19/04/2007
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
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
GOSTEI 0