Q&A

  • 폼에서 다른 DLL 폼을 불러서 panel에 도킹좀..
고수님들 안녕하셔요!



main폼에서 dll로 만든 다른 폼을 불러서

panel 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데

어떻게 해야되는지.....도와주세요.....



4  COMMENTS
  • Profile
    최용일 2000.07.03 23:32
    안녕하세요. 최용일입니다.



    dll에서 폼을 불러온 후 ManualDock메소드를 사용하여 도킹하면 됩니다.



    // DLL에 있는 폼을 불러온 후...

    DllForm.Show;

    DllForm.ManualDock(Panel1);



    Panel1의 DockSite속성이 True로 되어있어야 하겠죠...



    ^^ 항상 즐코하세요.



    이병웅 wrote:

    > 고수님들 안녕하셔요!

    >

    > main폼에서 dll로 만든 다른 폼을 불러서

    > panel 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데

    > 어떻게 해야되는지.....도와주세요.....

    >

  • Profile
    이병웅 2000.07.04 00:25
    언제나 답변해 주셔서 고맙습니다...

    아래 소스는 DLL폼 부분을 생성하는 부분입니다.

    procedure fast1;

    var

    form1 : tform1;

    begin

    coinitialize(nil);

    form1:=tform1.Create(application);

    form1.ShowModal;

    form1.Free;

    end;



    그리고 main form에서는

    fast1;

    이런식으로 DLL을 불러서 사용하는데요

    용일님께서 말씀하신 부분을 어떻게 적용해야 할런지요....

    용일님 부탁드립니다. ....꾸벅~



    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > dll에서 폼을 불러온 후 ManualDock메소드를 사용하여 도킹하면 됩니다.

    >

    > // DLL에 있는 폼을 불러온 후...

    > DllForm.Show;

    > DllForm.ManualDock(Panel1);

    >

    > Panel1의 DockSite속성이 True로 되어있어야 하겠죠...

    >

    > ^^ 항상 즐코하세요.

    >

    > 이병웅 wrote:

    > > 고수님들 안녕하셔요!

    > >

    > > main폼에서 dll로 만든 다른 폼을 불러서

    > > panel 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데

    > > 어떻게 해야되는지.....도와주세요.....

    > >

  • Profile
    최용일 2000.07.04 00:47
    안녕하세요. 최용일입니다.



    모들폼은 도킹이 안되는 걸로 알고 있는데요... 그리고 DLL의 Application과 메인 프로



    그램의 Application은 서로 다릅니다. 이점 참고하세요.



    이런식으로 바꾸어 보세요...



    dll에서 폼을 만드는 함수

    function MakeForm(OwnerApplication: TApplication): TForm1; export; stdcall;

    begin

    CoInitialize(nil);

    Result := TForm1.Create(OwnerApplication);

    end;



    메인폼에서

    var

    dllForm: TForm1;

    begin

    dllForm := MakeForm(Application);

    dllForm.Show;

    dllForm.ManualDock(Panel1);

    end;



    ^^ 항상 즐코하세요...



    이병웅 wrote:

    > 언제나 답변해 주셔서 고맙습니다...

    > 아래 소스는 DLL폼 부분을 생성하는 부분입니다.

    > procedure fast1;

    > var

    > form1 : tform1;

    > begin

    > coinitialize(nil);

    > form1:=tform1.Create(application);

    > form1.ShowModal;

    > form1.Free;

    > end;

    >

    > 그리고 main form에서는

    > fast1;

    > 이런식으로 DLL을 불러서 사용하는데요

    > 용일님께서 말씀하신 부분을 어떻게 적용해야 할런지요....

    > 용일님 부탁드립니다. ....꾸벅~

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > dll에서 폼을 불러온 후 ManualDock메소드를 사용하여 도킹하면 됩니다.

    > >

    > > // DLL에 있는 폼을 불러온 후...

    > > DllForm.Show;

    > > DllForm.ManualDock(Panel1);

    > >

    > > Panel1의 DockSite속성이 True로 되어있어야 하겠죠...

    > >

    > > ^^ 항상 즐코하세요.

    > >

    > > 이병웅 wrote:

    > > > 고수님들 안녕하셔요!

    > > >

    > > > main폼에서 dll로 만든 다른 폼을 불러서

    > > > panel 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데

    > > > 어떻게 해야되는지.....도와주세요.....

    > > >

  • Profile
    이병웅 2000.07.04 01:24
    용일님 답변에 감사합니다..



    아래는 메인 폼소스구요



    implementation

    function fast1(ownerapplication: Tapplication): tform2; stdcall; external 'test1.dll';

    {$R *.DFM}



    procedure Tform2.Button1Click(Sender: TObject);

    var



    dllform : tform2;

    begin

    dllform:=fast1(application);

    dllform.showmodal;

    dllform.ManualDock(panel1);

    end;



    아래는 DLL 소스입니다.

    function fast1(ownerapplication: tapplication): tform1; export; stdcall;

    var

    form2 : tform1;

    begin

    coinitialize(nil);

    result:=tform1.Create(ownerapplication);

    end



    그런데 도킹이 되질 않네요.....제가 무얼 잘못했는지요

    메인폼의 panel의 docksite 는 True 로 했구요

    그리고 메인 폼에서 dllform.show로 하면 나타났다가 폼이 바로 사라져버려서

    dllform.showmodal로 했어요 .....

    용일님 부탁드립니다.....

    언제나 용일님한테 신세만 지네요.....감사해요



    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 모들폼은 도킹이 안되는 걸로 알고 있는데요... 그리고 DLL의 Application과 메인 프로

    >

    > 그램의 Application은 서로 다릅니다. 이점 참고하세요.

    >

    > 이런식으로 바꾸어 보세요...

    >

    > dll에서 폼을 만드는 함수

    > function MakeForm(OwnerApplication: TApplication): TForm1; export; stdcall;

    > begin

    > CoInitialize(nil);

    > Result := TForm1.Create(OwnerApplication);

    > end;

    >

    > 메인폼에서

    > var

    > dllForm: TForm1;

    > begin

    > dllForm := MakeForm(Application);

    > dllForm.Show;

    > dllForm.ManualDock(Panel1);

    > end;

    >

    > ^^ 항상 즐코하세요...

    >

    > 이병웅 wrote:

    > > 언제나 답변해 주셔서 고맙습니다...

    > > 아래 소스는 DLL폼 부분을 생성하는 부분입니다.

    > > procedure fast1;

    > > var

    > > form1 : tform1;

    > > begin

    > > coinitialize(nil);

    > > form1:=tform1.Create(application);

    > > form1.ShowModal;

    > > form1.Free;

    > > end;

    > >

    > > 그리고 main form에서는

    > > fast1;

    > > 이런식으로 DLL을 불러서 사용하는데요

    > > 용일님께서 말씀하신 부분을 어떻게 적용해야 할런지요....

    > > 용일님 부탁드립니다. ....꾸벅~

    > >

    > > 최용일 wrote:

    > > > 안녕하세요. 최용일입니다.

    > > >

    > > > dll에서 폼을 불러온 후 ManualDock메소드를 사용하여 도킹하면 됩니다.

    > > >

    > > > // DLL에 있는 폼을 불러온 후...

    > > > DllForm.Show;

    > > > DllForm.ManualDock(Panel1);

    > > >

    > > > Panel1의 DockSite속성이 True로 되어있어야 하겠죠...

    > > >

    > > > ^^ 항상 즐코하세요.

    > > >

    > > > 이병웅 wrote:

    > > > > 고수님들 안녕하셔요!

    > > > >

    > > > > main폼에서 dll로 만든 다른 폼을 불러서

    > > > > panel 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데

    > > > > 어떻게 해야되는지.....도와주세요.....

    > > > >