erro no comando application.createform

Delphi

24/03/2003

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

Curtidas 0

Respostas

Carnette

Carnette

24/03/2003

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...


GOSTEI 0
Anonymous

Anonymous

24/03/2003

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?


GOSTEI 0
Okama

Okama

24/03/2003

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!!!);


GOSTEI 0
Carnette

Carnette

24/03/2003

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....


GOSTEI 0
Carlos Filho

Carlos Filho

24/03/2003

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


GOSTEI 0
POSTAR