如何将DLL中的表单资源装入到主窗口的某一区域中?(100分)

  • 主题发起人 yanghaijun
  • 开始时间
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在某一DLL中放置多个表单,然后在我的主程序窗口中
的某一区域显示出来,注意,不是让该表单以模式化或非模式
化窗口的方式显示,而是作为主窗口的某一部分,就如同控件
在主窗口中显示一般。请问,最好的解决方法是什么?
我曾用过LMD控件库中的FormDisplay控件,它能将某一表
单显示在该控件中,但该表单并不是在DLL中,若在DLL中,则
会发生错误。
请指点迷津。
 
J

Jimchael Tsee

Unregistered / Unconfirmed
GUEST, unregistred user!
在DLL中使用MDI子窗口,在App中使用MDI父窗口,调用时将
MDI子窗口的Parent设成MDI父窗口的句柄。
注意DLL使用中资源的创建和释放问题。 Good Luck!
 
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
感谢Jimchael Tsee,我说的是在主窗口的某一区域(而非MDI子窗口),
因我想在此区域中显示不同的表单资源,而MDI子窗口总是一单独的窗口。
我是希望它能像各种控件一样显示在主窗口中。
 
Z

zhaoyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
似乎没有很简单的办法能够作到,看来要用到面向对象的方法了。
简单地说,要用TForm派生出一个类,在生成这一子类的FORM,然后将它放进你要
放的FORM中,注意用DLL时,一定要REGISTER类,否则不行。
记得有一个程序演示过用PACKAGE实现这一功能的,找到的话MAIL给你,
祝你好运!
 
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
感谢zhaojipeng:我需要一个具体一点的例子,既然你能得到,
请尽快帮我解决。
 
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
感谢zhaojipeng:我需要一个具体一点的例子,既然你能得到,
请尽快帮我解决。
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
假设主Form为Form1, Form1中加一个TPanel为Panel1.

把Form2显示在Form1中的Panel1中:

implementation

uses
unit2
//form2;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Form2 = nil then Form2 := TForm2.Create(Application);
Form2.Align := taClient;
Form2.Parent := Panel1;
end;
 
Z

zhaoyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
TO yanghaijun: 程序Mail给你了,请查收
 
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
To zhaoyipeng:我还没收到你的程序,怎么搞的。
To huizhang: 我不知道你是否把Form2放入Dll中试验过,当放在
DLL中情况与和主表单在一起时情况是不一样的。我先试验你的
方法再说。
 
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
嗳,我还是没有收到Zhaoyipeng的程序,不管怎么说,
感谢各位大侠的关怀,我还是决定分赃了:
Huizhang:20
Jimchael Tsee:20
zhaoyipeng:60
 

Similar threads

D
回复
0
查看
817
DelphiTeacher的专栏
D
D
回复
0
查看
623
DelphiTeacher的专栏
D
顶部