Q&A

  • 이전에 뜬 폼을 다시 생성하지 않게 하려면 어떻게 하나요.
폼을 생성하고, 띄운다음,

폼이 닫히기 이전에, 똑같은 폼을 또 띄우지 않게 하려면,

어케 해야 하는지..

예전에 이쪽 게시판에서 본것 같은데..

검색해도 잘 나오지 않는군요..

4  COMMENTS
  • Profile
    anderson 2002.01.29 04:56
    FindWindow를 쓰세요

  • Profile
    라민웁 2002.01.29 03:51
    if  생성한 그 폼 =  nil then
    begin
         그 폼.create;
    end;
    그 폼.show;

    ex)
    if form1 = nil then
    begin
       form1 := TForm.create(self);
    end;
    form1.show;


  • Profile
    서동혁 2002.01.30 21:09
    제가 해보니까..

    약간 추가해야 할것 같아서 올립니다.

    밑에 예제 보시면 알겠지만,
    폼이 없어질때 변수도 nil 로 바꿔줘야 되겠더군요..

    untMain.pas 에서(TfrmMain 이 폼 클래스입니다.)

    if frmSub = nil then
    begin
      frmSub := TForm.create(self);
    end;
    frmSub.show;


    untSub.pas 에서(TfrmSub 가 폼 클래스입니다.)

    procedure TfrmSub.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
      frmSub := nil;
      Action := caFree;
    end;


  • Profile
    이낭하 2002.01.29 03:51
    님이 말씀하시는게 중복 실행방지인거 같은데... 맞는지 모르겠네요?

    일단... 중복 실행 방지는...
    프로젝트 파일 설정 해주셔야 합니다...

    program Project1;
    uses
      Forms,  Windows,
      Dialogs,  SysUtils, // 이거 꼭 넣으세염..
      Unit1 in 'Unit1.pas' {Form1};

    {$R *.RES}

    begin
    // 중복실행 막음
       if FindWindow('TForm1', Nil) <> 0 then          
       begin  
           SetForegroundWindow(FindWindow('TForm1', Nil));
           Exit;
       end;
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.

    이거 말고는 OneInstance라는 컴포넌트 있는데... 사이트가.. http://www.bome.com/delphi/oneinstance/ 입니다.. 함 가보세염...

    그럼 즐프하세염..

    열흘나비였슴당..