我有一个加载了BPL的应用程序,其中包含一个简单表单。
这个表单是主应用程序的可选选项。
BPL正确加载,表单正确显示,但我不知道如何在BPL内访问表单的公共方法和属性。
有人能提供一个简单的例子吗?
我的代码:
// Load the BPL on aplication Load
LoadPackage( 'About.bpl' );
// CAll for TForm1 inside the About.BPL
var
AClass: TClass;
AForm: TForm;
begin
AClass := GetClass('TForm1');
if AClass <> nil then
begin
Application.CreateForm(TComponentClass(AClass), AForm);
AForm.Show;
end;
// The unit TForm1 inside the BPL package
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
PublicMthd;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.PublicMthd;
Begin
ShowMessage('Inside call');
End;
initialization
RegisterClass(TForm1);
finalization
UnRegisterClass(TForm1);
end.
我该如何在TForm1中访问“PublicMthd”?
function GetMainForm:TForm
,然后就可以访问它了呢?你不能使用常识方法吗?一旦你知道了类并且可以枚举它们,甚至可以创建它们的实例,你打算做什么?在你的主应用程序中,为什么不指定适合你问题域的IPluginInterface,而是直接转到底层类类型呢? - Warren P