Q&A

  • child 폼이 닫힐때 까지 다른 작업을 못하게 하는법..제발....


fsMDIForm이 실행되고 fsMDIChild 들이 실행됩니다. 지금 상황에서는요.. 여러개의 child화면이 뜹니다.



제가 필요한것은 만약 A 라는 child 화면이 뜨면 A 라는 child 의 화면이 close 되기전까지는

다른 main 폼이 작동을 못하게 하는 것입니다.



이곳으 폼을 최상위로 , 항상위로 ,.... 라는 소스를 적용해보았읍니다만.. 그것들은 main 폼의 메뉴가

작동되어 다른 폼이 위로 뜨던지 아님 아래로 뜨던지 했읍니다 .



저는 A 라는 child 화면에서 작업을 끝날때 까지 다른 child 화면이나 main 화면의 작업을 못하게 하는 것을 원합니다.



제 기억으로는 DLL 에서는 modal 로 띄우면 되는 것으로알고있는데.. MDI 에서는 어떻게 하는지 모르겠읍니다.



뭐 전의 것도 그냥 소스 카피해서 썼지 잘은 모릅니다.



아시는 분은 제발 가르쳐 주시기 바랍니다.



항상 즐거운 코딩이 되기를 ..



2  COMMENTS
  • Profile
    홍성락 2001.11.21 19:36
    이분희 wrote:

    >

    > fsMDIForm이 실행되고 fsMDIChild 들이 실행됩니다. 지금 상황에서는요.. 여러개의 child화면이 뜹니다.

    >

    > 제가 필요한것은 만약 A 라는 child 화면이 뜨면 A 라는 child 의 화면이 close 되기전까지는

    > 다른 main 폼이 작동을 못하게 하는 것입니다.

    >

    > 이곳으 폼을 최상위로 , 항상위로 ,.... 라는 소스를 적용해보았읍니다만.. 그것들은 main 폼의 메뉴가

    > 작동되어 다른 폼이 위로 뜨던지 아님 아래로 뜨던지 했읍니다 .

    >

    > 저는 A 라는 child 화면에서 작업을 끝날때 까지 다른 child 화면이나 main 화면의 작업을 못하게 하는 것을 원합니다.

    >

    > 제 기억으로는 DLL 에서는 modal 로 띄우면 되는 것으로알고있는데.. MDI 에서는 어떻게 하는지 모르겠읍니다.

    >

    > 뭐 전의 것도 그냥 소스 카피해서 썼지 잘은 모릅니다.

    >

    > 아시는 분은 제발 가르쳐 주시기 바랍니다.

    >

    > 항상 즐거운 코딩이 되기를 ..

    //////////////////////////////////////////////////////////////////

    저는 아래처럼 해봤는데 한번 참조해보세요

    Form1이 부모폼이구요

    여러 자식폼가운데 FormA라는 자식만 뜰때 다른것 실행못하게 할경우

    ---------------------------

    Form1에서 FormA호출시

    procedure TForm1.Button1Click(Sender: TObject);

    var

    i : integer;

    begin

    //Form1의 모든 컴포넌트 제어

    for i := 0 to Form1.ControlCount-1 do begin

    Form1.Controls[i].Enabled := False;

    end;

    //Form1의 모든 자식폼 제어

    for i := 0 to Form1.MDIChildCount-1 do begin

    Form1.MDIChildren[i].Enabled := False;

    end;

    if not(assigned(FormA)) then

    FormA := TFormA.Create(nil);

    end;

    ----------------------------------------------

    FormA 닫을때

    procedure TFormA.FormClose(Sender: TObject; var Action: TCloseAction);

    var

    i : integer;

    begin

    for i := 0 to Form1.ControlCount-1 do begin

    Form1.Controls[i].Enabled := True;

    end;

    for i := 0 to Form1.MDIChildCount-1 do begin

    Form1.MDIChildren[i].Enabled := True;

    end;

    Action :=caFree;

    end;

    procedure TFormA.FormDestroy(Sender: TObject);

    begin

    FormA:= nil;

    end;

  • Profile
    이분희 2001.11.21 20:20
    홍성락 wrote:

    > 이분희 wrote:

    > >

    > > fsMDIForm이 실행되고 fsMDIChild 들이 실행됩니다. 지금 상황에서는요.. 여러개의 child화면이 뜹니다.

    > >

    > > 제가 필요한것은 만약 A 라는 child 화면이 뜨면 A 라는 child 의 화면이 close 되기전까지는

    > > 다른 main 폼이 작동을 못하게 하는 것입니다.

    > >

    > > 이곳으 폼을 최상위로 , 항상위로 ,.... 라는 소스를 적용해보았읍니다만.. 그것들은 main 폼의 메뉴가

    > > 작동되어 다른 폼이 위로 뜨던지 아님 아래로 뜨던지 했읍니다 .

    > >

    > > 저는 A 라는 child 화면에서 작업을 끝날때 까지 다른 child 화면이나 main 화면의 작업을 못하게 하는 것을 원합니다.

    > >

    > > 제 기억으로는 DLL 에서는 modal 로 띄우면 되는 것으로알고있는데.. MDI 에서는 어떻게 하는지 모르겠읍니다.

    > >

    > > 뭐 전의 것도 그냥 소스 카피해서 썼지 잘은 모릅니다.

    > >

    > > 아시는 분은 제발 가르쳐 주시기 바랍니다.

    > >

    > > 항상 즐거운 코딩이 되기를 ..

    > //////////////////////////////////////////////////////////////////

    > 저는 아래처럼 해봤는데 한번 참조해보세요

    > Form1이 부모폼이구요

    > 여러 자식폼가운데 FormA라는 자식만 뜰때 다른것 실행못하게 할경우

    > ---------------------------

    > Form1에서 FormA호출시

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > i : integer;

    > begin

    > //Form1의 모든 컴포넌트 제어

    > for i := 0 to Form1.ControlCount-1 do begin

    > Form1.Controls[i].Enabled := False;

    > end;

    > //Form1의 모든 자식폼 제어

    > for i := 0 to Form1.MDIChildCount-1 do begin

    > Form1.MDIChildren[i].Enabled := False;

    > end;

    > if not(assigned(FormA)) then

    > FormA := TFormA.Create(nil);

    > end;

    > ----------------------------------------------

    > FormA 닫을때

    > procedure TFormA.FormClose(Sender: TObject; var Action: TCloseAction);

    > var

    > i : integer;

    > begin

    > for i := 0 to Form1.ControlCount-1 do begin

    > Form1.Controls[i].Enabled := True;

    > end;

    > for i := 0 to Form1.MDIChildCount-1 do begin

    > Form1.MDIChildren[i].Enabled := True;

    > end;

    > Action :=caFree;

    > end;

    > procedure TFormA.FormDestroy(Sender: TObject);

    > begin

    > FormA:= nil;

    > end;