Paulo, eu faço assim:

01) Na implementation do form defini uma variável do tipo do 
formulário:

implementation

{$R *.dfm}

{ TForm2 }

var

  FForm: TForm2;  

Por estar em Implementation ela fica protegida de acesso externo.

02) Crio no form um método de classe ChamaForm com a seguinte 
implementação:

class procedure TForm2.ChamaForm;

begin

  if FForm = nil then

     FForm := TForm2.Create(nil);

  FForm.Show;

end;

03) No Create do form faço FForm receber NIL e Destroy também. No 
OnClose uso CAFree.

04) No local de chamada do form simplesmente faço:

procedure TForm1.Button1Click(Sender: TObject);

begin

  TForm2.ChamaForm;

end;

Assim se o formulário não existir ele é criado se já existir apenas 
é exibido.

Acho que isso resolve.

Me diga se não ajudar.

_______________________________
Alessandro Cunha Fernandes  ><>
SoftTI - Software e Consultoria em TI

 


--- Em delphi-br@yahoogrupos.com.br, Paulo Daniel Dorensbach 
<[EMAIL PROTECTED]> escreveu
> Ola Daniel, ,pelo jeito vc foi o unico que realmente
> entendeu minha pergunta.
> 
> Soh que tem um problema na sua solucao: Eu nao uso
> forms MDI no meu projeto.
> 
> O que eh preciso mudar na funcao para adapta-la a
> minha situacao?
> 
> Valeu, um abraco e Feliz Novo ano!!!
> 
>  --- Daniel Pohren <[EMAIL PROTECTED]> escreveu: 
> > 
> > Bom, respondendo EFETIVAMENTE a pergunta do colega,
> > que é como fazer
> > que não abra duas vezes a mesma janela MDI, podes
> > fazer a seguinte
> > rotina, que caso já exista vai trazer ela pro
> > tamanho normal e para a
> > frente:
> > 
> > var
> >    i:integer;
> >    cria:boolean;
> > begin
> >      cria:=true;
> >      for i:=0 to MdiChildCount-1 do if
> > MDIChildren[i].name='frm_config' then cria:=false;
> >      if cria then
> >      begin
> >           frm_config:=tfrm_config.Create(Self);
> >           frm_config.Show;
> >      end else begin
> >          frm_config.Bringtofront;
> >          frm_config.Windowstate:=wsNormal;
> >      end;
> > end;
> > 
> > Depois podes transformar isto em um função, por
> > exemplo, para evitar
> > duplicação de código.
> > 
> > Espero ter ajudado.
> 
> 
>       
>       
>               
> _______________________________________________________ 
> Yahoo! Acesso Grátis - Instale o discador do Yahoo! agora. 
http://br.acesso.yahoo.com/ - Internet rápida e grátis





-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a