type
TPluginInit=pro'cedure(Parentlist:Tlistbox);
stdcall;
由于过程存在于DLL内部,它通过标准调用、转换,编译所有导出例程,因此需要使用stdcall指示字。这个过程使用一个var参数,当过程返回的时候它包含插件的描述。
要调用刚刚获得的过程,只需要使用保存地址的变量作为过程名,后面跟上任何参数。就本文的例子而言,声明:initproc(1istbox1);将会调用在插件中获得的相应过程,并且初始化报表列表框Listbox1。
2.3构造报表插件
插件文件是一个标准的DelphiDLL,DLL文件不仅可以让Delphi自身调用,而且也可以在Vc++、VB等其它语言程序中轻松调用。虽然插件是一个DLL文件,但是不一定要给它一个.DLL的扩展名。实际上,一个原因就足以让我们有理由改变扩展名,当父应用程序寻找要加载的文件时,新的扩展名可以作为特定的文件掩膜。通过使用别的扩展名(如trio)可以在一定程度上确信应用程序只会载入相应的文件。
例子插件的代码是比较简单的。部分关键程序代码在下面已经列出。此处InitPlugin原型与外壳应用程序中的TInitPlugin类型应一致,使用附加的export保留字指定该过程将被导出。被导出的过程名称也将会出现在主工程源代码的exports段中。
unitUsjxstbj;
jnterface
procedureInjtPlugjn(Parentljst:Tlistbox);stdcall:
1mplementatiOn
procedureInitPlugin(Parentlist:Tlistbox);
begin
Parentlist.Items.Addfbbname):
end;
在测试这个插件之前,要先把它复制到相应的路径下(如plug)。最简单的办法就是在主目录的子目录下创建插件,然后把输出路径设置为主路径。