MDI Child 폼이 실행중인지 알려고 합니다
프로그램의 Form Style 은
MDI Form 1개 StayOnTop Form 2개로 구성되어 있습니다
StayOnTop Form 을 각 A Form 과 B Form 이라할때
A Form 실행중 B Form을 Call 을 해야하며
Call 할 경우 A Form은 Close하고 B Form을 Create 해야합니다
이때 B Form이 이미 존재한다면 A Form 은 그대로 Close 하고
B Form을 Active 해야합니다
B Form의 실행여부와 B Form을 활성화 할수 있 방법을 알려주십시요
참고로 A Form은 Auto Create Form 이고
B Form은 Available Form 입니다
답변주시면 감사하겠습니다...
즐거운 하루 되시길...
실무에서 전 많이 사용해본경우라..
흠..
Form B를 생성시키기 위해 Button을 Click시 해당 Event에
(단, B Form의 Name이 FormB라고 가정합니다.
물론, A Form의 Name도 FormA라고 가정합니다.)
Var
lb_NoCreateFormB: Boolean;
ll_Cnt, ll_Remove: Integer;
Begin
lb_NoCreateFormB := False;
For ll_Cnt := 0To MDIChildren.MDIChildCount - 1 Do
If MDIChildren[ll_Cnt] is TFormB Then //이미 생성되어져 있다면?
Begin
For ll_Remove := 0 To MIDChildren.MDIChildCount - 1 Do
If MDIChildren[ll_Remove] is TFormA Then //A Form을 죽인다.
Begin
MDIChildren[ll_Remove].Free;
Break; //요건 하시든 안하시든 폼이 2개만 있다면, 별 관계없음
End;
MDIChildren[ll_Cnt].SetFocus; //B Form을 Active 시켜준다.
lb_NoCreateFormB := True;
Break;
End
Else
lb_NoCreateFormB := lb_NoCreateFormB or False;
If Not lb_NoCreateFormB Then //어라? 생성안되어져 있냐? 고럼 만들어야지~~
Begin
Application.CreateForm(FormB, TFormB);
FormB.Show;
End;
End;
위와 같이 하면 별 무리 없이 될겁니다..
물론, 실무에서 잘 사용했던 적이 있어서..
지금 테스트를 안해서 에러가 날지는 모르지만 어떻게 제어하는지는
이해가 가실꺼라고 생각듭니다.
단!!! 이런 문제가 발생할 수 있으니, 참고하십시오..
A Form 이벤트 내에서 위의 For문을 실행했을 경우
자신의 폼을 Free(제거)할 수 없습니다..
왜냐? 자기가 실행중인데.. 아직 명령이 완료되지도 않았는데..
(Event를 벗어나지도 않았는데..)
자살한다.. 요거 이상하잖아여? *^^*
에러 납니다..
요것만 주의하시면 문제 없을듯...
제가 님의 질문을 해석하기에는
Exclusive Active Form인거 같은데..
위와 같이 하면 될겁니다..
으샤~~~~
힘내세염..
제가 써본 툴만, VB, PB, Delphi (웹상에서 사용하는거 제외)하면,
델파이가 좀 좋습니다..
결과적으로는 모두 구현할 수 있는 방법이 있지만,
델파이가 좀 쉽게 Handling할 수 있더군여..
힘내세염..
그럼.. 전 20000