Q&A

  • 원도우 활성화 건에 대하여....
안녕하세요.

또 다시 문을 열었습니다.

MDIform에서 자식폼을 활성하 시키고 또다른 자식폼을 활성화 시켰습니다.

궁금한 것은 만약에 자식폼을 여러개를 열었을 경우

어떤 프로그램을 다시 활성화 시킬 경우 이미 활성화된 자식폼으로 포커스가

이동하게 할려고 합니다.

많은 고수님들의 가르침을......

아주아주 자세하게 좀 가르쳐 주세요...

좋은 하루 되시길.....

1  COMMENTS
  • Profile
    허일학 2001.01.05 07:51
    지승현 wrote:

    > 안녕하세요.

    > 또 다시 문을 열었습니다.

    > MDIform에서 자식폼을 활성하 시키고 또다른 자식폼을 활성화 시켰습니다.

    > 궁금한 것은 만약에 자식폼을 여러개를 열었을 경우

    > 어떤 프로그램을 다시 활성화 시킬 경우 이미 활성화된 자식폼으로 포커스가

    > 이동하게 할려고 합니다.

    > 많은 고수님들의 가르침을......

    > 아주아주 자세하게 좀 가르쳐 주세요...

    > 좋은 하루 되시길.....



    질문하신내용이 한번열려진 자식폼이 닫여지지않는 상태에서 다시 해당하는

    자식폼을 열게되는 활성화되게하시려는 의도인지?...

    제가 정확이 이해한건가요???



    아래와 같이 프로시져를 메인폼에 선언하시고 자식폼을 부를때...

    다음과 같이 코딩하시면 될것 같은데요...



    ShowOrCreateP(@Form1,TForm1); <------이렇게.....



    type

    p_Form = ^TForm; // <---

    .

    .

    .

    .

    .

    public

    { Public declarations }

    procedure ShowOrCreateP(p_child:p_Form; ChildClass:TFormClass);

    .

    .

    .

    procedure TxForm.ShowOrCreateP(p_child:p_Form; ChildClass:TFormClass);

    var i:integer;

    begin

    Application.ProcessMessages;

    // MDIChildren중 띄우려는 Form이 있나 검색

    for i:=MDIchildcount-1 downto 0 do begin

    if (MDIChildren[i].classtype = childClass) then begin

    //있으면 SHow만 하고 빠지기(iconized 되어 있으면 정상으로 키우고 Show)

    if MDIChildren[i].Windowstate = wsMinimized then

    MDIChildren[i].Windowstate := wsNormal;

    MDIChildren[i].Show;

    Exit;

    end;

    end; // for i:= ..

    //없으면 Create하기

    p_child^ := ChildClass.Create(self);

    end;