如何将DLL/COM中的窗体作为子窗体显示?就像word中的文档一样。(200分)

  • 主题发起人 主题发起人 cxx1997
  • 开始时间 开始时间
C

cxx1997

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望将子窗体放到DLL/COM中实现。但用DELPHI5开发人员指南中的子窗体TCHILDFORM
在DLL中显示不出来。
DLL中:
function CreateForm(app:thandle;aowner:twincontrol):boolean;
begin
application.Handle := app;
form1:=TForm1.Create(application,aowner);
form1.Show;
end;
aowner传来的是PANLE1
TForm1 = class(TChildForm) TChildForm参见DLEPHI5人员指南
 
你为什么不把FORM改为FRAME呢?那样就好了!
不过也听一下!
 
我好象有个例子,找找看了。
在Dll中实现TChildForm很麻烦。你还不如用停靠的办法。
用QQ联系:33728007,解决后你自己帖上来吧。
 
我改用
DLL中
procedure createform(App:thandle;form:thandle);stdcall;
implementation
procedure createform(App:thandle;form:thandle);stdcall;
begin
application.Handle :=app;
form2:=tform2.CreateParented(form);
form2.Show;
end;
主窗体中
procedure createform(App:thandle;form:thandle);stdcall;
external 'project2.DLL';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
createform(application.Handle ,panel1.Handle );
end;
出来是出来了,但是EDIT框左击不能选中,右击可以。其他按钮都好的,请问各位大侠,
如何实现的???
 
function CreateForm(app:thandle;aowner:twincontrol):boolean;
begin
application.Handle := app;
form1:=TForm1.Create(nil);
windows.SetParent(form1.handle,aowner.Handle);
form1.Show;
end;
 
谢谢PIPI,其他可有什么处理方式??请大家继续发言
 
(出来是出来了,但是EDIT框左击不能选中,右击可以。其他按钮都好的,请问各位大侠,
如何实现的???)
能否解释一下该问题??
 
没搞懂
form2:=tform2.CreateParented(form);

form1:=TForm1.Create(nil);
windows.SetParent(form1.handle,aowner.Handle);
是差不多的代码,但效果就是完全不同
前者不会有窗口切换的效果,但form2上的控件不响应一些消息了
后者虽然控件是正常的,但有窗口切换(Title bar会变灰的)
 
windows.SetParent会造成 EDIT框左击不能选中 ?不会吧,好好的
 
谢谢PIPI,如果能详细说明两种方式的区别,我就结束该问题.
另外请问为什么所有子窗体的控件的HINT都失效了??
 
区别我也不懂,反正能用就是了
 
所有控件的HINT都失效了,怎么办??
 
COM中也有窗体?
 
该问题已经解决,可惜不是用的大家的方法,怎么办,能把分收回来吗?
 
老兄,就这么抽身走人了?为什么不把你的方法说说?
 
多人接受答案了。
 
后退
顶部