erro no comando application.createform
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.
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
Curtidas 0
Respostas
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
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...
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
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!!!);
for I := 0 to Screen.FormCount-1 do
if Screen.Forms[i].Name = ´Form1´ then
Showmessage(´Formulário já está aberto!!!);
GOSTEI 0
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
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:
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
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