amir_alaki
یک شنبه 01 آذر 1394, 14:03 عصر
با سلام
پروژه من به صورت چند تا BPL هست که در کنار برنامه اصلی قرار میگیرند و اجرا میشه
با نسخه های قدیمی دلفی مشکل نیست( D7-2010) ولی با نسحه های جدید مثل Rad Studio 10 و یا XE4 مشکل داره و کار نمی کنه
پکیج به درستی لود میشه و کلاس هم به درستی رجیستر میشه ولی با استفاده از تابع GetClass کلاس پیدا نمیشه و خروجی nil برمیگردونه.
این کد کلاس
type
TF_ACC_00001 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_ACC_00001: TF_ACC_00001;
implementation
{$R *.dfm}
initialization
RegisterClass(TF_ACC_00001);
ShowMessage('Register ok');
و این هم کدی برای فراخوانی پکیج و اجرای فرم
HandlePack := LoadPackage(pkname);
if HandlePack > 0 then
begin
FormClass := TFormClass(GetClass(formname));
if Assigned(FormClass) then
begin
FormScroll := FormClass.Create(Application);
FormScroll.Parent := PnlShow;
FormScroll.Show;
FormScroll.BorderStyle := bsNone;
FormScroll.WindowState := wsMaximized;
FormScroll.Name := formname;
end;
end;
با تشکر
پروژه من به صورت چند تا BPL هست که در کنار برنامه اصلی قرار میگیرند و اجرا میشه
با نسخه های قدیمی دلفی مشکل نیست( D7-2010) ولی با نسحه های جدید مثل Rad Studio 10 و یا XE4 مشکل داره و کار نمی کنه
پکیج به درستی لود میشه و کلاس هم به درستی رجیستر میشه ولی با استفاده از تابع GetClass کلاس پیدا نمیشه و خروجی nil برمیگردونه.
این کد کلاس
type
TF_ACC_00001 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_ACC_00001: TF_ACC_00001;
implementation
{$R *.dfm}
initialization
RegisterClass(TF_ACC_00001);
ShowMessage('Register ok');
و این هم کدی برای فراخوانی پکیج و اجرای فرم
HandlePack := LoadPackage(pkname);
if HandlePack > 0 then
begin
FormClass := TFormClass(GetClass(formname));
if Assigned(FormClass) then
begin
FormScroll := FormClass.Create(Application);
FormScroll.Parent := PnlShow;
FormScroll.Show;
FormScroll.BorderStyle := bsNone;
FormScroll.WindowState := wsMaximized;
FormScroll.Name := formname;
end;
end;
با تشکر