용일님 답변에 감사합니다..
아래는 메인 폼소스구요
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 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데
> > > > 어떻게 해야되는지.....도와주세요.....
생각해 보니 답변을 상당히 경솔하게 한것 같군요...
DLL과 메인프로그램은 완전히 별개의 것입니다.모들이나 비모들로 폼을 보여주는 것은
별루 상관이 없겠지만, DLL의 폼을 메인프로그램에 도킹시킬려면 두 개 프로그램의 동기
화가 필요할 것 같군요. 그냥 도킹시킨다면 아마도 메인 프로그램으로부터 이벤트를
받지못할것 같군요. DLL의 폼이 도킹될 때 메인프로그램으로부터 완전히 이벤트를 받을
수 있도록 동기화 시켜주세요. 이건 저의 내공을 초월한거라 코딩은 생략합니다. 죄송.
^^ 항상 즐코하세요.
이병웅 wrote:
> 용일님 답변에 감사합니다..
>
> 아래는 메인 폼소스구요
>
> 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 이나 다른 컴포넌트에 토킹좀 시켜볼려고 하는데
> > > > > 어떻게 해야되는지.....도와주세요.....
>