dll içinden mdi child çağırma problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

dll içinden mdi child çağırma problemi

Mesaj gönderen delphist »

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
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

pardon olayı tam anlatamadım heralde....Şu şekilde dll içinde bir procedure var...

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;
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...
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Arkadaşlar bu konuda bana yardımcı olacak arkadaş yok mu lütfen...Hakikaten kafayı yiyecem bi child form açamadık ya :(
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

Mesaj gönderen Berdem »

Umarım bu adresde istediğini rahatlıkla bulursun.
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;
Cevapla