dll içinden mdi child çağırma problemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
dll içinden mdi child çağırma problemi
s.a. Dll içinde mdi formumu dinamik olarak çağırabiliyorum fakat mdi üzerinden child çağıramıyorum arkadaşlar...Bunun yöntemi nedir lütfen yardımcı olursanız sevinirim Teşekkür ederim
pardon olayı tam anlatamadım heralde....Şu şekilde dll içinde bir procedure var...
bu da butondaki
Fakat bu acilan mdi formun içinde ben child açamıyorum no currently mdi form active diyor forumda mrmcop abimizin yazdığı var bir tane fakat beceremedim...Yardımlarınıı bekliyorum..
Şunuda eklemek isterim main formum olan form mdi değil normal form fakat onun üzerinde açılan butonun altındaki mdi form ve bu açılan mdi içinde ben child açmak istiyorum...Yardımlarınızı Bekliyorum arkadaşlar...
Kod: Tümünü seç
procedure stokana_cagir;stdcall;
var
frm_stokanamenu:Tfrm_stokanamenu;
begin
try
frm_stokanamenu:=Tfrm_stokanamenu.create(nil);
frm_stokanamenu.ShowModal;
finally
frm_stokanamenu.free;
end;
end;
}
exports
stokana_cagir;
bu da butondaki
Kod: Tümünü seç
procedure TFrm_clientmenu.Stok1Click(Sender: TObject);
var
Handle: integer;
stokana_cagir: procedure;
begin
handle := LoadLibrary('../moduller/stok/stok.dll');
if Handle <> 0 then
begin
@stokana_cagir := GetProcAddress(handle, 'stokana_cagir');
if @stokana_Cagir <> nil then
stokana_cagir else
begin
ShowMessage('HATA : Çağrılan Procedure Bulunamadı..!');
end;
end
else
begin
ShowMessage('HATA : Kitaplık Dosyası Bulunamadı..!');
FreeLibrary(Handle);
end;
end;
Şunuda eklemek isterim main formum olan form mdi değil normal form fakat onun üzerinde açılan butonun altındaki mdi form ve bu açılan mdi içinde ben child açmak istiyorum...Yardımlarınızı Bekliyorum arkadaşlar...
Umarım bu adresde istediğini rahatlıkla bulursun.
http://delphi.about.com/library/weekly/aa020805a.htm
http://delphi.about.com/library/weekly/aa020805a.htm
Kod: Tümünü seç
type
//signature of the "ExecuteChild"
//procedure from the Package
TExecuteChild = procedure;
TMainForm = class(TForm)
...
private
PackageModule : HModule;
ExecuteChild : TExecuteChild;
procedure PackageLoad;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.PackageLoad;
begin
//try loading the package
//(let's presume it's in the same
//folder, where the main app. exe is)
PackageModule := LoadPackage('MDIPackage.bpl');
//if loaded, try locating
//the ExecuteChild procedure
if PackageModule <> 0 then
try
@ExecuteChild := GetProcAddress(PackageModule,
'ExecuteChild');
except
//display an error message if we fail
ShowMessage ('Package not found');
end;
end;
//menu click
procedure TMainForm.mnuCallFromDLLClick
(Sender: TObject);
begin
//lazzy load package
if PackageModule = 0 then PackageLoad;
//if the ExecuteChild procedure
//was found in the package, call it
if Assigned(ExecuteChild) then ExecuteChild;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
//if the package was loaded,
//make sure to free the resources
if PackageModule <> 0 then
UnloadPackage(PackageModule);
end;