У меня есть форма (form2), и я реализовал следующий метод PUBLIC:
function ShowInterface(i:integer):boolean;
Эта форма находится в пакете, который будет ДИНАМИЧНО загружен. Теперь я хочу создать экземпляр этой формы (form2) и выполнить описанный выше метод.
Важное замечание: Я не могу ссылаться на юнит формы 2 в форме 1.
Я попробовал этот код, но он никогда не находит указатель «ShowInterface» (возвращает ноль).
procedure TfrmForm1.Button1Click(Sender: TObject);
var
PackageModule: HModule;
AClass: TPersistentClass;
ShowInterface: function (i:integer):boolean;
frm: TCustomForm;
begin
PackageModule := LoadPackage('form2.bpl');
if PackageModule <> 0 then
begin
AClass := GetClass('TfrmForm2');
if AClass <> nil then // <<-- FINE!! IT FINDS OUT 'TfrmForm2' in 'form2.bpl')
begin
frm := TComponentClass(AClass).Create(Self) as TCustomForm;
ShowInterface := frm.MethodAddress('ShowInterface'); // <<-- HERE!! ALLWAYS RETURNS "NIL"
if @ShowInterface <> nil then
ShowInterface(1);
// but if I call frm.Show, it works fine. frm is "loaded"!!!
frm.Free;
end;
DoUnloadPackage(PackageModule);
end;
end;
Заранее спасибо.