Forumda ve internette aradım ama çok net bir kaynak bulamadım.
Ben bir uygulama hazırlamak istiyorum mdi formla yalnız child formları
ayrı ayrı packge gömüp onları ana formdan dinamik olarak yüklemek istiyorum. Önce DLL ile yapmaya çalıştım ama araştırmalar sonucu dll ile olmadığı gösterdi. Delphi package ile yapılabileceği ile ilgili bilgiler buldum.
Hatta delphi about sitesinde çalışan bir örnekde buldum.
fakat aynı işlemleri ben yapmaya çalışınca bir türlü beceremedim.
Sonuçta
aşagıdaki şekilde işlem yapmama rağmen sürekli aynı hatayı almaktan bıktım bu konuda detaylı bir bilgi vereceklere şimdiden teşekkür ederim.
anaformum
Kod: Tümünü seç
unit anaUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus;
type
tmenu1=procedure;
Tfrm_ana = class(TForm)
MainMenu1: TMainMenu;
test1: TMenuItem;
procedure FormDestroy(Sender: TObject);
procedure test1Click(Sender: TObject);
private
pm:hmodule;
menu1:tmenu1;
procedure menuyukle;
{ Private declarations }
public
{ Public declarations }
end;
var
frm_ana: Tfrm_ana;
dd:hmodule;
implementation
{$R *.dfm}
procedure Tfrm_ana.menuyukle;
begin
pm:=loadpackage('paket1.bpl');
if pm<>0 then
try
@menu1:=getprocaddress(pm,'menu1');
except
showmessage('menu bulunamadı');
end;
end;
procedure Tfrm_ana.FormDestroy(Sender: TObject);
begin
if pm<>0 then unloadpackage(pm);
end;
procedure Tfrm_ana.test1Click(Sender: TObject);
begin
if pm=0 then menuyukle;
if assigned(menu1) then menu1;
end;
Kod: Tümünü seç
pakate koyduğum formum
unit raporUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls;
procedure menu1;
type
Tfrm_rapor = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
{var
frm_rapor: Tfrm_rapor;}
implementation
{$R *.dfm}
procedure Tfrm_rapor.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure menu1;
begin
Tfrm_rapor.Create(Application);
end;
exports
menu1;
end.
Tfrm_rapor.Create(Application);
geldiği zaman sürekli Connot create form.No MDI forms are currently active hatasını alıyorum neyi yanlış yaptığımı bir türlü bulumadım.
anladığım kadarıyla
önce bir mdiform oluşturuyoruz ve bunu kaydediyoruz dahasonra ikinci bir form oluşturup onuda kaydediyoruz.Ondan sonra bir paket yaratıp ikinci formu onun içine ekleyip compiler edip kaydediyoruz.
daha sonra ikinci formu içine onclose olayına formun free edilmesi için action:=cafree kodunu yazıyoruz;
ana formdan child formun yaratılması için bir procedure hazırlayıp bunu export ediyoruz;
anaformda da önce ilgili paketi yükleyip ardından da ikinci formdaki procedurenin adresini alarak bu procedureye çalıştırıyoruz.[/code]
