fsMDIForm이 실행되고 fsMDIChild 들이 실행됩니다. 지금 상황에서는요.. 여러개의 child화면이 뜹니다.
제가 필요한것은 만약 A 라는 child 화면이 뜨면 A 라는 child 의 화면이 close 되기전까지는
다른 main 폼이 작동을 못하게 하는 것입니다.
이곳으 폼을 최상위로 , 항상위로 ,.... 라는 소스를 적용해보았읍니다만.. 그것들은 main 폼의 메뉴가
작동되어 다른 폼이 위로 뜨던지 아님 아래로 뜨던지 했읍니다 .
저는 A 라는 child 화면에서 작업을 끝날때 까지 다른 child 화면이나 main 화면의 작업을 못하게 하는 것을 원합니다.
제 기억으로는 DLL 에서는 modal 로 띄우면 되는 것으로알고있는데.. MDI 에서는 어떻게 하는지 모르겠읍니다.
뭐 전의 것도 그냥 소스 카피해서 썼지 잘은 모릅니다.
아시는 분은 제발 가르쳐 주시기 바랍니다.
항상 즐거운 코딩이 되기를 ..
>
> 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;