Bu özellik sayesinden hem boyut olarak çok küçük boyutlarda programlar oluşturabilir;
hem daha hızlı uygulamalar geliştirebilir.
Hem de modüler çalışma sağlayabilirsiniz ki moduüler çalışma büyük projelerde
sıkıntılı bir çalışma gibi görünse de programın geliştirilmesinde bizlere çok büyük kolaylıklar sağlar aslında.
Zaten kullandığınız delphi sürümlerinin eriştiği kütüphanlere dikkat ederseniz. Componentlerin bpl uzantılı kütüphanelerden ibaret olduğunu görebilirsiniz.
BPL Kullanmak için aşağıdaki adımları izleyin
[*]Yeni bir project group oluşturun
[*]Proje Grubunuza bir Form uygulaması projesi ve bir package projesi ekleyin.
[*]Ana Programınız aktif proje iken Projejt/Options/Packages sekmesine gelip "Build with runtime packages" seçeneğini işaretleyin
[*]Package Library (Paket uygulamanızı) aktif edin ve Project/Options/directories sekmesinde "Output directory" kutucuğuna paketin ereye compile edileceğini belirtin. (adres olarak Çalışma klasörünüzü belirtmeniz tavsiye edilir)
bu adımı uygulamazsanız varsayılan olarak delphinin default bpl output directory klasörüne derlenir.
[*]Programınızı yazın ve derleyin
Aşağıda bpl'nin proje içerisinde kullanımına örnekeyen kodlar gösterilmektedir.
Verilen örnekte bağımsız form ve embedded form özellikleri ayrı ayr gösterilmektedir.
Örnekte de göreceğiniz üzre bpl kullanımı aslında çok ama çok basittir.
Bu örneği bir kez kavradınız mı gerisi artık sizin hayal gücünüze kalmıştır.
Faydalı olması dileğiyle iyi günler dilerim.
Paketi çağıran ana program:
Kod: Tümünü seç
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, AppEvnts;
type
Tmain = class(TForm)
Panel1: TPanel;
ypanel: TPanel;
Button1: TButton;
Button2: TButton;
secenekler: TRadioGroup;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
main: Tmain;
Paketim : HModule;
ModFolder:String;
implementation
{$R *.dfm}
procedure Tmain.Button1Click(Sender: TObject);
begin
if Paketim<>0 then
try
UnloadPackage(Paketim);
except
end;
if Paketim<>0 then
try
FinalizePackage(Paketim);
except
end;
Paketim:=LoadPackage(ModFolder+'paket.bpl');
//InitializePackage(PcariKart);
end;
procedure Tmain.Button2Click(Sender: TObject);
begin
Paketim:=LoadPackage(ModFolder+'paket.bpl');
end;
procedure Tmain.Button3Click(Sender: TObject);
begin
if Paketim<>0 then
try
UnloadPackage(Paketim);
except
end;
if Paketim<>0 then
try
FinalizePackage(Paketim);
except
end;
end;
procedure Tmain.FormCreate(Sender: TObject);
var ln : string;
begin
Modfolder:=extractfilepath(paramstr(0));
ln:=#13#10;
showmessage ('paket önceden bir kez yüklenmiş'+ln+
've yüklemeden sonra Finalize edilmemiş ise '+ln+
'Program hata verir'+ln+
'Eğer bir kez paketi yüklemişseniz'+ln+
'Önce Kaldır buyonun tıklayın sonra Yükle diyin'+ln+
'Yada ''kaldır ve yükle'' butonunu tıkayarak bu işi'+ln+
'Programa bırakın'+ln+
'Peki o zaman neden bu seçeneği koydum' +ln+
'iki sebebi var:' +ln+ln+
'1: Bazen projelerde kaldır ve yükle opsiyonu kullanışlı olamayabiliyor' +ln+
'bu çok nadiren oluyor ama olmayabiliyor işte' +ln+ln+
'2: Paketleri şuursuzca kullanınca başınıza neler gelebileceğini görebilesiniz diye'+ln+
'böylece bu kadar try except kontorlü koymaya ne gerek var soru işaretinini de kafalardan silmiş olduk');
end;
end.
Kod: Tümünü seç
unit fPaketForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
Tpaketform = class(TForm)
durum: TPanel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
paketform: Tpaketform;
implementation
{$R *.dfm}
initialization
case TRadioGroup(Application.MainForm.FindComponent('secenekler')).ItemIndex of
0: // Ayrı pencere
begin
if paketform=nil then paketform := TPaketForm.Create(Application);
paketform.durum.Caption:='Form ayrı pencere olarak görüntüleniyor';
end;
1: // Panel içinde
begin
if paketform=nil then paketform := TPaketForm.Create(Application);
PaketForm.Align:=AlClient;
Paketform.BorderStyle:=bsNone;
Paketform.Parent:=TWinControl(Application.MainForm.FindComponent('ypanel'));
paketform.durum.Caption:='form Embedded olarak görüntüleniyor';
end;
end; //Case
Paketform.Show;
finalization
if Paketform<>nil then Paketform.Destroy;
end.