Fórum Problemas com CreateForm no FireMonkey! #411370

10/01/2012

0

Utilizando a vcl nunca tive problema com o seguinte código:
Application.CreateForm(Tform1, Form1);

Porém quando faço isso em uma aplicação firemonkey, e em seguida tento acessar o formulário, da erro de violação de acesso, como se o form n tivesse sido criado, se eu deixo o form ser criado junto com a inicialização da aplicação funciona, porém qnd eu limpo da memória e tento executar o código - Application.CreateForm(TForm1, Form1) - para instanciar novamente na memória o formulário acontece a mesmo erro de acesso.

Ou seja, só consigo acessar o form se for criado pela criação automática do delphi, teria que deixar todos os forms da aplicação serem iniciados junto com delphi e não dar free em nenhum durante a execução do programa pois n consigo instancia-los novamente em runtime...

Lembrando que quando crio uma aplicação vcl no XE2 mesmo isso n acontece, tudo funciona normalmente, gostaria de saber se alguém já passou por isso, ou se é um problema do firemonkey sei lá...

Desde já o meu muito obrigado!


obs: Meu primeiro post, então se fiz alguma coisa errada, perdão!
Glauber Silva

Glauber Silva

Responder

Post mais votado

09/03/2012

Boa noite,

Pois bem, eu estava com este mesmo problema, e após dar uma analisada nos códigos do firemonkey criei um método simples para resolver este empecilho.

TSuaClasse.SeuMetodoCreateForm(InstanceClass: TComponentClass; var Reference);

if TForm(Referencia) = nil then
begin
Application.CreateForm(InstanceClass, Reference);
Application.RealCreateForms;
TForm(Referencia).Show;
end
else...

Espero ter sido útil.

Abraço.

Diego Ricardo Cossa.

Diego Cossa

Diego Cossa
Responder

Gostei + 1

Mais Posts

10/01/2012

Glauber Silva

Bom, consegui resolver o prblema criando o form de outra forma:
Form1 := TForm1.Create(nil);

Porém, gostaria de saber pq n deu certo utilizando application.CreateForm

Se alguém souber, me avise!

Vlw
Responder

Gostei + 0

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

Aceitar