Tente isso:

if not Assigned( FMQUALQUER ) then
    Application.CreateForm( TFMQUALQUER, FMQUALQUER );
FMQUALQUER.ShowModal( );
FMQUALQUER.Release( );
FMQUALQUER := nil;



________________________________
De: Marlon David de Souza <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Terça-feira, 11 de Novembro de 2008 9:49:10
Assunto: Re: [delphi-br] Assigned nao funciona


Faça assim:

fForm1 := TfForm1.Create( Self);
try
fForm1.ShowModal;
finally
fForm1.Release;
fForm1 := nil;
end;

Obs: não coloque o comando "fForm1 := nil" no evento "onClose" do 
formulário modal.

Alexandre Rodrigues escreveu:
> Caro Leandro não vejo sentido no uso de assigned nesse caso já que o 
> form é exibido no modo modal, eu faria assim:
>
> fForm1 := TfForm1.Create( nil);
> try
>    fForm1.ShowModal;
> finally
>    FreeAndNil(fForm1) ;
> end;
>
> FreeAndNil, se não me engano, só a partir do delphi 7, senão tem que ser 
> o velho fForm1.free;  fForm1 := nil;
>
> [EMAIL PROTECTED] com.br escreveu:
> 
>> Pessoal,
>>
>> Tenho o seguinte código, dentro de um menu no form principal do meu projeto:
>>
>> if not Assigned(fForm1) then
>> fForm1 := TfForm1.Create( Application) ;
>> fForm1.ShowModal;
>>
>> e no OnClose do Form1, eu tenho:
>>
>> Action := caFree;
>> Form1 := nil;
>>
>> Se eu clicar no menu uma vez após a outra, dá Access Violation, por que na
>> segunda vez nao entra no IF do Assigned, ou seja, trata como se o Form1
>> ainda estivesse na memória.
>>
>> Agora, o engraçado é que se eu colocar o mesmo código do menu em um outro
>> formulário, sem ser o principal, funciona. Eu só mudei o "Application"
>> para "Self". Ficou assim:
>>
>> if not Assigned(fForm1) then
>> fForm1 := TfForm1.Create( Self);
>> fForm1.ShowModal;
>>
>> Alguém poderia dizer: ora bolas, coloque o "Self" no código do menu
>> também. Já tentei, só que não funcionou.
>>
>> O que eu quero é que, sempre que fechar esse form, ele seja
>> automaticamente destruído.
>>
>> Uso Delphi 2007 e os forms são SDI.
>>
>> Alguem teria alguma idéia?
>>
>> Obrigado,
>>
>> Leandro
>> 
 


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Responder a