erro no comando application.createform

24/03/2003

0

oi, sempre que eu executo o comando no delphi7 application.createform, por exemplo

try Fpessoa.show; except Application.Createform(TFpessoa,Fpessoa); end;

o programa compila certo, mas quando chega nesse comando da o seguinte erro [color=red:50ea4f9a48]project pss.exe raised exception class EAccessViolation with message Access violation at address 0993DAC6 in module VCL70.bpl[/color:50ea4f9a48], no delphi5 funcionava sem problema.


Anonymous

Anonymous

Responder

Posts

24/03/2003

Carnette

oi, sempre que eu executo o comando no delphi7 application.createform, por exemplo try Fpessoa.show; except Application.Createform(TFpessoa,Fpessoa); end; o programa compila certo, mas quando chega nesse comando da o seguinte erro [color=red:32073f80c1]project pss.exe raised exception class EAccessViolation with message Access violation at address 0993DAC6 in module VCL70.bpl[/color:32073f80c1], no delphi5 funcionava sem problema.


O amiguinho....Já vi um monte de maluquices dos ´programadores´..por aqui....mas, esta é nova...Acredito que voce quiz dizer com este comando algo assim:
Abra o FORM FPESSOA no MODAL...

xiii deu erro...

CRIA O FORM FPESSO no MODAL...

Sinceramente NÃO faz sentido este racicionio...Quem sabe voce coloca o comando Application.Createform(TFpessoa,Fpessoa) ANTES do abertura do form...Voce quer testar se o form está aberto ?? Não é assim que se faz....

Cara, esta tua linha para MEU modo de ver(posso estar errado) mas, ESTÁ TOTALMENTE ILÓGICA...

cCriaçõa de form em tempo de execução com TRY e Except, é DENTRO do TRY não do except...


Responder

24/03/2003

Anonymous

O amiguinho....Já vi um monte de maluquices dos ´programadores´..por aqui....mas, esta é nova...Acredito que voce quiz dizer com este comando algo assim:
Abra o FORM FPESSOA no MODAL...

xiii deu erro...

CRIA O FORM FPESSO no MODAL...

Sinceramente NÃO faz sentido este racicionio...Quem sabe voce coloca o comando Application.Createform(TFpessoa,Fpessoa) ANTES do abertura do form...Voce quer testar se o form está aberto ?? Não é assim que se faz....

Cara, esta tua linha para MEU modo de ver(posso estar errado) mas, ESTÁ TOTALMENTE ILÓGICA...

cCriaçõa de form em tempo de execução com TRY e Except, é DENTRO do TRY não do except...


e codigo funciona da seguinte forma estou no form principal e quando pressiono um botão ele executa o comando try Fpessoa.show; except [color=red:69e94e1f90]Application.Createform(TFpessoa,Fpessoa); end; [/color:69e94e1f90]
e nesse comando ele abre o form Fpessoa exceto se ele já estiver aberto, entendeu?


Responder

24/03/2003

Okama

Completando a lógica, não seria melhor verificar se o formuálário está aberto antes de abrí-lo??



for I := 0 to Screen.FormCount-1 do
if Screen.Forms[i].Name = ´Form1´ then
Showmessage(´Formulário já está aberto!!!);


Responder

24/03/2003

Carnette

Completando a lógica, não seria melhor verificar se o formuálário está aberto antes de abrí-lo?? for I := 0 to Screen.FormCount-1 do if Screen.Forms[i].Name = ´Form1´ then Showmessage(´Formulário já está aberto!!!);



Obrigado Okama...me facilitou a explicação....


Responder

24/03/2003

Carlos Filho

Acho que entendi o que voce quer fazer...
Vc quer ECONOMIZAR MEMÓRIA CRIANDO FORMULÁRIOS APENAS QUANDO ELES FOREM REQUERIDOS...

Ótima atitude, pouca gente se preocupa com isso, parabéns. Você está seguindo bons parâmetros de programação...

Para que isso funcione corretamente você deve fazer assim:


begin
if not Assigned(Form2) then
Application.CreateForm(TForm2,Form2)
else
Form2.ShowModal; //Form2.Show, caso não queira bloquear o mouse fora de Form1 

end;


Assigned(Form2) verifica se o formulário já foi criado, pois quando ele está criado, um ponteiro é colocado dentro da variável Form2, que é da classe TForm2!

Espero ter te ajudado


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar