Q&A

  • MDI Form에서 Child 호출 방법
MDI로 프로그램을 만들려고 합니다.

메뉴에서 항목을 선택했을때 MDI child Form을 불러오게 하고 싶습니다.

방법좀 가르쳐 주세요.



3  COMMENTS
  • Profile
    강인규 2000.02.15 19:22
    위의 방법도 맞습니다만 이렇게 해줄 경우 같은 폼이 여러개 생기는 것을 막을 수 없습니다.

    아래의 코딩을 추가해 보세요...





    if form2 = nil then

    Application.CreateForm(Tform2,form2) //폼이 nil일 경우에만 폼을 생성시키고...

    else

    form2.WindowState := wsNormal; //아닐때는 보통모양으로 복원합니다.



    form2의 close Event에 아래와 같이 코딩합니다.



    form2 := nil; //form2에 nil이라는 포인터 상수를 할당합니다.

    Action := caFree; //메모리에 남아있는 폼을 날려줍니다.



    도움이 되셨기를......



    cyber wrote:

    > MDI로 프로그램을 만들려고 합니다.

    > 메뉴에서 항목을 선택했을때 MDI child Form을 불러오게 하고 싶습니다.

    > 방법좀 가르쳐 주세요.

    >

  • Profile
    조규춘 2000.02.15 19:14
    cyber wrote:

    > MDI로 프로그램을 만들려고 합니다.

    > 메뉴에서 항목을 선택했을때 MDI child Form을 불러오게 하고 싶습니다.

    > 방법좀 가르쳐 주세요.

    >



    안녕하십니까? 저도 초보이지요!



    그래도 미숙한 실력이나마 글을 한번 올려봅니다.



    우선 child Form는요 실행중에 생성되잔아요 그래서요 자동생성하면 안된다고들 하네요! 그래서 어떻하믄 되나면

    delphi메뉴에서 project->options->form 창에서 auto-create forms 리스트박스에 있는

    child Form을 available form로 가게 하셔요



    자 이제 코딩을 해보지요

    만약 메뉴를에서 새로운 창을 열리게 했을경우는

    procedure Tmainform.newclick(sender: Tobject);

    var

    child:TchildForm;

    begin

    child:=TchildForm.create(self);

    end;

    이런 식으로 하면 되겠지요!







    그리고 다음은 코드는 delphi의 mdi 예제를 복사를 했거등요!

    우선

    private

    { Private declarations }

    procedure CreateMDIChild(const Name: string); // <- 이내용을 추가시킵니다.



    그리고 이거를 적습니다.

    procedure TMainForm.CreateMDIChild(const Name: string);

    var

    Child: TMDIChild;

    begin

    Child := TMDIChild.Create(Application);

    Child.Caption := Name;

    if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name); //화일의 존재여부

    end;



    그리고 메뉴에서 새로운 창을 열라는 명령은

    CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));

    이런식으로 하더군요!





    그럼 이만 줄이것습니다. 너무나도 복잡하지요! 그래도 용서하시고

    오늘도 행복한 하루 되시길 바랍니다. 히~* 대전에서...

  • Profile
    병아리 2000.02.15 18:49
    cyber wrote:

    > MDI로 프로그램을 만들려고 합니다.

    > 메뉴에서 항목을 선택했을때 MDI child Form을 불러오게 하고 싶습니다.

    > 방법좀 가르쳐 주세요.

    >



    1. 메인폼을 만듭니다.(formMain.pas)

    formStyle을 fsMDIForm으로 설정합니다.



    2. 차일드 폼을 만듭니다.(formChild1.pas)

    formStyle을 fsMDIChild으로 설정합니다.



    3. 메뉴-project-options...를 선택하여

    formChild1을 avliable form 영역으로 옮겨줍니다.

    (이것은 mdiChild폼이 create됨과 동시에 떠버리기

    요렇게 하는 것임다....)



    4. formMain의 메뉴 이벤트에 코딩을 합니다.

    formChild1 := TformChild1.Create(Self)....



    간략하게 적어 보았는데,

    이미 알고 계신 내용이라면 쩝~ 죄송함다.



    이상 날고싶은 병아리였습니다.