delphi7 package hazırlama hk.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

delphi7 package hazırlama hk.

Mesaj gönderen cihan »

Arkadaşlar

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.
program çalıştırılıp
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]

:oops: yardımlarınızı bekliyorum
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Mesaj gönderen kahraman1285 »

Mrb.

Verdiğin kodlarla ilgili bi yardımım olmayacak ama sizin yapmak istediğiniz metodu Raize bileşeninin içindeki Demo.dpr örneğinde uygulamışlar incelemenizi tavsiye ederim.

Kolay gelsin...
Cevapla