Lazarus, Cross Platform Free Delphi IDE Like

on Rabu, 30 September 2009

Lazarus adalah Rapid Application Development (R.A.D) tool untuk compiler Free Pascal yang dapat berjalan pada lingkungan Linux, Mac OS, BSD, dan juga Windows. Oleh karena itu, tidak seperti java yang memiliki slogan "Write Once, Run anywhere" yang mana memerlukan JVM (Java Virtual Machine) sebelum dapat menjalankannya, maka Lazarus memiliki slogan "Write Once, Compile Anywhere". Artinya, jika anda ingin membuat aplikasi yang sama baik di lingkingan windows, Linux, Mac, atau lainnya, anda hanya perlu meng-compile source dari aplikasi yang anda buat dengan Lazarus untuk selanjutnya didistribusikan pada Os (Operating System) yang anda inginkan.

Dokumentasi, installer (paket-paket), dan hal lain yang berhubungan dengan Lazarus dapat diperoleh dari situs resmi Lazarus, yaitu di http://www.lazarus.freepascal.org/. Sedangkan, untuk dokumentasi, installer (paket-paket), dan hal-hal lain yang berhubungan dengan Free Pascal dapat anda peroleh dari situs resmi Free Pascal, yaitu http://www.freepascal.org/.

Komponen library dari Lazarus menggunakan lisensi GNU LGPL (Lesser General Public License) yang sudah dimodifikasi, sedangkan untuk IDE (Integrated Development Environtment) Lazarus menggunakan lisensi GNU GPL. Yang membuat Lazarus menjadi semakin mendapat popularitas adalah anda dapat membuat aplikasi apapun dengan lazarus, baik itu berupa aplikasi Komersial/ Berbayar. Yang perlu diingat andalah, Jika anda membuat aplikasi komersial/ berbayar, anda diwajibkan menyertakan kalimat "Compiled by : Lazarus" atau "Powered by : Lazarus", etc pada About box aplikasi yang anda buat.


Lazarus IDE (Source Editor)


Selamat Mencoba & Semoga bermanfaat.

Reshi Mahendra
Read more >>

Runtime Dinamic Form (Form Dinamis)

on Selasa, 29 September 2009


Jika karena suatu hal (misal, untuk memangkas memory yang digunakan, agar aplikasi lebih ringan, dan sebagainya) anda ingin membuat form secara dinamis pada aplikasi anda, atau anda ingin memanggil Form anda hanya dengan mengetahui Nama Class-nya saja, maka penggalan kode/ source code dibawah adalah untuk anda.

Penggalan dibawah ini terdiri dari 2 (dua) unit, yakni "Main_U.pas" sebagai Main Form-nya dan "FormDinamis_U.pas" sebagai Form yang akan dibuat secara runtime/ dinamis.

Listing program Main_U.pas :

unit Main_U;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

//Dinamic form show hanya dengan mengetahui nama kelasnya
procedure ExtShowForm(aFormClass:TFormClass);

var
Form1: TForm1;

implementation

uses FormDinamis_U; // <== Tambahkan Unit FormDinamis anda {$R *.dfm} procedure ExtShowForm(aFormClass:TFormClass); begin with aFormClass.Create(Application) do try Caption := 'Disini diisi Caption Form'; ShowModal; //Tampilkan Form dengan Modal actif finally Release; // Hapus memory end; end; procedure TForm1.Button1Click(Sender: TObject); begin ExtShowForm(TForm2); end; end.


dan Listing untuk FormDinamis.pas (Form Kosong yang hanya berisi label) :

unit FormDinamis_U;

interface

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

type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation
{$R *.dfm}

end.

Reshi Mahendra
Read more >>

Execute Query dengan Thread (Thread query)

on Senin, 28 September 2009

Kadang, karena suatu hal kita ingin memakai/ membuat procedure yang mampu melakukan eksekusi query dengan menggunakan thread agar prosesnya terpisah dari main thread (thread aplikasi) untuk alasan kecepatan eksekusi. Ini dapat terjadi bila anda loading data yang lumayan besar dan menampilkannya dalam grid. Berikut ini adalah contoh thread untuk mengeksekusi query (general query executor) yang bersifat dinamis.
unit Test;
unit Test;
interface
uses
  Windows, IBQuery, …, … ;   
  //Tambahkan Disini No : 1
Type
  TQryRefreshThread = class(TThread)
  . . .
  End;
  . . .
Type
  TtestForm : Class(TForm)
  . . .
  End;
  //Tambahkan Disini No : 2  

  Var
  . . .
Implementation
{$R *.dfm}
  //Tambahkan Disini No : 3

Tambahkan kode dibawah pada deklarasi tipe
Pada bagian


Code No.1 :

{mmmmm   THREAD QUERY   mmmmm}
type
 TQryRefreshThread = class(TThread)
 private
   AIBQuery : TIBQuery; // Ganti TIBquery sesuai dengan SQL Component yang anda gunakan

   ACommand : String;
   procedure RefreshData;
 protected
   procedure Create(const FIBQuery : TIBQuery;const FCommand: string);
   procedure Execute;override;
 public
 end;



Tambahkan deklarasi procedure dibawah setelah deklarasi tipe (diatas deklarasi var /variable global) pada unit anda.

Code No. 2:
procedure ExecThreadSql(AIBQuery: TIBQuery; ACommand: String);


Tambahkan kode dibawah setelah bagian Implementation

Code No. 3 :

{ TRefreshQryThread }
procedure TQryRefreshThread.Create(const FIBQuery: TIBQuery;
 const FCommand: string);
begin
 inherited Create(true);
 AIBQuery := FIBQuery;
 ACommand := FCommand;
 Resume;
end;

procedure TQryRefreshThread.Execute;
begin
 //inherited;
 FreeOnTerminate := true;
 Synchronize(RefreshData);
end;

procedure TQryRefreshThread.RefreshData;
begin
 with AIBQuery do begin
   Close;
   SQL.Clear;
   SQL.Add(ACommand);
   Prepare;
   Open;
 end;
end;


{mmmmm   Procedure Untuk menyederhanakan pemanggilan ThreadQuery   mmmmm}
procedure ExecThreadSql(AIBQuery: TIBQuery; ACommand: String);
var
 MyThread : TQryRefreshThread;
begin
 try
   MyThread := TQryRefreshThread.Create(AIBQuery, ACommand);
   with MyThread do begin
     FSqlCommand := ACommand;
     FIBQry := AIBQuery;
     if MyThread.Suspended then
       MyThread.Resume;
   end;
 except On E:Exception do
   raise Exception.Create(e.Message);
 end;
end;



Cara penggunaanya :

ExecThreadSql(BarangQry, 'SELECT Kode,Nama,Stok,Harga FROM TabelBarang ORDER BY Nama');
Read more >>

Link Exchange

on Sabtu, 26 September 2009

Salam Kenal,

Seperti yang kita ketahui, link exchange/ pertukaran link/ pertukaran alamat situs/ web/ blog merupakan salah satu cara untuk dapat meningkatkan traffic/ jumlah pengunjung yang mengunjungi situs kita. Tetapi, untuk melakukan pertukaran link/ exchange link, sangat disarankan pertukaran tersebut dilakukan dengan situs/ blog yang "relevan" dengan content (isi) situs/ blog kita.

Jika anda berminat, Anda bisa melakukan pertukaran link dengan saya. Untuk melakukannya, ikutilah langkah-langkah berikut :

  1. Copy kode html dikotak dibawah ini


    Tampilan pada situs anda akan seperti dibawah ini
    delphi,firebird,delphifirebird,delphi firebird

  2. Tambahkan kode html yang anda copy tersebut pada situs/blog anda
  3. Post comment sebagai notifikasi bahwa anda ingin bertukar link/ (melakukan Link Exchange)dengan saya.
  4. Saya akan me-review situs/ blog anda sebelum saya approve. Maaf sebelumnya, saya hanya akan approve situs/ blog yang relevan dengan conten blog saya. Harap maklum.

Salam,


Reshi Mahendra
Read more >>

Free Delphi Interbase/Firebird Database Component

IBX (Interbase eXpress)
IBX adalah component bawaan dari Delphi (sehingga langsung ada pada component palette Delphi anda, oleh karena itu pada artikel ini “dianggap” free). Anda dapat menggunakan IBX pada aplikasi database yang anda buat dengan catatan extention database file anda adalah *.gdb (default interbasedatabase extention) dan bukan *.fdb (default firebird database extention). Ini berlaku hanya “Jika” anda mengisikan Property DatabaseName nya dengan memanggil open dialog DatabaseName pada property editor tersebut. Tetapi jika anda mengisikan DatabaseName-nya dengan mengeik secara manual pada property editor, anda dapat menggunakan baik Extention *.ib, *.gdb maupun *.fdb.

MDO (Mercury Database Object)
http://www.mdolib.com/index.en.html
Mercury Database Object (MDO) adalah project open source yang dibuat menggunakan FreeIBComponent buatan Greg Deatz. Fungsi-fungsi yang ada pada MDO hampir mirip dengan fungsi-fungsi yang ada pada IBX. Jika anda baru bermigrasi dari IBX/ menggunakan Interbase, ada baiknya anda mencoba component ini karena kemiripannya dengan IBX. Sayang, perkembangan component ini sangatlah lambat. Sebagai catatan, versi MDO terakhir adalah versi RC2 yang dirilis pada February 2006.

UIB (Unified Interbase)
http://www.progdigy.com/files/UIB21.zip
UIB/ Unified Interbase, adalah project Open Source yang terlahir dari kebutuhan akan component yang dapat menjadi media koneksi Interbase/Firebird/yaffil database pada multithreading environtment. UIB memiliki dukungan terhadap Borland Compliance conversion API untuk Interbase, Firebird dan Yaffil. Selain di Delphi, UIB juga dapat digunakan pada Freepascal/ Lazarus.

FBLib
http://fblib.altervista.org
FBLib Firebird Library adalah project Open source. Sayangnya, component ini tidak data aware. Mendukung Free Pascal / Lazarus.


ZeosLib
http://sourceforge.net/projects/zeoslib
ZeosLib adalah project Open Source. Component zeos memiliki dukungan terhadap banyak database engine, seperti MySQL, Oracle, PostgreSQL, SQLite, Dan sebagainya. Versi terakhir saat artikel ini ditulis adalah versi 6.6.5 (stable). Component ini sangat direkomendasikan jika anda sudah terbiasa membuat aplikasi business/ database skala besar dengan arsitektur Client/Server. Akses data relative lebih cepat dibandingkan component lainnya. Dan juga, memiliki dukungan untuk dapat dijalankan pada Freepascal/ Lazarus IDE.



Semoga Membantu,

Reshi Mahendra
Read more >>

Dasar Interbase/Firebird Database Server (Bagian II)

on Jumat, 25 September 2009

III. Management Database

A. Via Command Line

Catatan :

Untuk membuka Command Line, pilih ‘Start->Run’, kemudian ketik ‘cmd’ (tanpa tanda petik) lalu klik tombol ‘Ok’.

Sebelum melakukan operasi pada Command Line, pertama-tama, tambahkan terlebih dahulu path lokasi instalasi Firebird kedalam Path system environtment computer anda. Untuk menambahkan Path Firebird kedalam Path system environtment, Lakukan langkah-langkah seperti dibawah ini :

  1. Klik kanan pada icon ‘My Computer->Properties’ yang ada pada desktop atau dapat juga dengan meng-klik ‘Start->control Panel->System’.
  2. Pilih Tab ‘Advanced’ dan klik ‘Environtment Variables’.


  1. Pada Kotak ‘User Varibles for xxx’ (dimana xxx adalah nama computer anda), apabila variable ‘PATH’ belum ada, maka klik tombol ‘New’ dan masukkan ‘PATH’ (tanpa tanda kutip) pada isian ‘Variable Name’, dan lokasi directory bin Firebird (missal anda menginstal Firebird pada lokasi ‘C:\Program Files\Firebird\Firebird_2_0’, maka lokasi directory bin Firebird Server adalah ‘C:\Program Files\Firebird\Firebird_2_0\bin’ tanpa tanda kutip) anda pada isian ‘Variable Value’. Sedangkan bila variable ‘PATH’ sudah ada, klik ‘PATH’, kemudian tekan tombol ‘Edit’. Setelah itu, tambahkan lokasi directory bin Firebird Server pada kotak isian ‘Variable Value’. Ingat, untuk memisahkan variable value, gunakan semi colon (tanda titik koma) pada akhir PATH yang sudah ada, missal (c:\php;C:\Program Files\Firebird\Firebird_2_0\bin)


1) Management User

Secara default SuperUser pada IB/Fireberd adalah ‘sysdba’ dan password defaultnya adalah ‘masterkey’ (tanpa tanda kutip). Untuk alasan keamanan, ubahlah password SuperUser anda setelah instalasi IB/Firebird. Dalam melakukan operasi penambahan/pengubahan/penghapusan data user, dibutuhkan hak akses SuperUser atau user yang memiliki hak akses untuk menambah/mengubah/menghapus data yang ada pada table RDB$USERS pada database security2.fdb (pada firebird).

Dalam melakukan operasi management user, dibutuhkan program gsec.exe yang ada pada directory bin IB/Firebird. Untuk melakukan operasi ini, buka Command Line dan tulislah:

gsec -user A -pass B – C -pw D

Penjelasan :

· parameter –user A adalah user yang melakukan operasi. Dalam hal ini yang melakukan operasi adalah user yang bernama A.

· parameter –pass B adalah password user yang melakukan operasi. Dalam hal ini password A adalah B

· parameter C adalah operasi yang dikenakan pada user C dimana <op> adalah operasi yang dilakukan.

Pilihan <op> adalah :

  • add untuk melakukan penambahan user ,
  • mo untuk mengubah user (modify), dan
  • del untuk menghapus user (delete).

Dalam hal ini, operasi yang dilakukan dikenakan pada user yang bernama C.

· Parameter –pw D adalah password yang digunakan oleh C dimana D adalah password dari C. parameter ini hanya diperlukan pada operasi penambahan dan pengubahan user saja. Untuk operasi penghapusan user, parameter ini tidak diperlukan.

Missal :

· Operasi untuk menambah user dengan nama user1 dan password pwuser1

gsec -user sysdba -pass masterkey -add user1 -pw user1

· Operasi untuk mengubah password user dengan nama user1 dan password barunya adalah user123

gsec -user sysdba -pass masterkey -add user1 -pw user1

· Operasi untuk menghapus user dengan nama user1

gsec -user sysdba -pass masterkey -del user1

2) Operasi Database

i) Membuat Database & Koneksi Database

Untuk membuat database, diperlukan program isql.exe yang ada pada directory bin IB/Firebird. Dalam pembuatan database, usahakan sebisa mungkin tidak menggunakan superuser (sysdba), karena sysdba memiliki control penuh pada IB/Firebird Server anda serta dapat melakukan apa saja pada server IB/firebird, termasuk merusak struktur, isi, serta data-data penting yang ada pada database anda. Gunakanlah sysdba hanya untuk management user saja.

Membuat Database

Untuk membuat database baru, bukalah terlebih dahulu Command Line, kemudian ketik ‘isql’ (tanpa tanda petik), lalu tekan enter.


Setelah muncul prompt SQL> , ketik

CREATE DATABASE ‘A’ page_size 1234 user ‘B’ password ‘C’;

Penjelasan :

    • A adalah nama database beserta full path nya, missal : c:\data\test.fdb atau d:\my data\test.gdb
    • 1234 adalah ukuran page size dari database. Nilai – nilai page size dapat diisi dengan 1024,2048,4096,8192,16384, dan kelipatannya. Secara default, ukuran dari page size adalah 1024.
    • B adalah nama user yang membuat (pemilik) database.
    • C adalah password user pembuat database.

Contoh:

CREATE DATABASE ‘c:\data\POS.fdb’ page_size 1024 user ‘user1’ password ‘user1’;

Kemudian klik Enter.

Maka akan terbentuk database bernama POS.fdb dengan lokasi di c:\data (di drive C pada directory data).

Koneksi ke Database

Untuk koneksi ke database, pada isql, ketik

CONNECT 'A' USER 'B' PASSWORD 'C';

Penjelasan :

· A adalah nama beserta lokasi lengkap (full path) dari database

· B adalah nama user yang akan melakukan koneksi kedalam database.

· C adalah password user yang akan melakukan koneksi.

Contoh :

CONNECT 'c:\data\POS.fdb' USER 'user1' PASSWORD 'user1';

ii) Backup/Restore

Backup dapat diartikan sebagai salinan dari file program atau dalam hal ini file database yang dibuat untuk memberi jaminan agar data yang ada tidak hilang atau terhapus apabila terjadi sesuatu pada file aslinya.

Sedangkan Restore dapat diartikan sebagai proses pengembalian file/data dari file backup yang dibuat sebelumnya untuk merecovery kerusakan file asli atau mengembalikan data file asli sesuai dengan isi data file asli saat dibuatnya file backup.

Untuk melakukan backup/restore database, diperlukan program gbak.exe yang ada pada directory bin IB/Firebird.

Secara umum untuk melakukan standard backup/restore, dapat dilakukan dengan mengeksekusi perintah berikut pada Command Line:

Gbak A –[b] B –user C –pas D

Penjelasan

Gbak adalah program yang dipanggil untuk melakukan operasi backup/restore

A adalah file input. Untuk backup, file inputnya berupa file IB/Firebird database (Extensinya : *.gdb | *.fdb | *.ib). Sedangkan untuk operasi restore inputnya berupa file backup (Extensinya : *.gbk | *.fbk | *.ibk).

[b] adalah operasi yang dilakukan. Operasi-operasi dalam penggunaan gbak adalah

-B(ACKUP_DATABASE) backup database ke dalam file

-BU(FFERS) override page buffers default

-C(REATE_DATABASE) membuat database dari backup file

-CO(NVERT) backup external files sebagai tabel

-E(XPAND) tanpa kompresi data

-FA(CTOR) blocking factor

-G(ARBAGE_COLLECT) mencegah data sampah

-I(NACTIVE) mematikan indek saat restore

-IG(NORE) mengabaikan bad checksums

-K(ILL) restore tanpa membuat shadows

-L(IMBO) abaikan transaksi dalam limbo

-M(ETA_DATA) hanya backup metadata

-MO(DE) "read_only" or "read_write" access

-N(O_VALIDITY) tidak merestore kondisi validitas database

-NT Format backup file Non-Transportable

-O(NE_AT_A_TIME) restore satu tabel saja

-OL(D_DESCRIPTIONS) simpan deskripsi metadata yang lama

-P(AGE_SIZE) override page size default

-PAS(SWORD) Firebird password

-R(ECREATE_DATABASE) [O(VERWRITE)] membuat (atau mengganti bila OVERWRITE digunakan) database from backup file

-REP(LACE_DATABASE) mengganti database dari file backup

-RO(LE) Firebird SQL role

-SE(RVICE) gunakan manager service

-T(RANSPORTABLE) transportable backup-data dlm format XDR

-USE_(ALL_SPACE) tanpa membuat cadangan untuk versi record

-USER Firebird user name

-V(ERIFY) laporkan tiap aksi yang diambil

-Y redirect/suppress status message output

-Z cetak version number

Contoh :

Backup :

Gbak c:\POS.fdb –b c:\POS_2007_aug_16.fbk –user user1 –pas user1

Perintah diatas akan membuat file backup yang bernama POS_2007_aug_16.fbk yang terletak di drive c:\ dari file database yang bernama POS.fdb yang terletak pada drive c:\. Operasi backup ini dilakukan oleh user1 dengan password dari user1 adalah user1.

Restore :

Gbak c:\POS_2007_aug_16.fbk –c c:\POS_Restore.fdb –user user1 –pas user1

Perintah diatas akan membuat file database yang bernama POS_Restore.fdb yang terletak pada drive c:\. Dimana POS_Restore.fdb ini dibuat dari backup file bernama POS_2007_aug_16.fbk yang terletak di drive c:\. Operasi ini dilakukan oleh user yang bernama user1 dengan passwordnya adalah user1 juga.

3) Domain

Domain dapat diartikan sebagai suatu tipe data global dalam suatu database IB/Firebird. Sebenarnya, domain merupakan tipe data standar yang mengalami kostumisasi sesuai dengan kebutuhan. Misal, untuk membuat standarisasi pengkodean dengan tipe karakter dengan panjang 9 karakter, maka dapat dibuat domain khusus untuk pengkodean dengan panjang 9 karakter tanpa harus mendeklarasikan ulang pendefinisian panjang dan tipe datanya tiap kali mendefinisikan kolom yang sama (terutama untuk secondary key pada tabel detail).

Deklarasi umum domain adalah sebagai berikut:

CREATE DOMAIN nama_domain AS tipe_data DEFAULT nilai_default CHECK [pembatasan_nilai]

Nama_domain adalah nama dari domain yang akan dibuat.

Tipe_data adalah tipe data domain. Tipe-tipe ini dapat bernilai :

Smallint

Integer

Bigint (Firebird v.2.0.1 keatas)

Float

Double Precission

Date

Time

Timestamp

Decimal

Numeric

Char

Varchar

Blob



Reshi Mahendra


Read more >>

Dasar Interbase/Firebird Database Server (Bagian I)

on Kamis, 24 September 2009

I. Pendahuluan

Borland Interbase Server (Selanjutnya kita sebut IB saja) adalah database server yang sangat handal dan sangat terkenal dikalangan programmer yang menggunakan Borland Delphi sebagai alat untuk mengembangkan aplikasi database-nya. Firebird Server (selanjutnya kita sebut Firebird saja) bisa dibilang sebagai “adik sepupu” dari IB karena fitur dan perluasan bahasa SQL-nya sangat mirip dengan IB. Firebird juga dapat diartikan sebagai versi free dari IB. Dalam tutorial ini, saya akan coba menjabarkan bagaimana cara instalasi Firebird, Administrasi database, koneksi ke IB/Firebird via command line(menggunakan MS-DOS/ cmd.exe) dan via GUI (Graphical User Interface). Khusus untuk koneksi database via GUI, kita akan menggunakan IBO Console yang dapat didownload di situs resmi firebird (www.ibphoenix.com). Interface dari IBO Console sangat mirip dengan IBConsole (GUI tool IB yang langsung terinstall saat anda melakukan instalasi IB server secara default). IBO Console diperlukan disini karena Firebird Server secara default tidak memiliki console GUI untuk administrasi dan management databasenya, disamping itu fitur IBO Console lebih lengkap (menurut opini saya pribadi J) dari IBConsole bawaan IB, dan yang paling penting IBO Console adalah Freeware J. Selain itu, saya juga akan membahas bagaimana cara untuk membuat database, table, view, generator, stored procedure dan trigger, dan sebagainya.

II. Instalasi Firebird

Sebelum memulai tutorial ini, anda harus sudah memasang IB/Firebird pada komputer anda. Bila anda sudah menginstal Delphi (Delphi 6 atau yang lebih baru) Profesional/ Enterprise edition dengan mode instalasi default, maka IB sudah terinstalasi pada system anda. Untuk menginstal Firebird, anda harus mendownloadnya terlebih di situs resminya (www.ibphoenix.com). Apabila anda belum memiliki binary/ installer Firebird Server, anda dapat mendownloadnya di situs resmi Firebird (www.ibphoenix.com).

Dalam tutorial ini, saya menggunaka Firebird Server versi 2.0.1 dengan platform Microsoft Windows XP SP1.

Setelah Firebird berhasil anda download, maka lakukanlah pemasangan Firebird dengan langkah-langkah seperti dibawah ini :

  1. Klik ganda pada binary/ setup file Firebird yang baru anda download.

Klik OK untuk melanjutkan proses instalasi.

  1. Setelah muncul Welcome Screen Instalasi Firebird, Klik next.

  1. Setelah muncul jendela ‘License agreement’, centang pilihan ‘I accept the agreement’, kemudian klik ‘Next’.

  1. Pilih lokasi instalasi Firebird anda (Defaultnya adalah C:\Program Files\Firebird\Firebird_2_0), kemudian klik ‘Next’. Pada pilihan ‘Install Component’, pilihlah pilihan-pilihan yang ada seperti gambar dibawah ini, klik ‘Next’.
  1. Bila pilihan additional task sudah muncul, isilah pilihan-pilihannya seperti gambar dibawah ini, kemudian klik ‘Next

Kemudian klik install. Tunggu sampai instalasi selesai. Bila jendela konfirmasi untuk me reboot/ restart computer muncul, klik Yes/ Ok .


Bersambung ke Dasar Interbase/Firebird Database Server (Bagian II)


Reshi Mahendra
Read more >>

Contoh Pemrograman Component dengan Delphi

Dalam pemrograman berbasis rad, component adalah hal yang mutlak yang harus diketahui. Borland delphi sangat kaya akan component yang bisa dipakai untuk mengembangkan aplikasi. Hal yang unik dari delphi adalah component delphi dibuat dengan delphi, sehingga delphi sangat flexible.

Dari sisi sudut pandang, pemrograman component sangatlah beda dengan pemrograman aplikasi secara umum. Kalau pemrograman aplikasi, orientasinya dititik beratkan pada pemakai akhir (end user) yang akan menggunakan aplikasi tersebut, yaitu bagaimana caranya agar user mudah mengoperasikan aplikasi, fleksibel, dan sebagainya. Sedangkan sudut pandang component writer/programmer adalah bagaimana caranya agar programmer yang akan memakai component-nya dapat memenuhi kebutuhan sang programmer. Sehingga sang programmer pemakai component tersebut tidak perlu lagi menulis kode program (yang mungkin sangat kompleks) yang sama sampai berulang-ulang hingga dapat menghemat waktu, tenaga dan biaya.

Di bawah ini adalah contoh komponent sederhana turunan dari TEdit,Saya namakan TReshiEdit. Fitur yang saya contohkan disini adalah untuk mengubah warna EditBox saat terfokus, dan kembali ke warna sebelumnya saat fokus meninggalkan EditBox, Serta pilihan fungsi edit, yakni untuk input telephone, input normal, dan input angka. Disini juga dikenalkan fungsi propercase, yakni untuk mengubah semua huruf awal dari sebuah kata menjadi huruf besar.



Source Code :

{**********************************************************************
Author : I GEDE MADE RESHI MAHENDRA
Copyright © 2005-2009
E-mail: reshimhendra@gmail.com
Web: http://reshimahendra.goldeye.info
Component Name : TReshiEdit
Feature : - Edit Mode : * esNormal, just like TEdit
* esPhone, only receive Numeric and
special caracter for phone only (E.g '(',')',
'-','+',Backspace,and Return)
- Alignment implementation TEdit
- Draw color OnEnter an OnExit
- Check if the edit is blank or empty

**********************************************************************}
unit TReshiEdit;

interface

uses
SysUtils, Spin, Graphics, Buttons, Messages,Classes, Controls, ComCtrls, StdCtrls, Forms, WinProcs;

Const
AuthorName = 'Copyright(C) I Gede Made Reshi Mahendra (mahendra.reshi@gmail.com)';

{******************
** Reshi EDIT **
******************}
type
//Mode Caracter Case
TCaseMode = (cmNormal, cmProperCase, cmLowerCase, cmUpperCase);

//Mode Type Edit
TEditStyle = (esNormal,esPhone, esNumeric);

TReshiCustomEdit = class(TCustomEdit)
private
FAlignment: TAlignment;
FEnterLikeTab : boolean;
FFocusedColor: TColor;
FCaseMode: TCaseMode;
FMouseINColor: TColor;
FMouseOutColor: TColor;
FMousePos : Boolean;
FEditStyle: TEditStyle;
FUnFocusedColor: TColor;
FCanEmpty: Boolean;
FReadOnlyColor: TColor;
function GetAbout: String;

procedure setReadOnlyColor(const Value: TColor);

procedure SetEditStyle(Value: TEditStyle);
procedure setAlignment(Value: TAlignment);
procedure setFocusedColor(Value: TColor);
procedure setCaseMode(Value: TCaseMode);
procedure setUnFocusedColor(Value: TColor);
procedure setCanEmpty(Value: Boolean);
protected
procedure DoEnter;override;
procedure DoExit;override;
procedure KeyPress(Var Key:Char);override;
procedure KeyDown(var Key: Word; Shift: TShiftState);override;

//CustomProperty
property Alignment : TAlignment
read FAlignment write setAlignment default taLeftJustify;
property FocusedColor : TColor
read FFocusedColor write setFocusedColor default clSkyBlue;
property UnFocusedColor : TColor
read FUnFocusedColor write setUnFocusedColor default clWhite;
property CharCase : TCaseMode
read FCaseMode write setCaseMode default cmNormal;
property EnterLikeTab : boolean
read FEnterLikeTab write FEnterLikeTab;
property EditStyle : TEditStyle
read FEditStyle write setEditStyle default esNormal;
property ReadOnlyColor : TColor
read FReadOnlyColor write setReadOnlyColor default clSkyBlue;


public
procedure CreateParams (var Params: TCreateParams);Override;
constructor Create (AOwner : TComponent);override;
destructor Destroy;override;

//Additional procedure/ function
function IsBlank:boolean;
published
property About : String
read GetAbout;
property CanEmpty : Boolean
read FCanEmpty write setCanEmpty default True;

End;

TReshiEdit = Class(TReshiCustomEdit)
published
Property About; property Alignment;
property FocusedColor; property UnFocusedColor;
property EnterLikeTab; property CharCase;
property EditStyle; property PasswordChar;
property Text; property Color;
property DragCursor; property DragMode;
property Enabled; property Font;
property HideSelection; property ParentColor;
property ParentCtl3D; property ParentFont;
property ParentShowHint; property PopupMenu;
property ReadOnly; property ShowHint;
property TabOrder; property TabStop;
property Visible; property MaxLength;
property ReadOnlyColor;

property OnChange; property OnClick;
property OnDblClick; property OnDragDrop;
property OnDragOver; property OnEndDrag;
property OnEnter; property OnExit;
property OnKeyDown; property OnKeyPress;
property OnKeyUp; property OnMouseDown;
property OnMouseMove; property OnMouseUp;
end;

Procedure Register;

implementation

{ TReshiEdit }

procedure Register;
begin
RegisterComponents('ReshiMahendra', [TReshiEdit]);
end;

constructor TReshiCustomEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCanEmpty := True;
BevelKind := bkFlat;
BorderStyle := bsNone;
FFocusedColor := clSkyBlue;
FUnFocusedColor := clWhite;
FReadOnlyColor := clSkyBlue;
FMousePos := true;
FMouseINColor := clInfoBk;
FMouseOutColor := clWhite;
ControlStyle := ControlStyle - [csSetCaption];
Height := 21;
FAlignment := taLeftJustify;
FEnterLikeTab := true;

//Disable popup
PopupMenu := nil;
end;

procedure TReshiCustomEdit.setCanEmpty(Value: Boolean);
begin
if FCanEmpty<>value then begin
FCanEmpty := Value;
Invalidate;
end;
end;

procedure TReshiCustomEdit.doExit;
begin
Color := FUnFocusedColor;

Text := Trim(Text);
Invalidate;

inherited doExit;
end;

procedure TReshiCustomEdit.KeyDown(var Key: Word; Shift: TShiftState);
var
FEditTemp : TCustomForm;
begin
inherited KeyDown(Key,Shift);

if (Key = 13) and FEnterLikeTab then
begin
FEditTemp := GetParentForm(Self);

SendMessage(FEditTemp.Handle, WM_NEXTDLGCTL, 0, 0);
Key := 0;
exit;
end;

end;


///////////////////////////////////
// OVERRIDING THE KEYPRESS EVENT //
///////////////////////////////////
procedure TReshiCustomEdit.keyPress(Var Key:Char);
Function IsNumeric : boolean;
begin
Result := (Key in ['0'..'9']) or (key =#13) or (Key = #8) //numeric,CariageReturn & BackSpace
end;
begin
inherited keyPress(key);
if (FEditStyle = esPhone) then begin
If not((IsNumeric)
Or (Key = #32) //space
or (Key = #40) // '('
or (Key = #41) // ')'
or (Key = #43) // '+' for country code
or (Key = #45)) then // '-'
Key := #0;
end else if (FEditStyle = esNumeric) then begin
if not IsNumeric then Key := #0;
end;



/////////////////////////////////////////////////////
// SET THE CASE MODE AFTER USER CLICK THE KEYBOARD //
/////////////////////////////////////////////////////
case FCaseMode of
cmProperCase : begin
if (SelStart = 0) or (Text[SelStart] = ' ') then
Key := AnsiUpperCase(Key)[1];
end;
cmUpperCase : begin
Key := AnsiUpperCase(Key)[1];
end;
cmLowerCase : begin
Key := AnsiLowerCase(Key)[1];
end;
end;

Invalidate;
end;

////////////////////////////
// CHANGE THE EDIT STYLE //
////////////////////////////
procedure TReshiCustomEdit.SetEditStyle(Value: TEditStyle);
begin
if (FEditStyle <> value) then begin
FEditStyle := Value;

if (FEditStyle = esPhone) then begin
Alignment := taLeftJustify;
Text := '(999)-99999999';
end
else if (FEditStyle = esNormal) then begin
Alignment := taLeftJustify;
Clear;
end else if (FEditStyle = esNumeric) then begin
Alignment := taRightJustify;
Clear;
end;
end;
end;

destructor TReshiCustomEdit.Destroy;
begin
inherited Destroy;
end;

procedure TReshiCustomEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[TAlignment] of Word = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or Alignments[FAlignment];
end;

procedure TReshiCustomEdit.setAlignment(Value: TAlignment);
var
theSelStart, theSelLength : Byte;
begin
if FAlignment <> Value then
begin
theSelStart := SelStart;
theSelLength := SelLength;
FAlignment := Value;
RecreateWnd;
SelStart := theSelStart;
SelLength := theSelLength;
end;
end;

procedure TReshiCustomEdit.setUnFocusedColor(Value: TColor);
begin
if FUnFocusedColor <> value then begin
FUnFocusedColor := Value;
invalidate;
end;
end;

procedure TReshiCustomEdit.doEnter;
begin
Color := FFocusedColor;
Text := Trim(Text);
Invalidate;

inherited doEnter;
end;


procedure TReshiCustomEdit.setFocusedColor(Value: TColor);
begin
if (FFocusedColor <> value) then
begin
FFocusedColor := Value;
Invalidate;
end;
end;

procedure TReshiCustomEdit.setCaseMode(Value: TCaseMode);
begin
if (FCaseMode <> Value) then
begin
FCaseMode := Value;
Invalidate;
end;
end;

function TReshiCustomEdit.IsBlank: boolean;
begin
Result := Text = '';
end;


procedure TReshiCustomEdit.setReadOnlyColor(const Value: TColor);
begin
if ReadOnly then begin
FUnFocusedColor := FReadOnlyColor;
FFocusedColor := FReadOnlyColor;
Color := FReadOnlyColor;
end else begin
FUnFocusedColor := clWhite;
FFocusedColor := clSkyBlue;
Color := clWhite;
end;
Invalidate;
end;

function TReshiCustomEdit.GetAbout: String;
begin
Result := AuthorName;
end;

end.

Download Source Code


Semoga Membantu,

Reshi Mahendra
Read more >>

Reshi Mahendra

on Rabu, 23 September 2009

Terima kasih anda telah mengunjungi http://delphifirebird.blogspot.com. Seperti kata pepatah, "Tak kenal maka tak sayang", begitu juga anda sebagai pengunjung tentulah sedikit tidaknya ingin mengetahui pemilik blog ini,palagi anda interaktif dan ikut membahas lebih dalam topik-topik yang berada pada blog ini.

Nama saya adalah I Gede Made Reshi Mahendra, saya berasal dari Tabanan, Bali. Saya menamatkan sekolah di Sebuah STMIK ternama di kota pelajar. Saya menggeluti dunia Informatika sejak tahun 2000 dan spesialisasi saya adalah Bussiness Application Programming, disamping Web Programming dan Networking. Ketertarikan saya dengan dunia programming adalah karena seperti bermain teka-teki silang, dimana kita harus mengimplementasikan suatu proses dengan cara kita sendiri dan membahasakannya seperti bahasa kita sendiri, tetapi tetap dengan satu tujuan, Yaitu memecahkan suatu masalah. Di samping sebagai software developer (dan juga sebagai IT Manager di sebuah hotel ternama di kawasan Benoa, Nusa Dua, Bali), saya biasanya menghabiskan waktu luang dengan berlama-lama di internet mencari artikel-artikel tentang teknologi baru, security issues, komik, disamping memelihara binatang-binatang aneh, bermain musik dan bercocok tanam.

Last but not least, semoga materi dan tulisan-tulisan saya pada blog ini dapat membantu anda berkreasi.

Terima Kasih.

Salam,

Reshi Mahendra
Read more >>

Ping Service Menambah Trafic Pada Situs Anda

Ping service berfungsi agar situs/ blog anda dapat secara otomatis memberitahukan/notify blog direktori dan mesin pencari/ search engine (seperti google, yahoo, dsb) bahwa situs/blog anda sudah terupdate. Semakin banyak daftar ping yang anda miliki, semakin besar pula kemungkinan situs/ blog anda akan mendapat trafic dari sumber yang ada di list anda tersebut.

Tetapi, jika anda update blog/situs anda dengan interval dibawah 6jam (dengan kata lain, dalam 1 hari melakukan posting lebih dari 3 kali, apalagi pada waktu yang bersamaan), anda perlu hati-hati, karena search engine akan mencurigai anda sebagai “robot” atau melakukan kecurangan pada mesin mereka.

Untuk pengguna wordpress, untuk menambahkan daftar ping dapat dilakukan dengan masuk dalam mode Administrator/ Control Panel=>Option=>Writing. Untuk pengguna Joomla!, anda harus download terlebih dahulu plugins yang menyediakan fitur ping service (misal EasyPing). Berikutadalah daftar ping service, anda dapat menambahkannya pada daftar ping anda.

http://blogsearch.google.com/ping/RPC2
http://1470.net/api/ping
http://api.feedster.com/ping
http://api.moreover.com/RPC2
http://api.moreover.com/ping
http://api.my.yahoo.com/RPC2
http://api.my.yahoo.com/rss/ping
http://bblog.com/ping.php
http://bitacoras.net/ping
http://blog.goo.ne.jp/XMLRPC
http://blogdb.jp/xmlrpc
http://blogmatcher.com/u.php
http://bulkfeeds.net/rpc
http://coreblog.org/ping/
http://mod-pubsub.org/kn_apps/blogchatt
http://www.lasermemory.com/lsrpc/
http://ping.amagle.com/
http://ping.bitacoras.com
http://ping.blo.gs/
http://ping.bloggers.jp/rpc/
http://ping.cocolog-nifty.com/xmlrpc
http://ping.blogmura.jp/rpc/
http://ping.exblog.jp/xmlrpc
http://ping.feedburner.com
http://ping.myblog.jp
http://ping.rootblog.com/rpc.php
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://ping.weblogs.se/
http://pingoat.com/goat/RPC2
http://rcs.datashed.net/RPC2/
http://rpc.blogbuzzmachine.com/RPC2
http://rpc.blogrolling.com/pinger/
http://rpc.icerocket.com:10080/
http://rpc.newsgator.com/
http://rpc.pingomatic.com
http://rpc.technorati.com/rpc/ping
http://rpc.weblogs.com/RPC2
http://topicexchange.com/RPC2
http://trackback.bakeinu.jp/bakeping.php
http://www.a2b.cc/setloc/bp.a2b
http://www.bitacoles.net/ping.php
http://www.blogdigger.com/RPC2
http://www.blogoole.com/ping/
http://www.blogoon.net/ping/
http://www.blogpeople.net/servlet/weblogUpdates
http://www.blogroots.com/tb_populi.blog?id=1
http://www.blogshares.com/rpc.php
http://www.blogsnow.com/ping
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php
http://www.newsisfree.com/RPCCloud
http://www.newsisfree.com/xmlrpctest.php
http://www.popdex.com/addsite.php
http://www.snipsnap.org/RPC2
http://www.weblogues.com/RPC/
http://xmlrpc.blogg.de
http://xping.pubsub.com/ping/

Semoga Membantu


Reshi Mahendra
Read more >>

Firebird Remote Database Backup

Kadang, dalam suatu kondisi tertentu kita ingin melakukan backup database langsung dari komputer client kita. Tetapi masalahnya, Firebird server ada pada mesin/komputer lain. Dan jikalaupun anda menggunakan Tools backup seperti FlameRobin, IBOConsole, IBExpress (Commercial), IBManager (Commercial), Dsb, database yang dibackup dari mesin yang berbeda hanya boleh disimpan dimesin tersebut saja (Mesin/Computer tempat Firebird server berada). Trik dibawah ini adalah untuk dapat melakukan backup file dari Firebird server dan menyimpan hasil backup filenya pada mesin/komputer lokal.

Misal :

  • Alamat IP server Firebird Server adalah : 192.168.0.1
  • File path Database di server adalah : d:\ServerClinicData\I2SysClinic.FDB
  • Username : MAHENDRA
  • Password : MAHENDRAJUGA
  • Alamat IP Local/ Mesin Local: Tidak Relevan
  • FilePath tempat menyimpan backup file : f:\BackupClinic\I2SysClinic20090913.fbk

Untuk melakukan backup :

  • Buka console/command line dengan Start=>Run, kemudian ketik CMD dan klik tombol OK
  • ketik perintah gbak -b -v 192.168.0.1:d:\ServerClinicData\I2SysClinic.FDB f:\BackupClinic\I2SysClinic20090913.fbk -user MAHENDRA -pass MAHENDRAJUGA

Catatan :

  1. Jika FilePath berisi spasi, gunakan ShortName mode pada console/dos. Misal FilePath server : d:\Backup Data\I2SysClinic.FDB maka ditulis d:\Backup~1\I2SysClinic.FDB
  2. User dan password CASE SENSITIVE, artinya : huruf kecil dan huruf besar berbeda. Misal MAHENDRA tidak sama dengan mahendra
  3. Sebelum dapat melakukan backup, anda harus men-set FilePath tempat GBak berada pada Path system (Biasanya GBak berada pada direktori c:\Program Files\Firebird\Firebird_x_x\Bin dimana x_x adalah versi database server anda). Untuk menyertakan GBak pada System Path, anda dapat melakukannya dengan Klik kanan pada My Computer=>Properties=>Advanced=>Environtment Variable. Setelah jendela path muncul, Pilih Add jika variable PATH belum ada atau pilih EDIT kalau variable PATH sudah ada. Tambahkan DirektoryPath tempat GBak berada. Misalkan: c:\Program Files\Firebird\Firebird_x_x\Bin (tambahkan semicolon/ tanda ‘;’ jika untuk memisahkan variable yang sudah ada dengan yang baru jika anda melakukan operasi EDIT pada variable PATH). Klik tombol OK untuk melakukan penyimpanan system path.

Semoga Membantu

Salam,

Reshi Mahendra

Read more >>

Free Firebird Database Developing Tools

Jika anda pengguna firebird/ administrator firebird database/ database designer, ada baiknya anda mengetahui beberapa firebird database developing tool berikut untuk memudahkan pekerjaan anda. List dibawah ini adalah review dari tool-tool gratis (Free Interbase/ Firebird Database Management Tools) yang dapat anda pakai untuk memudahkan mengelola/managing firebird database anda.

♦ MiTec Interbase Query (http://www.mitec.cz/ibq.html)

By : Michael Mutl

Tools ini dapat melakukan fungsi-fungsi manajemen database lengkap. Didukung dengan fitur SQL Editor dengan Syntax Highliting, Object Explorer, Event Watcher, Performance Monitor, User Manager, dan masigh banyak lagi.

Lisensi : Freeware


Marathon (http://sourceforge.net/projects/gmarathon/)

By : Patrick O’Keeffe

Marathon menggunakan IBO Object sebagai backend nya. Didukung dengan fitur Visual Performance Statistic dan tuning, Exsekusi script, dan sebagainya.

Lisensi : Open Source (MPL)


IBSQL (http://www.ibobjects.com/ibo_ib_sql.html)

By : Jason Wharton

Database management tools yang cepat dan handal. Didukung fitur Datapump, Scripting Tool, SQL Trace Monitor, Export, dan sebagainya. Dibangun dengan backend IBO Object.

Lisensi : Freeware


IBO Console (http://www.mengoni.it/Downloads/)

By : Lorenzo Mengoni

Sangat cocok digunakan untuk anda yang terbiasa menggunakan IB Console (milik borland) dalam memanajemen firebird/interbase database anda. IBO Console mirip sekali tampilannya dengan IB Console buatan borland yang berfungsi untuk memanajemen Interbase database. Dan juga, IBO console memiliki kelebihan fitur yang dapat membantu anda memanajemen database anda lebih baik.

Lisensi : Open Source (MPL)


FenixSQL (http://web.tiscali.it/fblib/)

By : Alessandro Batisti

FenixSQL adalah tool sederhana untuk developing interbase/firebird database yang lumayan kaya akan fitur dan dapat dijalankan baik di Windows maupun Linux (memiliki kompatibilitas dengan Delphi Personal Edition, Kylix Open Edition, Freepascal 2.0.2 atau yang terbaru, dan Turbo Delphi).

Lisensi : Open Source (LGPL)


IBEasy+ (http://www.marc-grange.net/telecharger_en.htm)

By :Marc Grange

IBEasy+ adalah firebird database management tool yang unik dan kaya fitur. Dengan tool ini, anda dapat membuat design dan membuat relasi database dengan sangat mudah karena didukung pemodelan database secara visual.

Lisensi : Freeware


IBAccess (http://sourceforge.net/projects/ibaccess/files/)

By : Tony Martir

IBAccess sangat mirip dengan IBConseole tetapi dengan design yang sangat berbeda. Menggunakan IBX sebagai backend. Dapat dijalankan pada OS Windows dan Linux.

License : Open Source (MPL)


FlameRobin (http://www.flamerobin.org/)

By : Milan Babuskov

FlameRobin adalah Interbase/firebird database management tool yang sangat ringan dan dapat berjalan pada mesin dengan system operasi yang berbeda-beda (Cross Platform)

Lisensi : Open Source (IDPL)

Read more >>