Memperkecil ukuran EXE pada Delphi

Bismillahirrohmanirrohim.
Assalamu’alaikum wr wb.
Delphi versi lebih baru hadir dengan beberapa kemudahan dan kelebihan diantara beberapa komponen yang sebelumnya harus menambahkan secara manual yang mana hal tersebut terkadang tidak mudah bagi pemula, saat ini hanya dengan menginstall Delphi 10.3 Rio Community Edition kita sudah dapat membuat aplikasi yang bagus tanpa repot-repot menambahkan komponen pihak ketiga.
Namun dibalik kemudahan dan kelebihannya disisi lain ada yang membuat sedikit kurang yaitu ukuran EXEnya yang lumayan gendut, beberapa teman di media sosial yang sebelumnya menggunakan Delphi 7 keluhannya “bisa gak sih ukuran EXEnya diperkecil” saat mencoba menggunakan Delphi versi yang lebih baru.
Pada artikel kali ini saya akan mencoba menjawab keluhan teman-teman (termasuk saya juga dulu).
Kalo diperkecil segede EXEnya Delphi 7 sepertinya sulit, tapi kalo sedikit dirampingkan bisa dengan langkah-langkah dibawah ini.
Ada beberapa langkah untuk membuat ukuran EXE menjadi lebih kecil diantaranya :
1. Merubah konfigurasi menjadi Release (Defaultnya Debug).
2. Membuang Informasi RTTI.
3. Mengkompress EXE yang sudah jadi menggunakan software UPX.
Perbandingan ukuran EXE sebelum dan sesudah melewati proses diatas seperti gambar berikut.

Perbandingan ukuran EXE

Langsung saja kita mulai, langkah pertama yaitu merubah konfigurasi menjadi Release.

Klik 2x pada “Release” untuk merubah

Selanjutnya membuang informasi RTTI, yaitu dengan menambahkan kode berikut pada Project Source.

Pilih menu Project-View Source

Yang terakhir mengkompres EXE yang sudah jadi dengan menggunakan UPX.
Sebelumnya download dulu software upxnya jika belum punya pada link berikut https://github.com/upx/upx/releases/download/v3.95/upx-3.95-win32.zip
Yang dibutuhkan hanya upx.exe, copykan upx.exe ke lokasi yang terjangkau path misalnya c:\windows.
Cara menggunakannya cukup mudah seperti gambar berikut.

parameter -9 untuk kompresi maksimum

Kalo diinginkan upx jalan secara otomatis setiap selesai compile bisa juga yaitu dengan mengaturnya pada Build Event.

Project Option – Build events

Langkah-langkah diatas boleh dilakukan salah satu atau semuanya, namun yang perlu diperhatikan bahwa langkah tersebut diatas hanya berlaku untuk platform windows (VCL & Firemonkey).
Demikian sedikit ilmu yang bisa saya bagi pada kesempatan kali ini, semoga bermanfaat.
Wassalamu’alaikum Wr Wb.

Menyiapkan RAD Studio 10.3 Rio untuk develop aplikasi android

Bismillahirrohmanirrohim,
Assalamu’alaikum Wr Wb.

Pada kesempatan kali ini saya akan berbagi tentang langkah-langkah mudah yang diperlukan untuk develop atau membangun aplikasi android menggunakan RAD Studio 10.3 Rio Comunity Edition.

Langkap pertama yang diperlukan dan wajib tentunya harus sudah terinstall RAD Studio 10.3 Rio Comunity Edition, silahkan download pada link berikut jika belum punya.

https://www.embarcadero.com/products/delphi/starter/free-download

Untuk cara download, regitrasi dan instalasi tidak saya bahas disini.
Pada postingan kali ini saya hanya membahas langkah-langkah yang diperlukan sehinggan kita dapat membangun aplikasi android menggunakan RAD Studio 10.3 Rio Comunity Edition.

Untuk menyingkat waktu langsung saja, berikut ini langkah-langkahnya dalam bentuk visual/gambar.

Dari menu “Tools” pilih “Manage Platform”
Pastikan centang “Delphi Android Community”
Centang pada “Java Development .. ” dan “Android SDK …”
Jalankan “SDK Manager”
Download dengan menandai (centang), minimal seperti gambar diatas, yang lain gak usah

Demikian langkah singkat untuk menyiapkan RAD Studio 10.3 Rio agar mendukung develop aplikasi android.

Tutorial modifikasi komponen VCL pada Delphi 10.3 Rio

Assalamu’alaikum Wr Wb.
Bismillahirrohmanirrohim.
Dalam membangun sebuah aplikasi terkadang kita menginginkan sebuah komponen mempunyai fungsi lebih dari yang ada, mungkin kita bisa menggabungkan beberapa komponen atau memainkan koding tertentu agar dapat memenuhi yang kita butuhkan, namun apabila dalam project tersebut terdapat banyak sekali komponen yang dimaksud hal tersebut cukup menyulitkan juga.
Pada kesempatan kali ini saya akan berbagi tutorial cara sederhana untuk menambahkan kemampuan lebih sesuai yang kita butuhkan pada sebuah komponen vcl.
Langsung saja, caranya dapat dilihat pada video berikut.

Contoh source code dapat di download pada Link berikut

Menambahkan tulisan pada progressbar

Bismillahirohmanirrohim,
Assalamu’alaikum Wr Wb.

Terinspirasi dari sebuah pertanyaan pada grup facebook tentang bagaimana cara membuat atau menambahkan tulisan pada progressbar, maka pada kesempatan kali ini saya ingin berbagi ilmu cara menambahkan property Text pada TProgressBar bawaan Delphi sehingga dapat menampilkan progress seperti gambar diatas.

Memang banyak komponen pihak ketiga yang sudah mendukung untuk ini, namun kali ini kita akan melakukannya dengan menggunkan komponen bawaan delphi.

Saya rasa untuk pengantar tidak perlu panjang lebar, kita langsung saja ke source codenya.
Bagi yang males menulis kodenya bisa langsung download contoh aplikasinya pada link dibawah.

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls;

type
  TProgressBar = class(ComCtrls.TProgressBar)
  private
    FText: string;
  protected
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  published
    property Text:string read FText write FText;
  end;
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
     with ProgressBar1 do
     begin
          Font.Color:=clWhite;
          Font.Style:=[fsBold];
          Text:='Posisi 0%';
          Color:=clNavy;
     end;
end;

{ TProgressBar }

procedure TProgressBar.WMPaint(var Message: TWMPaint);
var
   dc: HDC;
   OldBK: Integer;
   OldFont: HGDIOBJ;
   OldColor: Cardinal;
   rc: TRect;
begin
     rc:=ClientRect; // ambil posisi canvas

     rc.Left:=rc.Left+1;
     rc.Top:=rc.Top+1;
     rc.Right:=rc.Right-1;
     rc.Bottom:=rc.Bottom-1;

     dc:=GetWindowDC(Handle); // ambil handle canvas
     FillRect(dc,rc,Brush.Handle); // kosongkan area canvas

     Inherited; // Tampilkan progress asli

     if FText<>'' then // Jika property Text tidak kosong
     begin
          OldBK:=SetBkMode(dc,TRANSPARENT); // simpan mode background
          OldFont:=SelectObject(dc,Font.Handle); // simpan font
          OldColor:=SetTextColor(dc,Font.Color); // simpan warna
          DrawText(dc,PAnsiChar(FText),Length(FText),rc,DT_SINGLELINE or DT_CENTER or DT_VCENTER); // tulis teks
          SetTextColor(dc,OldColor); // kembalikan warna
          SelectObject(dc,OldFont);  // kembalikan font
          SetBkMode(dc,OldBK); // kembalikan mode background
          ReleaseDC(Handle,dc); // kembalikan handle canvas
     end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     with ProgressBar1 do
     begin
          Position:=Position+1;
          if Position>=Max then
             Position:=0;
          Text:=Format('Posisi %d%%',[Position]);
     end;
     Application.ProcessMessages;
end;

end.

 

Contoh aplikasi bisa di download di https://app.box.com/s/2esuhbgyraf777fqv7ueyz5nbfnukzv8

 

Semoga tulisan ini bermanfaat bagi saya sendiri dan teman-teman yang membutuhkan.
Aamiin.

Wassalamu’alaikum Wr Wb

Agar komponen TEdit hanya bisa diisi angka dengan acuan nama komponen

Assalamu’alaikum Wa Rohmatullohi Wa Barokatuh.
Taqobalallahu Minna Waminkum Siyamanna Wasiyamakum Taqobal Yaa Kariim.
Minal Aidin wal Faizin, Mohon maaf Lahir dan Bathin.
Selamat Hari Raya Idul Fitri 1436H.

Pada kesempatan kali ini saya ingin berbagi sedikit tips sederhana, yaitu bagaimana kita memperlakukan sebagian atau semua komponen TEdit agar hanya bisa diisi dengan angka dengan acuan nama komponennya, secara otomatis tanpa memberikan pengaturan atau koding satu persatu (yang dilakukan hanya cara penamaan komponen saja).

Untuk membedakan mana komponen TEdit yang hanya bisa diisi dengan angka dan mana yang bisa diisi secara normal, kita buat sebuah aturan yaitu semua komponen TEdit yang namanya dimulai dengan huruf “en” (huruf kecil), maka dia hanya bisa diisi dengan angka, sementara untuk nama yang lain dia akan berfungsi secara normal.

Langsung saja, caranya cukup sederhana yaitu dengan meng-override procedure KeyPress milik TEdit …

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  // Tambahkan ini
  TEdit = class(StdCtrls.TEdit)
    procedure KeyPress(var Key: Char); override;
  end;
  // Sampai sini
  TForm1 = class(TForm)
    enEdit1: TEdit;
    Edit2: TEdit;
    enEdit3: TEdit;
    Edit4: TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


{ TEdit }

procedure TEdit.KeyPress(var Key: Char);
begin
     inherited;
     if (Pos('en',Name)=1) and  // Jika nama diawali dengan "en"
        (Pos(Key,'0123456789-'#8#13+DecimalSeparator)=0) then
        Key:=#0; // hanya menerima angka dan pemisah desimal
end;


end.

Semoga bermanfaat.
Contoh source code dapat didownload di https://app.box.com/s/enc1s0d4jntrozig5dike4uz31g245qy

Cara berbagi koneksi Internet melalui jaringan WIFI pada Windows 7


Saat ini hampir semua Laptop maupun ponsel, bahkan yang harganya murahpun sudah banyak yang dilengkapi dengan koneksi Wifi.
Berbagi koneksi internet melalui Wifi tentunya bisa menjadi solusi untuk penggunakan koneksi internet di rumah
bersama-sama satu keluarga hanya dengan berlangganan satu paket internet.
Untuk keperluan ini kita memanfaat “Microsoft Virtual Wifi Miniport” yang ada di Windows 7 keatas.

Caranya cukup sederhana, hanya beberapa langkah :
1. membuat virtual Access point dengan tool netsh, dengan perintah sbb : netsh wlan set hostednetwork mode=allow ssid=”nama access point” key=”kata kunci”

2. memsharing koneksi modem ke adapter “Microsoft Virtual Wifi Miniport”

3. mengaktifkan dengan perintah : netsh wlan start hostednetwork

Dikemudian hari jika ingin berbagi koneksi internet via jaringan wifi hanya perlu melakukan langkah ke-3, sedangkan langkah 1-2 hanya dilakukan sekali saja.

Untuk lebih jelasnya bisa dilihat pada video berikut ini …
https://app.box.com/s/ik6lq1cicfndv8f56rikztc836ekob09

Semoga bermanfaat.

Membuat Realtime Search menggunakan Delphi & Firebird


Assalamu’alaikum Wr Wb,
Beberapa waktu yang lalu saya pernah berbagi Aplikasi RealTime Search menggunakan database Interbase di media sosial Facebook https://www.facebook.com/notes/komunitas-programmer-delphi-dan-interbase-indonesia/contoh-aplikasi-realtime-search-menggunakan-interbase/480900875287982.
Kali ini saya ingin berbagi aplikasi yang sama dengan menggunakan database Firebird dengan beberapa perbaikan yaitu dengan menambahkan beberapa komentar di source code sehingga lebih mudah di pelajari.
Apa fungsi aplikasi ini, tentunya sudah banyak yang tahu yaitu sebuah aplikasi yang secara otomatis akan melakukan pencarian setelah kita mengetikkan beberapa huruf tanpa menunggu kita menekan enter atau klik button.
Aplikasi ini saya buat menggunakan Turbo Delphi (Delphi 2006) dan insya Alloh tidak masalah dibuka menggunakan Delphi versi lain.
Komponen yang digunakan pada aplikasi ini adalah IBX (Interbase) bawaan delphi dan Alpha Skin.
Untuk databasenya menggunakan Firebird 2.54 yang bisa didownload gratis di situs resminya ( http://www.firebirdsql.org/en/firebird-2-5-4/ ) bila belum punya.
Untuk yang belum punya Firebird dan belum ingin menginstall Firebird bisa mencoba Firebird versi Embeded (tanpa install).
Oke dah, langsung saja sedot aplikasinya di https://app.box.com/s/5oi1saxu1ob7qo7a4nwmfbddsxh37470
Untuk versi FB Embeded silahkan download https://app.box.com/s/l58u0a18hp2gy8rxy44xn50djzlf5tfp dan copykan menjadi satu folder dengan aplikasinya.
Demikian semoga bermanfaat.
Bila ada kesulitan bisa ditulis dikolom komentar atau diposting ke grup Komunitas programmer Delphi dan Interbase Indonesia

Cara menginisialisasi manajemen user perdatabase pada Firebird 3.0

Bismillahirrohmanirrohim.
Assalamu’alaikum Wr Wb.

Lama tidak berbagi, kali ini saya ingin berbagi sedikit yang saya ketahui yaitu cara menginisialisasi manajemen user perdatabase pada Firebird 3.0.

Pada Interbase kita mengenal istilah EUA (Embedded User Authentication) dimana manajemen user (daftar user yang berhak mengakses database) dapat diatur menyatu didalam database, tidak lagi nempel pada server. Sehingga masing-masing database mempunyai user sendiri-sendiri.

Pada Firebird sebelum 3.0, manajemen user disimpan dalam server (pada file security2.fdb), ini agak merepotkan jika ada banyak aplikasi yang mengakses database yang berbeda, mungkin itulah sebabnya umumnya aplikasi yang kita jumpai sangat jarang yang menggunakan hak akses bawaan, sebagai gantinya mereka membuat sendiri table user untuk mengatur hak akses.

Pada Firebird 3.0 selain menggunakan manajemen user default yaitu menempel pada server kita diberikan alternatif untuk menyimpan manajemen user pada database file ataupun database itu sendiri (mirip dengan EUA pada Interbase).

Kalau dibandingkan dengan EUA pada Interbase, manajemen user perdatabase ini masih mempunyai kelemahan pada sisi kelemahan yaitu karena harus didaftarkan dulu di file databases.conf.

Pada EUA seseorang yang menemukan (terlalu kasar kalo disebut mencuri), praktis tidak dapat membuka database kalo tidak tahu passwordnya, sedangkan pada security perdatabase ala firebird ini database tetap bisa dibuka kalo tidak didaftarkan (unreg) pada database.conf.

Ibarat “tiada akar arangpun jadi”, dengan kelemahan diatas bukan berarti kita tidak dapat mengamankan database kita jika menggunakan Firebird.

Database akan aman selama orang yang tidak berwenang tidak dapat menjangkau secara fisik, bagaimana caranya?
Letakkan database pada partisi NTFS dan berikan hak baca/tulis selain system, lindungi server dengan firewall dan matikan filesharing terutama pada folder tempat database tersebut berada.

Banyak sekali keutungan jika kita menggunakan manajemen user bawaan database dibanding dengan membuat table user akal-akalan, diantaranya :
– Setiap user akan hanya dapat melakukan aktifitas ke database sesuai hak yang diberikan baik melalui aplikasi yang kita buat maupun menggunakan tool lain.

Dengan menggunakan table user akal-akalan ada 2 kemungkinan bila seorang user akan mengakses database tidak melalui aplikasi yaitu tidak bisa masuk sama sekali atau bisa masuk dengan bebas keseluruh area didalam database walaupun dia tidak mempunyai wewenang dalam aplikasi.

Namun semua kembali kepada anda, apa yang kita pakai tergantung selera masing-masing, apa yang menurut saya baik belum tentu menurut orang lain baik, apa yang menurut saya mudah belum tentu menurut orang lain mudah, begitu juga sebaliknya.

Okelah segini aja prakatanya, lebih jelasnya silahkan lihat pada gambar dibawah ini.
Semoga bermanfaat.

Yang butuh Firebird 3.0 dapat di download di …
http://www.firebirdsql.org/en/firebird-3-0-0-beta1/ (Installer)
http://web.firebirdsql.org/download/snapshot_builds/win/3.0/ (Snapshot Build)

Komunikasi Delphi-Excel menggunakan VBA


Bismillahirrohmanirrohim,
Assalamu’alaikum Wr Wb.
Sekitar 2 tahun (2012) yang lalu saya pernah menulis artikel “Export DBGrid ke Microsoft Excel” di grup facebook
(https://www.facebook.com/notes/komunitas-programmer-delphi-dan-interbase-indonesia/export-dbgrid-ke-microsoft-excel/390918654286205).
Alhamdulillah ternyata banyak yang tertarik dengan artikel tersebut,
unit tersebut telah didownload 457 kali pada saat postingan ini ditulis.

Kali ini saya tidak membahas tentang mengexport DBGrid/database ke Microsoft Excel namun hanya melakukan perbaikan/update pada unit yang ada dengan ditambahkan dokumentasi singkat dan contoh program.
Unit yang saya upload ada 2 versi yaitu untuk Delphi 7 dan Delphi 2006 (karena saya cuman punya 2 versi delphi itu .. hehehe)

Update Desember 2018 – Tambahan dukungan untuk Delphi 10.1-Berlin, Delphi 10.2-Tokyo 32/64bit dan Delphi 10.3-Rio 32/64bit.

Untuk menggunakan unit ini cukup mudah, copy unit yang sesuai dengan versi delphi yang anda pakai, taruh di folder lib atau jadikan satu dengan aplikasi.
Selanjutnya tambahkan VsrExcelOle pada klausa uses.

Berikut ini contoh potongan kodenya …

uses ..... VsrExcelOle;

var
  Form1: TForm1;
  ex: VsrExcel;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
     if not Assigned(ex) then
     begin
          ex:=VsrExcel.Create; // komunikasi dengan excel
          ex.Show; // tampilkan excel
     end;
     ex.New; // buat workbook baru
     ex.AutoSelect:=True; // supaya otomatis aktifkan cell setelah menulis
     ex.Write('A1',Edit1.Text); // tulis Edit1 pada Cell A1
     if CheckBox1.Checked then
        ex.Font.Bold:=True; // Tebalkan jika dicentang
     ex.Write('A2',Edit2.Text); // tulis Edit1 pada Cell A2
     if CheckBox2.Checked then
        ex.Font.Bold:=True; // Tebalkan jika dicentang
end;

Pada object VsrExcel ada property App yang dapat kita gunakan untuk memasukkan perintah VBA lainnya yang belum tersedia di unit ini.

Unit beserta dokumentasi dan contoh programnya dapat
didownload di https://app.box.com/s/f9c4ebde3a0ce86a1895
Bila ingin memperdalam VBA Excel silahkan baca di helpnya Excel, kalo gak punya bisa juga
didownload di https://app.box.com/s/1i5ivb6k04jgz0822ez1

Semoga bermanfaat

Menyimpan gambar pada field blob menggunakan firebird embeded

Bismillahirrohmanirrohim,
Assalamu’alaikum Wr Wb,

Banyak contoh aplikasi “menyimpan gambar didatabase”, baik menggunakan database desktop maupun database client server.
Namun yang banyak kita temui sebenarnya tidak menyimpan didatabase karena yang disimpan di database/table hanya nama file nya saja.
Kali ini akan kami tunjukkan cara menyimpan gambar pada database lebih tepatnya pada field type blob.

Ada mitos atau anggapakan keliru (khususnya pada database interbase/firebird, kurang tau untuk database lain) yang mengatakan bahwa menyimpan gambar di blob akan membebani database/server, database akan menjadi berat dan besar.

Kalo jadi besar bener karena memang butuh tempat untuk menyimpan gambar tersebut, tapi bukankah kalo disimpan dalam bentuk file juga butuh tempat.
Kalo jadi berat, ini yang keliru karena pada saat kita select record yang mengandung blob, dia hanya memuat blob_idnya saja yang besarnya hanya 8 byte, isi sebenarnya akan dimuat saat kita melakukan getsegmen, inipun dilakukan secara streaming per segmen dengan ukuran kecil sesuai yang ditentukan.

Untuk pembacaan dikomputer lain penyimpanan diblob ini malah lebih efisien, kalo kita menyimpan gambar di field blob kita hanya pelu mengatur firewall untuk port database saja,

namun kalo kita menyimpan hanya pathnya saja berarti kita masih perlu jalan lain untuk membaca file gambar tersebut, umumnya menggunakan file sharing.

Ada beberapa kelemahan kalo kita menggunakan file sharing, terutama masalah keamanan data.
Karena hak akses file sharing ini terpisah dengan hak akses database, hal ini memungkinkan seseorang yang tidak punya hak akses ke database bisa meng obok2 gambar, seperti menghapus atau mengganti gambar.
Masalah lain bisa aplikasi error karena alamat masih ada tapi file gambar sudah terhapus, atau sebaliknya record sudah dihapus tapi file gambar lupa/gagal dihapus akhir menjadi sampah.

Kita tidak perlu kuatir untuk menyimpan gambar atau media lain di field blob interbase/firbird karena batasannya lumayan besar yaitu 32GB untuk firebird dan 256GB untuk interbase.
Selain untuk menyimpan data binary field blob juga bisa untuk menyimpan data text.

Ukuran maksimal sebuah record pada interbase/firebird adalah 64KB, dengan adanya field blob batasan tersebut tidak perlu dirisaukan lagi karena sebuah field blob hanya menempati 8 byte pada sebuah record.

Hingga saat ini ada beberapa jenis firebird server, diantaranya classic, super server, super classic dan embeded server.

Pada contoh kali ini kita menggunakan Firebird 2.5 versi embeded server, dengan pertimbangan karena pada versi ini kita tidak perlu menginstall atau menjalan firebird untuk membaca database, dengan demikian yang bukan pengguna firebird pun bisa mencoba aplikasi ini.

Kelebihan versi ini seperti yang di sebutkan diatas adalah kita tidak perlu menginstall atau menjalan firebird untuk membaca database, disamping kelebihan tentunya juga ada kekurangan yaitu pada versi ini adalah database tidak bisa dibaca bersama2 atau dibaca dari komputer lain.

Untuk databasenya sendiri tidak ada perbedaan pada masing-masing versi, jadi database yang kita buat untuk client server juga bisa dibaca versi embeded dan sebaliknya.

Selain penggunaan blob pada aplikasi ini juga ditunjukkan teknik pembuatan tumbnails secara otomatis, disini gambar disimpan pada 2 field blob, 1 field untuk menyimpan gambar asli, 1 field lagi untuk menyimpan gambar yang dikecilkan.

Lho .. bukannya jadi lebih boros space …. memang, namun pemborosan ini akan tergantikan dengan performa yang bagus.
Dengan adanya field tumbnail ini maka gambar akan tampil lebih cepat dan hemat bandwidth, kita juga masih mempunyai gambar ukuran asli nantinya mungkin dibutuhkan untuk melihat detail atau untuk keperluan pencetakan.

Disini ditunjukkan juga penggunaan Actionlist untuk meminimalkan penggunaan koding, beberapa fungsi kontrol database seperti insert, update, post, delete kita menggunakan Actionlist sehingga tidak perlu bikin koding sendiri.

Pada contoh ini kita gunakan FIBPlus sebagai komponen koneksi databasenya, menurut pengalaman kami FIBPlus adalah yang paling banyak mendukung fitur2 interbase dan firebird.
Selain FIBPlus kita juga bisa menggunakan komponen lain seperti IBExpress, IBObject, Zeos dan DBExpress, untuk Ado tidak kami rekomendasikan karena Ado sifatnya umum dan hanya mendukung fitur2 umum saja.

Disini juga ditunjukkan penggunaan skin internal pada alpha skin sehingga kita tidak perlu menyertakan file skin saat mendistribusikan.
Untuk menampilkan gambar asli kita gunakan form lain yang dimuat secara runtime dengan tujuan menghemat resource karena memang tidak selalu dibutuhkan.

Alamat database juga dimuat secara runtime yang diambil dari file FBBlobPictureEmbed.ini sehingga mudah untuk mengganti tanpa harus compile ulang.

Aplikasi ini juga bisa untuk membaca versi client server dengan mengganti file ini tersebut.
Untuk mendistribusikan secara portable kita cukup menyertakan semua file yang ada di folder dist dan tidak perlu menginstall firebird.

Catatan:
Bagi teman-teman yang sudah mencicipi versi awal yang pernah saya share secara private, ada sedikit bug bahwa tumbnails yang dibuat ukurannya masih sama dengan ukuran sebenarnya belum diperkecil, solusinya mudah sekali cukup hapus field “SmallFoto” kemudian baca dengan aplikasi yang baru maka dia akan bikin field dan generate tumbnails secara otomatis.

Contoh aplikasi lengkap dengan source code dapat di download di
https://app.box.com/s/pa67uv2mfhp0qnykhxyq

Komponen 3Party yang dibutuhkan :
– FIBPlus
– Alphaskin

Bagi yang gak pake FIBPlus jangan kuatir

Disediakan juga versi Zeos bagi yang tidak menggunakan FIBPlus,
Contoh aplikasi lengkap dengan source code dapat di download di
https://app.box.com/s/cgow5tfuiyxpmk9cjzj0

Juga ada versi IBX (Interbase Express bawaan delphi),
Contoh aplikasi lengkap dengan source code dapat di download di
https://app.box.com/s/fkogbmj0ficnlxoc9zb8

Demikian Semoga bermanfaat.