关于bpl技术(100分)

  • 主题发起人 treewell
  • 开始时间
T

treewell

Unregistered / Unconfirmed
GUEST, unregistred user!
我将我的几个应用程序打成bpl包,我希望在主程序中调用这些包,我应该做如何操作
 
LoadPackage
GetClass
 
我的主程序窗口名为MainForm
我要调用的bpl包名为CW_ClerkMJ.bpl
我调用语句如下:
aMDIConnect:=LoadPackage(CW_ClerkMJ.bpl);
LoadMDIModule;
LoadMDIModule的程序如下:
procedure TMainForm.LoadMDIModule;
var
iCounter:integer;
aDS:TADOQuery;
begin
S_Program:='TCW_'+ LeftStr(S_Program, pos('.',S_Program)-1);
MDIModuleClass:=TCW_MDI(GetClass(S_Program));
[red]if MDIModuleClass<>nil then
[/red]
begin
aMDIForm:=TCW_MDI(Tcomponentclass(MDIModuleclass).create(application));
for iCounter:=0 to aMDIForm.ComponentCount-1do
begin
if UpperCase(aMDIForm.Components[iCounter].ClassName)='TADOQUERY'
then
begin
aDS:=TADOQuery(aMDIForm.Components[iCounter]);
aDS.Connection :=cw_conn_string;
aDS.Active:=true;
end;
end;
aMDIForm.Visible:=true;
end
end;

运行的时候,到红色那一块就完了,因为MDIModuleClass=nil,请问如果我只想将包运行起来,该如何做,具体一点,分值很高的。
 
在包中需要调用RegisterClass,将需要在外面使用的类注册一下
一般在窗体单元的 initialization 部分写一下,
在finalization调用下面这个过程
UnRegisterClass
 
这个我都做过,关键是
loadpackage()
之后该怎么做,才能在运行时调用这些包
 
这个做没有?
把执行程序的Build with runtime packages打上勾
 
我也在思考用BPL将程序化分开
楼住是否可以提供相关信息 给我 谢谢了
email:hstod@163.com
还有就是 我用package 作成的文件不是bpl 是dpk文件 为什么??
我刚学
 
关注,我也想知道这方面的内容,请继续讨论!!!
 
李維关于Package的文章中详细解释[:D]
http://www2.borland.com.tw/tw/reference9.html
如 何 使 用 Delphi 開 發 大 型主 從 架 構 系 統 - Package 的 秘 密 和 威 力
 
又学一招:)
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1687832
 
该做得都做了
包也打完了,我的问题在于如何调用这个包
 
我有一些例子,如果你需要,给我留个邮件
或许对你有用 :)
 
procedure TForm1.Button1Click(Sender: TObject);
var
fc:TFormClass;
cls:TPersistentClass;
begin
H:=LoadPackage('Package1.bpl');
if H<>0 then
begin
cls:=GetClass('TTestForm');
if cls<>nil then
begin
fc:=TFormClass(cls);
f:=fc.Create(self);
f.Parent:=panel2;
f.BorderStyle:=bsNone;
f.Align:=alClient;
f.Show;
end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
f.Free;
UnloadPackage(H);
end;
 
implementation
{$R *.dfm}
procedure TTestForm.Button1Click(Sender: TObject);
begin
showmessage('包测试');
end;

procedure TTestForm.FormCreate(Sender: TObject);
begin
showmessage('测试窗体');
end;

initialization
RegisterClass(TTestForm);
finalization
UnRegisterClass(TTestForm);
end.
 
我的邮箱:tree@mail.biti.edu.cn
非常感谢你
 
将程序打包成bpl的时候有什么步骤、要求吗
我有个同学打了包,老师调用出错
 
一般编译的时候包体文件(.bpl)都在Projects下面的Bpl文件夹中!
我也很弱的
 
我再给你发一些bpl的资料,你看看就明白了。
如果嫌打包麻烦,可以使用wise等制作安装的软件,它会把一些
包delphi必须的bpl包自动包含进去
 
已经发完了,请查信。
 
顶部