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]