exe动态调用一个bpl,bpl内部有一个主窗体,由这个窗体调用各个内部窗体,内部窗体有使用到这个主窗体的实例
问:bpl主窗体中要不要定义一个实例主窗体类的全局变量,如果没有实例内部窗体无法使用主窗体,如果不要定义,内部窗体该如何写代码引用主窗体呢?
问:bpl主窗体中要不要定义一个实例主窗体类的全局变量,如果没有实例内部窗体无法使用主窗体,如果不要定义,内部窗体该如何写代码引用主窗体呢?
解决方案 »
- 如何得到焦点所在的控件的name
- 求 delphi 2006 下载地址,非 emule 的。
- 100象素单位打印到纸上后,其长度应是多少厘米、毫米?(思考题)
- CnPack 开放源码 IDE 专家包发布 0.7.5 版
- 简单问题:请问tabcontrol控件如何实现标签页切换时别的控件也跟着更换?
- 如何启动word文档?
- 如何使用DAO操作文本文件?
- 伴水,Chechy...高手救命!关于RTTI,自定义的控件包
- 求救!在使用存储过程的时候遇到的问题。
- 周一就要编数据库软件了,谁给个经典的例程啊?桌面的、多层的都行。
- Array 数组、Subrange 子界、命名和不命名,求例子。。
- FastReport:Barcode Error!!!
首先,BPL就相当于DLL。
BPL中要封装好远程调用,或者非确定性的,可以用参数,如消息等来处理。
//这里需要声明一个类的类
TForm1Class = class of TForm1; TForm1 = class(TForm)
....
....
end;.....
initialization
RegisterClass(TForm1);
finalization
UnRegisterClass(TForm1);这样你在其他窗体就可以动态创建 TForm1 的实例了。
创建的时候,你需要找到这个类的类。类似代码如下:
var
vClass: TClass;
vForm: TForm;
begin
vClass := FindClass('TForm1Class');
if vClass <> nil then
begin
vForm := TFormClass(vClass).Create;
try
vForm.showmodal;
finally
vForm.free;
end;
end;
end;
这样不用定义全局变量也可以调用,封装成一个过程,方便调用。全局变量,没什么说的,直接定义使用就可以了。需要注意包的引用。
TBplMainForm 你的主窗体类名