iki gündür bu mesele ile uğraştım çözüm bulamadım.
Amacım Common.bpl olarak oluştrudğum ortak dialogları barındıran bir Package'deki formlardan lazım olana ulaşmak.
Embarcadeno.com daki aşağıdaki örneği denedim
Kod: Tümünü seç
var
PackageModule: HModule;
AClass: TPersistentClass;
begin
PackageModule := LoadPackage('Package1.bpl');
if PackageModule <> 0 then
begin
AClass := GetClass('Tcariliste');
if AClass <> nil then
with TComponentClass(AClass).Create(Application)
as TCustomForm do
begin
ShowModal;
// Forma erişseydim burada bir kaç satır daha kod olacaktı ama erişemedim bi türlü :S
Free;
end;
UnloadPackage(PackageModule);
end;
end;
baktım olmadı aşağıdaki gibi bir kod yazdım
Kod: Tümünü seç
var s: String;
PCommon : HModule;
AClass: TFormClass;
AForm : Tform;
begin
s:= extractfilepath(application.ExeName)+'Common.bpl';
if PCommon<>0 then
try
UnloadPackage(PCommon);
except
end;
if PCommon<>0 then
try
FinalizePackage(PCommon);
except
end;
PCommon:=LoadPackage(s);
if PCommon <> 0 then
begin
AClass :=TFormClass(GetClass ('Tcariliste'));//GetClass('Tcariliste');
if Assigned (AClass) then
begin
AForm := AClass.Create (Application);
Aform.ShowModal;
// Forma erişseydim burada bir kaç satır daha kod olacaktı ama erişemedim bi türlü :S
Aform.Free;
end;
UnloadPackage(PCommon);
end;
end;
öyle olmadığını biliyordum ama bi ihtimal diyip belki create olmadığı için class geri dönüş yapmamıştır diyip, Package içerisinde create edeyim dedim yok gene tık yok.
package içerisine checkpointler yerleştirdim package de bir sorun yok.
interneti talan ettim. Package içindeki function ve procedurlere erişim için bi ddünya örnk var ama form için bişey yok .
Acaba bana package içerisindeki formları çağırmaya örnek bir kod verebilir misiniz.