既然不用BPL也能灵活使用,为什么要用BPL;(动态BPL的使用!分不够可以加!!) (100分)

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

yxdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现以下的想法!在数据库存中有一个表:
模块编号|模块主窗口类名|BPL名
-------------------------------
001 |Tmainform |BPL_MAIN
-------------------------------
我要查表后动态调用各个模块;
如何解决最好有源程序:dennis_hu@wx88.net
不胜感激!
 
在数据库中存放的是为什么是模块主窗口类名呢?为什么不存放模块的可执行文件。
动态调用某个模块指的是如同一个BUTTON根据条件的不同调用不同的模块吗?
把该模块的可执行路径赋值给一变量,在onclick事件中调用SHELLEXECUTE,它的参数(
可扫行文件)指定为这个变量就行了。

如果是不同的模块用不同的BUTTON来调用,就动态创建BUTTON组件,然后需要覆盖它的
onclick事件(代码同上)。
不知道我有没有理解错误;
 
刚刚讨论过的问题啊?可以直接动态载入bpl,调用其中的类的说
http://www.delphibbs.com/delphibbs/dispq.asp?lid=642584
 
对不起问题提错了!重新如下:
我想实现以下的想法!在数据库存中有一个表:
模块编号|模块主窗口类名|
------------------------
001 |Tmainform |
------------------------
我要查表后动态调用各个模块,不用BPL!!;
如何解决最好有源程序:dennis_hu@wx88.net
不胜感激!

 
to nsj
理解错了要不用bpl的方式完成
 
不如你往表里存dll文件更好一些。或者存DLL的文件名也可以。将你的类存在dll中。
 
在TMainForm的unit中加入
initialization
RegisterClass(TMainForm);
finalization
UnRegisterClass(TMainForm);
然后就可以通过FindClass函数取得这个类,即可进行你需要的操作
其实前面那篇讨论里已经说得很清楚了……
 
procedure ExecuteForm(AFormClass: TFormClass);
begin
Screen.Cursor := crHourGlass;
with AFormClass.Create(Application) do
begin
Screen.Cursor := crDefault;
ShowModal;
Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ExecuteForm(TFormClass(FindClass('TForm2')));
end;

initialization
RegisterClass(TForm2);
finalization
UnRegisterClass(TForm2);

也可以不注册类,在主单元中将各个FormClass直接加入一TList中,
...
FormClassList.Add(TForm2)
...
然后
if TFormClass(FormClassList).ClassNameIs('TForm2') then
ExecuteForm(TFormClass(FormClassList));
 
to flier,OpuBF
如果加上DATAMODEL是否也一样使用!
既然不用BPL也能灵活使用,为什么要用BPL;
这样和BPL有什么根本的不同?
 
没人来回答我的问题吗?
来来!!!
 
因为用bpl可以减小你的执行文件的大小。
 
多人接受答案了。
 
后退
顶部