Anda di halaman 1dari 41

TUTORIAL DELPHI

Menginstall Komponen baru Di sini kami akan memberikan contoh cara menginstall komponen baru pada Delphi 3. Sebelumnya download terlebih dahulu komponen IEButton. Adapun caranya adalah sebagai berikut :

1. Setelah Anda mendownload dan mengekstrak file tersebut, maka Anda akan 2. 3. 4. 5. 6.

memperoleh empat buah file. Copy keempat file tersebut ke direktory Lib (biasanya C:\Program Files\Borland\Delphi 3\Lib). Jalankan program Delphi Anda. Dari menu Component, pilih Install Component. Pada bagian Unit File Name, klik Browse dan arahkan ke letak file IEBtn.pas (C:\Program Files\Borland\Delphi 3\Lib\IEBtn.pas). Untuk bagian Package File Name, Anda bisa mengisi dengan C:\Program Files\Borland\Delphi 3\Lib\dclusr30.dpk. Klik OK. Jika penginstallan komponen berhasil maka akan nampak komponen IEButton pada bagian Win95.

Mengetahui path dari aplikasi Dalam membuat aplikasi, kadang-kadang kita perlu mengetahui path atau letak file *.exe dari suatu program. Bagaimana caranya ? Caranya cukup mudah sekali. Anda hanya cukup menambahkan property ExeName dari kelas TApplication. procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := Application.ExeName; end; Potongan program di atas akan "mencari" letak file *.exe dan menuliskannya pada komponen Label1, jika pemakai mengklik Button1.

Mengganti RegisteredOwner & Organization


Sebelum Anda meneruskan tutorial Delphi ini, Anda harus memahami seluk beluk registry terlebih dahulu. Silahkan baca sekilas ulasan registry di sini.

Tutorial ini akan menjelaskan tentang cara mengganti RegisteredOwner dan RegisteredOrganization pada komputer Anda. RegisteredOwner dan Organization tersebut dapat kita lihat pada Control Panel - System, lalu pada bagian Registerd To. Untuk mengganti RegisteredOwner secara "manual" (melalui registry editor) dapat Anda lihat di sini. Langkah pertama sebelum memanipulasi nilai pada registry adalah dengan memberitahukan terlebih dahulu key yang akan diakses. Caranya dengan mengubah properti RootKey. Isi properti ini adalah HKey_Classes_Root, HKey_Current_User,

HKey_Local_Machine, atau HKey_Users. Secara default nilai dari properti ini adalah HKey_Current_User, sehingga bila Anda tidak mengisi properti tersebut, Delphi akan menganggap sebagai HKey_Current_User. Contoh : var MyReg : TRegistry; begin MyReg := TRegistry.Create; MyReg.RootKey := HKey_Local_Machine; ........ MyReg.Free; end; Langkah kedua adalah membuka subkey yang akan dimanipulasi, yaitu dengan cara memanggil fungsi OpenKey. Deklarasi fungsi OpenKey adalah sebagai berikut : function OpenKey(const Key: string; CanCreate: Boolean): Boolean; Terdapat dua parameter yang harus diisi. Parameter pertama bertipe string yang merupakan subkey yang akan dibuka. Sedangkan parameter kedua bertipe boolean, yang akan menentukan apakah subkey tersebut akan dibuat atau tidak. Bila parameter ini bernilai true, maka Delphi akan membuat subkey tersebut jika di registry belum ada. Sebaliknya bila bernilai false, subkey tersebut tidak akan dibuat meskipun di registry belum ada. Fungsi OpenKey ini akan mengembalikan nilai true jika inisialisasi berhasil dan mengembalikan false jika gagal.
Untuk mengganti RegisteredOwner tersebut, subkey-nya adalah : \SOFTWARE\Microsoft\Windows\CurrentVersion\

Maka, kode yang harus kita tulis adalah : MyReg.RootKey := HKEY_LOCAL_MACHINE; MyReg.OpenKey := ('\SOFTWARE\Microsoft\Windows\ CurrentVersion', false); Setelah langkah di atas, selanjutnya Anda bisa membaca atau menulis data pada registry. Untuk membaca data pada registry Anda dapat menggunakan ReadString, ReadInteger, dll (baca pd file Help-nya Delphi). Sedangkan untuk menulis data pada registry gunakan WriteString, WriteInteger, dll. Kode di bawah ini menunjukkan cara pembacaan data pada registry, yang hasilnya dituliskan pada komponen Edit1. Edit1.Text := MyReg.ReadString ('RegisteredOwner'); Edit2.Text := MyReg.ReadString ('RegisteredOrganization'); Sedangkan untuk menuliskan data pada registry gunakan cara berikut : reg.WriteString ('RegisteredOwner', Edit1.Text); reg.WriteString ('RegisteredOrganization', Edit2.Text); Mengganti RegisteredOwner & Organization Kode selengkapnya adalah sebagai berikut : unit Unit1;

interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, registry; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; reg : TRegistry; implementation {$R *.DFM} procedure TForm1.Button2Click(Sender: TObject); begin Close; // menutup form end; procedure TForm1.FormCreate(Sender: TObject); begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey ('\Software\Microsoft\Windows\CurrentVersion', false); Edit1.Text := reg.ReadString ('RegisteredOwner'); Edit2.Text := reg.ReadString ('RegisteredOrganization'); reg.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey ('\Software\Microsoft\Windows\CurrentVersion', false); reg.WriteString ('RegisteredOwner', Edit1.Text); reg.WriteString ('RegisteredOrganization', Edit2.Text); reg.Free; end; end.

Men-shutdown komputer Untuk melakukan restart, shutdown atau log off komputer, gunakan fungsi ExitWindowsEx. Ada pun deklarasi dari fungsi ExitWindowsEx adalah sebagai berikut : function ExitWindowsEx (uFlags : word ; dwReserved : DWORD): BOOL; Parameter pertama menerangkan "apa yang harus dilakukan" oleh komputer. Parameter ini dapat bernilai : Konstanta EWX_RESTART EWX_SHUTDOWN EWX_LOGOFF EWX_FORCE Keterangan Melakukan restart dengan menampilkan peringatan. Melakukan shutdown dengan menampilkan peringatan. Melakukan log off dengan menampilkan peringatan. Melakukan shutdown tanpa menampilkan peringatan. Sehingga ada kemungkinan Anda akan kehilangan data yang belum disimpan (belum di-save).

Sedangkan parameter kedua bernilai 0. Sehingga bila ingin melakukan shutdown cukup tulis kode berikut ini : ExitWindowsEx (EWX_SHUTDOWN, 0); Menjalankan aplikasi Windows lainnya Untuk menjalankan aplikasi Windows lainnya dari program Anda, Anda bisa menggunakan salah satu fungsi Windows API, yaitu WinExec. Adapun deklarasi dari fungsi WinExec adalah sebagai berikut : function WinExec (lpCmdLine : PChar; uCmdShow : integer) : integer; Parameter pertama merupakan nama file *.exe yang akan dijalankan beserta pathnya. Parameter kedua menunjukkan bagaimana aplikasi tersebut dijalankan. Parameter ini dapat bernilai : Parameter SW_SHOWMINIMIZED SW_SHOWMAXIMIZED SW_SHOWNORMAL Arti Menampilkan aplikasi secara minimal (berbentuk icon) Menampilkan aplikasi dengan (ukuran) window maksimal Menampilkan aplikasi dengan window normal

* Ada sembilan nilai parameter lainnya yang dapat Anda lihat pada referensi Windows API pada bagian ShowWindow

Fungsi WinExec ini akan mengembalikan nilai lebih besar dari 31 jika aplikasi berhasil dijalankan. Sedangkan bila gagal, nilai yang dikembalikan kurang dari atau sama dengan 31. Detail dari nilai kembalian adalah :

Nilai Kembalian 0 ERROR_BAD_FORMAT ERROR_FILE_NOT_FOUND ERROR_PATH_NOT_FOUND

Arti Windows mengalami out of memory atau resources File yang dijalankan bukan merupakan file aplikasi Windows File yang dijalankan tidak ditemukan Path file salah

Contoh berikut mungkin akan memperjelas Anda. procedure TForm1.Button1Click(Sender: TObject); begin if (WinExec ('C:\Windows\notepad.exe', SW_SWOWMAXIMIZED) < 32) then MessageDlg ('Gagal menjalankan Notepad', mtError, [mbOK],0); end; Pada contoh di atas, pada saat pemakai mengklik Button1 maka program akan menjalankan file Notepad.exe yang terletak di C:\Windows.

Menyembunyikan taskbar Contoh program di bawah ini akan menunjukkan bagaimana cara untuk menyembunyikan taskbar melalui program yang dibuat dengan Delphi. Untuk menyembunyikan dan menampilkan taskbar kita dapat menggunakan salah satu dari fungsi Windows API yaitu ShowWindow yang deklarasinya sebagai berikut : function ShowWindow (hwnd : HWND; nCmdShow : integer) : Boolean; Parameter pertama dari fungsi ShowWindow merupakan handle window yang akan ditampilkan atau disembunyikan. Parameter kedua adalah bagaimana window tersebut ditampilkan. Yang menjadi pertanyaan kita, darimana kita mendapatkan handle window dari taskbar ? Caranya adalah dengan memanggil fungsi FindWindow. function FindWindow (lpClassName, lpWindowName : PChar) : HWND; Parameter pertama merupakan nama kelas jendela (window class). Pada Delphi nama ini identik dengan nama kelas dari Form, misalnya TForm1, TForm2, dst. Parameter kedua adalah caption dari form (TForm.Caption). Kembalian dari fungsi FindWindow adalah handle form yang dicari. Bila Windows tidak menemukan form yang dimaksud, FindWindow akan mengembalikan nilai 0. Untuk mencari handle form dari taskbar : FindWindow('Shell_TrayWnd',Nil); Parameter pertama dari FindWindow diisi dengan Shell_TrayWnd yang merupakan window class dari taskbar. Sedangkan parameter kedua diisi dengan Nil yang menunjukkan bahwa form taskbar tidak mempunyai caption.

Kode selengkapnya untuk menyembunyikan taskbar adalah sbb : procedure TForm1.Button1Click(Sender: TObject); var hTaskBar :Thandle; begin hTaskBar := FindWindow('Shell_TrayWnd',Nil); ShowWindow(hTaskBar,Sw_Hide); end; Untuk menampilkan taskbar langkahnya sama dengan yang di atas. Yang berbeda hanya parameter kedua dari ShowWindow, yang semula SW_HIDE diganti dengan SW_NORMAL. Kode lengkapnya adalah sebagai berikut : procedure TForm2.Button1Click(Sender: TObject); var hTaskBar :Thandle; begin hTaskBar := FindWindow('Shell_TrayWnd',Nil); ShowWindow(hTaskBar,Sw_Normal); end;

Menjalankan applet pada control panel Untuk menjalankan berbagai applet pada control panel, Anda dapat menggunakan salah satu fungsi dari Windows API yaitu WinExec. function WinExec (lpCmdLine : PChar; uCmdShow : integer) : integer; Lihat keterangan fungsi WinExec di sini. Misalnya Anda ingin membuka Add/Remove Program maka Anda harus menuliskan code seperti ini : procedure TForm1.Button1Click(Sender: TObject); begin WinExec ('C:\WINDOWS\CONTROL.EXE appwiz.cpl, Add/Remove Programs,1', SW_NORMAL); end; Selain itu Anda juga bisa membuat fungsi sendiri untuk menjalankan applet pada control panel. function RunApplet(const AppletName: string): integer; begin Result := WinExec(PChar('rundll32.exe shell32.dll,' + 'Control_RunDLL ' + AppletName), SW_SHOWNORMAL); end; Contoh penggunaan : RunApplet('appwiz.cpl');

Anda bisa mengganti appwiz.cpl di atas dengan applet yang ingin Anda buka. Nama file applet beserta keterangannya : access.cpl = Accessibility Options appwiz.cpl = Add/Remove Program desk.cpl = Display Properties intl.cpl = Regional Settings joy.cpl = Joystick main.cpl =Mouse mmsys.cpl = Multimedia modem.cpl = Modems Properties netcpl.cpl = Network Properties password.cpl = Password Settings sysdm.cpl = System Properties timedate.cpl = Time/Date Settings

Mengecek disk pada disk drive Apabila Anda tidak ingin melihat pesan "A:\ is not accessible. The Device not Ready" saat Anda mengakses disk drive yang kosong (tidak terdapat disket pada disk drive), gunakan kode berikut ini : procedure TForm1.Button1click(Sender : TObject); begin if not DirectoryExists('a:\') then MessageDlg('Disk drive kosong',mtError,[mbOk],0) {jika disk drive tidak kosong maka ......} end;

else

Maka saat user mengakses disk drive yang kosong, akan muncul pesan yg lebih mudah dipahami, yaitu "Disk drive kosong".

Menyembunyikan icon pada desktop Contoh program di bawah ini akan menunjukkan bagaimana cara untuk menyembunyikan icon pada desktop melalui program yang dibuat dengan Delphi. Keterangan tentang fungsi Show Window dan FindWindow dapat di lihat di sini. procedure TForm1.Button1Click(Sender: TObject); begin ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE); end; procedure TForm1.Button2Click(Sender: TObject); begin ShowWindow(FindWindow(nil,'Program Manager'),SW_SHOW); end;

Membuat splash screen Splash screen merupakan tampilan yang kita lihat pertama kali waktu kita menjalankan sebuah aplikasi. Splash screen ini biasanya ditampilkan untuk mengurangi kejenuhan user sewaktu program masih dalam tahap inisialisasi. Untuk membuat splash scren tersebut caranya sebagai berikut :

1. Bikin dulu form utamanya. 2. Tambahkan form yang akan digunakan sebagai splash screen (dari menu File, 3. 4.

pilih New Form). Beri nama form tersebut dengan FrmSplash. Tambahkan komponen Timer (terletak pada tab Win32), beri nama dengan tmMainTimer. Tambahkan kode berikut pada events onTimer dari komponen Timer tersebut : tmMainTimer.Enabled := False;

5. Dari menu Project, pilih Options. 6. Pindah ke tab Forms. 7. Dari bagian auto create forms akan terlihat dua buah form. Pilih Form yang akan 8. 9.
digunakan sebagai splash screen dan klik tombol ">" untuk memindah form splash screen ke bagian Available forms. Kalau sudah klik OK. Sekarang dari menu View, pilih Project Source. Pada program utama buatlah form splash screen sebelum inisialisasi dilakukan.

Untuk lebih jelasnya lihat potongan program berikut ini : program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {FrmSplash}; {$R *.RES} begin FrmSplash := TFrmSplash.Create(Application); FrmSplash.Show; FrmSplash.Update; while FrmSplash.tmMainTimer.Enabled do Application.ProcessMessages; Application.Initialize; Application.CreateForm(TForm1, Form1); FrmSplash.Hide; FrmSplash.Free; // menghapus form splash scren dr memory Application.Run; end.

Tips & trik seputar hint Hint adalah teks yang muncul saat pointer mouse melewati suatu obyek (bi sa berupa button, form, list box, dll). Defaultnya hint tersebut tampil selama 2,5 detik. Tapi dengan menambahkan sedikit kode Delphi di bawah ini, Anda dapat mengganti waktu tersebut, bisa lebih cepat atau lebih lama. Mengganti lama tampilnya hint procedure TForm1.Button1Click(Sender: TObject); begin //default = 2500 ms = 2,5 detik Application.HintHidePause := 10000 //10 detik; end; Membuat hint dua baris : Button1.Hint := 'Baris 1'#13#10'Baris 2';

Membuat teks icon desktop yg transparan Splash screen merupakan tampilan yang kita lihat pertama kali waktu kita menjalankan sebuah aplikasi. Splash screen ini biasanya ditampilkan untuk uses Commctrl; var hLV : THandle; procedure TForm1.GetDesktopListViewHandle; var s1: string; begin hLV := FindWindow('ProgMan', nil); hLV := GetWindow(hLV, GW_CHILD); hLV := GetWindow(hLV, GW_CHILD); SetLength(s1, 40); GetClassName(hLV, PChar(s1), 39); if PChar(s1) <> 'SysListView32' then ShowMessage('Failed'); end; procedure TForm1.Button1Click(Sender: TObject); var xColor : TColor; begin GetDesktopListViewHandle; xColor := ListView_GetTextColor(hLV); ListView_SetTextColor(hLV, xColor); xColor := ListView_GetTextBkColor(hLV); ListView_SetTextBkColor(hLV, xColor); ListView_SetTextBkColor(hLV, $FFFFFFFF); end;

Refresh desktop Di bawah ini adalah kode yang dapat digunakan untuk merefresh desktop tanpa harus menekan F5. procedure TForm1.Button2Click(Sender: TObject); begin SendMessage(FindWindow('Progman','Program Manager'),WM_COMMAND,$A065,0); winexec(Pchar('rundll32 user,repaintscreen'),sw_Show); end;

Menyembunyikan caption bar Untuk menyembunyikan caption bar, tambahkan kode pada event onCreate.

procedure TForm1.FormCreate(Sender:TObject); begin SetWindowLong(Handle,gwl_style,GetWindowLong(handle,gwl_style) and NOT ws_caption); ClientHeight:=Height; Refresh; end;

Memindah form yg tidak mempunyai caption bar Untuk memindah form yang tidak mempunyai caption bar, tambahkan kode berikut pada event onMouseDown. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Form1.Handle, wm_SysCommand,$f012,0); end;

Membuka Control Panel Gunakan kode di bawah ini untuk membuka Control Panel dari program Delphi Anda. Jangan lupa tampahkan ShellApi pada bagian uses : procedure TForm1.Buton1Click(Sender : TObject); begin ShellExecute(Handle,'Open','control', nil,nil,SW_SHOWNORMAL); end;

Memberi warna record aktif pada TDBGrid Mungkin Anda ingin memberi warna record aktif pada TDBGrid dengan warna yang lain (tidak sama dengan warna record yang tidak atif). Untuk itu tambahkan kode berikut ini pada even DBGrid.OnDrawColumnCell : type TCustomDBGridCracker = class(TCustomDBGrid); procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with TCustomDBGridCracker(Sender) do if DataLink.ActiveRecord = Row - 1 then Canvas.Brush.Color := clRed else Canvas.Brush.Color := clWhite; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, end;

State);

Menyembunyikan program dari Task List Saat Anda menekan tombol Ctrl + Alt + Del maka akan muncul program-program yang sedang dijalankan pada saat itu. Jika Anda tidak ingin program yang Anda bikin muncul pada task list tersebut, maka tambahkan kode berikut ini di bawah implementation. function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL'; procedure TForm1.Button1Click(Sender: TObject); begin RegisterServiceProcess(GetCurrentProcessID,1); end; procedure TForm1.Button2Click(Sender: TObject); begin

RegisterServiceProcess(GetCurrentProcessID,0); end;

Warna pada DBGrid sesuai data Pertanyaan : Bagaimana memberi warna pada DBGrid sesuai dengan data yang telah kita tentukan, misalnya warna biru pada record dengan data Population lebih besar dari 2,5 juta ? Jawaban : Caranya cukup mudah, Anda tinggal menambahkan kode berikut ini pada event OnDrawColumncell dari DBGrid.: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Table1.FieldByName('Population').AsInteger > 25000000 then TDBGrid(Sender).Canvas.Brush.Color := $00E9D358; TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); end; Apabila Anda ingin mengganti dengan field (kolom) lain, Anda tinggal mengganti tulisan "Population" di atas dengan nama field yang Anda inginkan beserta tipe datanya. Contoh : Table1.FieldByName('Continent').AsString = 'South America'

Akses peralatan luar lewat Parallel Printer Port oleh: Fuad Haharap Ingin mengendalikan peralatan luar dengan menggunakan komputer? Tentu sangat menyenangkan, apalagi hanya dengan beberapa baris program Delphi, kita dapat menyalakan lampu, menghidupkan motor, mengatur lengan robot ataupun mengakses peralatan elektronis lainnya. Mungkin tulisan ini bisa menjadi cemilan yang cukup bergizi bagi Delphiers yang suka ngoprek elektronika praktis, ini lantaran kita tidak harus membuat card I/0 sendiri, tetapi cukup dengan memanfaatkan parallel printer port saja. Parallel Printer Port Port yang satu ini, dipastikan selalu ada pada setiap komputer. Tercermin dari namanya, saat ini parallel port lebih banyak dimanfaatkan untuk urusan pencetakan data. Sebenarnya, port inipun bisa dimanfaatkan untuk hal lain, karena memiliki input/output (I/O) data. Tata-letak dari ke-dua puluh lima pin (DB 25) parallel printer port, diperlihatkan dalam Gambar 1.

Gambar 1. Tata-letak pin parallel printer port. Adapun tabel signal dan fungsi dari setiap pin pada parallel printer port, terlihat pada Gambar 2. Dari situ diketahui pin 2 s/d 9 (signal D0-D7) berfungsi sebagai output, yang selanjutnya dapat kita manfaatkan untuk mengontrol peralatan luar.

Gambar 2. Signal dan fungsi parallel printer port. Rangkaiannya Untuk keperluan uji-coba sesaat, kita bisa menghubungkan LED (Light Emitting Diode) lewat resistor, langsung ke pin output dari parallel printer port. Bisa juga hanya dengan mengukur tegangan 5 volt yang timbul, saat data port dalam keadaan high.

Gambar 3. Skema untuk pengujian sementara. Untuk dapat mengakses beban yang besar serta untuk mencegah terjadinya pembebanan berlebihan pada parallel printer port, sebaiknya kita menggunakan rangkaian penyangga (buffer).

Akses peralatan luar lewat Parallel Printer Port oleh: Fuad Haharap

Gambar 4. Rangkaian penyangga. Dari skema pada Gambar 4, terlihat pin 3,5,7,9,12,16 dan 18 dari 74LS224 terhubung ke masing-masing relai. Selanjutnya sakelar pada setiap relai tersebut, bisa kita gunakan untuk mengontrol peralatan yang memiliki beban besar. Kode Program Delphi Tidak seperti Turbo Pascal atau Delphi 1 dimana tersedia fungsi Port, pada Delphi 32 bit (versi 2 s/d 6) fungsi itu sudah tidak didukung lagi. Sebagai gantinya kita gunakan in-line assembler code. Listing 1. Hidupkan LED 5 dari rangkaian pada Gambar 3. procedure KirimDataKePort(AlamatPort: Word; DataBit: Byte); (* alamat LPT1, range 378-37F hex alamat LPT2, range 278-37F hex alamat LPT3, range 3BC-3BF hex lihat juga referensi teknis dari Intel dan Microsoft *) asm MOV DX, AlamatPort MOV AL, DataBit OUT DX, AL

end; procedure TForm1.btnLED5Click(Sender: TObject); begin (* contoh pemanggilan prosedur KirimDataKePort, ini akan menyalakan LED 5 (data bit-4 / pin 6 dari rangkaian yang terdapat pada Gambar 3. *) KirimDataKePort($378, $8); //00010000 biner end;

Gambar 5. Tampilan program kendali, dikembangkan dengan Delphi. Pada prinsipnya, untuk menyalakan LED, kita kirim data biner 8 bit ke port. Sesuaikan pengiriman data biner ini, dengan LED yang ingin dinyalakan. Misalnya, untuk menyalakan LED pertama datanya adalah 1 hex (biner; 0000001), sedangkan data biner 10000000 (80 hex / 128 dec) digunakan untuk menyalakan LED kedelapan. Daftar berikut, dapat digunakan sebagai acuan. DataPort DataPort DataPort DataPort DataPort DataPort DataPort DataPort Bit Bit Bit Bit Bit Bit Bit Bit 0 1 2 3 4 5 6 7 = = = = = = = = LED1 LED2 LED3 LED4 LED5 LED6 LED7 LED8 = = = = = = = = 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 bin bin bin bin bin bin bin bin = = = = = = = = 1 hex = 1 dec 2 hex = 2 dec 4 hex = 4 dec 8 hex = 8 dec 10 hex = 16 dec 20 hex = 32 dec 40 hex = 64 dec 80 hex = 128 dec

Bagi yang ingin bereksperimen, Listing 2 merupakan kode program dari contoh Aplikasi Pengendali seperti yang terlihat pada Gambar 5. Listing 2. Kode program aplikasi pengendali. (* = Mengontrol peralatan luar lewat Parallel Printer Port = *) unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls;

type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; Bevel1: TBevel; Bevel2: TBevel; lblDataPortBit: TLabel; lblNoLED: TLabel; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure SpeedButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure KirimDataKePort(DataPortBit: Byte); public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses Math; const AlamatPort = $378; procedure TForm1.KirimDataKePort(DataPortBit: Byte); var Nilai: Byte; begin lblDataPortBit.Caption := IntToStr(DataPortBit); lblNoLED.Caption := 'LED No. ' + IntToStr(DataPortBit + 1) + ' Nyala'; Nilai := Trunc(Power(2, DataPortBit)); asm MOV DX, AlamatPort MOV AL, Nilai OUT DX, AL end; end;

procedure TForm1.SpeedButton1Click(Sender: TObject); begin (* Letakan 8 buah TSpeedButton, atur propeti Tag dari 8 TSpeedButton tersebut dengan nilai 0 sampai dengan 7. Dari Object Inspector, arahkan event Clik dari semua TSpeedButton ke SpeedButon1Click. *) KirimDataKePort((Sender as TSpeedButton).Tag); end; procedure TForm1.FormCreate(Sender: TObject); begin KirimDataKePort(0); end; end.

Mengetahui sudah berapa lama Windows dijalankan Dalam program Anda mungkin Anda ingin mengetahui sudah berapa lama Windows dijalankan pada saat itu. Untuk mengetahuinya Anda dapat menggunakan function di bawah ini.

Download Contoh

function UpTime: string; const ticksperday : integer = 1000 * 60 * 60 * 24; ticksperhour : integer = 1000 * 60 * 60; ticksperminute : integer = 1000 * 60; tickspersecond : integer = 1000; var t : longword; d, h, m, s : integer; begin t := GetTickCount; d := t div ticksperday; dec(t, d * ticksperday); h := t div ticksperhour; dec(t, h * ticksperhour); m := t div ticksperminute; dec(t, m * ticksperminute); s := t div tickspersecond; Result := 'Uptime: '+IntToStr(d)+ ' Hari '+IntToStr(h)+' '+IntToStr(m)+' Menit '+IntToStr(s)+' Detik'; end; Sedangkan contoh penggunaannya adalah sebagai berikut: procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=UpTime; end; Jam

AutoScroll pada palette Delphi Anda yang sudah familiar dengan Delphi tentunya tidak asing lagi dengan komponenkomponennya yang diletakkan pada palette. Pada Delphi 5 terdapat sekitar 19 palette. Dengan jumlah palette sebanyak itu tentunya Anda akan sering direpotkan dengan menggunakan scroll yang terletak pada kanan atas untuk berpindah dari satu palette ke palette yang lain. Tapi untunglah Borland menyediakan satu feature yang tidak terdokumentasi yang dapat mempermudah kita untuk berpindah antar palette tersebut. Caranya adalah dengan sedikit otak-atik pada registry. Adapun langkah lengkapnya adalah sebagai berikut:

1. Dari menu Start, pilih Run. 2. Ketikkan regedit, klik OK. 3. Pindah ke key: 4. 5. 6. 7.

HKEY_CURRENT_USER\Software\Borland\5.0\ Dari sini bikin subkey baru. Caranya klik kanan pada key 5.0. Dari menu yang muncul pilih New - Key. Beri nama sub key baru tersebut dengan Extras. Pindah ke subkey yang baru saja dibuat (subkey Extras). Buat sebuah String Value. Caranya klik kanan, pilih New - String Value. Beri nama dengan AutoPaletteScroll. Beri nilai pada AutoPaletteScroll dengan 1. Buat sebuah String Value lagi dengan nama AutoPaletteSelect dan beri nilai dengan 1.

Jika Anda telah mengubah registry dengan benar maka untuk berpindah antar palette Anda cukup meletakkan cursor mouse di atas judul palette (tanpa harus mengklik judulnya). Untuk Anda yang belum familiar dengan registry, kami menyediakan file *.reg yang dapat langsung dimasukkan ke registry, tentunya setelah Anda

Feature rahasia pada Delphi 5 Tulisan ini merupakan kelanjutan dari artikel sebelumnya yang berjudul AutoScroll pada palette Delphi. Di sini kami tambahkan 2 feature tersembunyi lainnya yang dimiliki oleh Delphi 5. 1. Menampilkan bentuk font Secara default, jika kita memilih property Font.Name pada Object Inspector maka yang tampil adalah nama fontnya. Dengan sedikit mengubah registry kita dapat menampilkan nama font beserta bentuk font-nya. Caranya, tambahkan String Value baru bernama FontNamePropertyDisplayFontNames pada HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Extras. Isi value data pada FontNamePropertyDisplayFontNames dengan 1. 2. Warna yang berbeda pada Object Inspector Seperti yang telah kita ketahui, baik pada Properties maupun Events pada Object Inspector terdiri dari 2 kolom. Kolom sebelah kiri adalah untuk Property atau Events sedangkan kolom sebelah kanan adalah "Nilai"-nya. Nah, dengan otak-atik registry lagi kita dapat membuat warna kolom sebelah kanan sesuka hati kita. Caranya, tambahkan String Value baru bernama PropValueColor pada HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Globals. Lalu isi value data-nya dengan, misalnya clNavy, clRed, dsb. Jika Anda tidak mau susah payah otak-atik registry, silakan copy baris di bawah ini dan simpan dengan nama file berekstensi .reg. Untuk memasukkan ke registry cukup klik 2x pada file tersebut. Selamat mencoba. REGEDIT4 [HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Extras] "AutoPaletteSelect"="1" [HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Extras] "AutoPaletteScroll"="1" [HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Extras] "FontNamePropertyDisplayFontNames"="1" [HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Globals] "PropValueColor"="clRed"

Membuat form gradient Untuk memperindah tampilan program yang Anda buat, Anda bisa membuat form gradient. Caranya yaitu dengan menambahkan kode pada event OnPaint dari form seperti contoh di bawah ini: procedure TForm1.FormPaint(Sender: TObject); var Row, Ht: Word; IX: Integer; begin iX :=200 ; Ht:=(ClientHeight + 512) div 256; for Row := 0 to 512 do begin with Canvas do begin Brush.Color := RGB(Ix,150,row); FillRect(Rect(0, Row * Ht, ClientWidth, (Row + 1) * Ht)); IX :=(IX-1); end; end; end; Untuk mengganti menjadi warna lain, Anda tinggal mengganti pada baris: Brush.Color := RGB(Ix,150,row); RGB merupakan kombinasi warna Red, Green, Blue. Nilai yang bisa Anda masukkan pada RGB yaitu 0 sampai 255.

Membuat rounded form Secara default form yang Anda buat akan berbentuk segi empat. Dengan menambahkan beberapa baris kode berikut Anda dapat membuat form berbentuk elips atau lingkaran. procedure TForm1.FormCreate(Sender: TObject); var region : HRgn; begin region := CreateEllipticRgn(1,1,200,200); SetWindowRgn(handle, region, true); end; Jika Anda membuka referensi Windows API tentang function CreateEllipticRgn maka akan didapat keterangan seperti di bawah ini: HRGN CreateEllipticRgn( int int int int ); nLeftRect, // x-coordinate of the upper-left corner of the bounding rectangle nTopRect, // y-coordinate of the upper-left corner of the bounding rectangle nRightRect, // x-coordinate of the lower-right corner of the bounding rectangle nBottomRect // y-coordinate of the lower-right corner of the bounding rectangle

Mengganti icon folder Bagi Anda yang menyukai keindahan, default icon folder pada Windows yang berwarna kuning tentunya sangat "menyebalkan". Padahal dengan trik sederhana Anda dapat mengganti icon tersebut dengan icon lain yang Anda sukai. Caranya cukup mudah saja, Anda tinggal membuat file desktop.ini pada folder yang akan diganti iconnya. Pada file desktop.ini tersebut tambahkan baris berikut: [.ShellClassInfo] IconFile=file_icon.ico IconIndex=0 InfoTip=keterangan Selanjutnya ubah properties folder tersebut menjadi System. Dengan Delphi, Anda dapat menuliskannya sebagai berikut: procedure TForm1.Button1Click(Sender: TObject); begin with TINIFile.Create('C:\Data\desktop.ini') do try WriteString('.ShellClassInfo', 'IconFile', 'C:\Data\Icon\Apple Logo.ico'); WriteString('.ShellClassInfo', 'IconIndex', '0'); WriteString('.ShellClassInfo', 'InfoTip', 'Tulis deskripsi di sini'); UpdateFile; finally Free; end; SetFileAttributes(PChar('C:\Data'), end; FILE_ATTRIBUTE_SYSTEM);

Contoh di atas akan mengganti icon pada folder C:\Data. Adapun icon yang akan digunakan adalah C:\Data\Icon\Apple Logo.ico. Terakhir, jJangan lupa untuk menambahkan uses IniFiles; di bawah implementation.

Bagaimana caranya membuat nama Alias secara langsung pada saat aplikasi dijalankan? Salah satu hal yang sering terjadi saat memindah aplikasi yang Anda buat dari satu komputer ke komputer lain adalah masalah nama alias. Seperti yang telah Anda ketahui, nama alias digunakan untuk menunjukkan letak database yang digunakan. Jika Anda memindah aplikasi ke komputer lain tanpa membuat sebuah alias baru maka akan muncul pesan ".......unknown database........". Untuk mencegah hal tersebut Anda dapat menambahkan sedikit kode untuk membuat alias secara langsung (on the fly). Jadi saat aplikasi dijalankan, akan dicek dulu apakah nama alias yang digunakan sudah ada atau belum. Jika belum secara otomatis program akan membuatnya. Untuk membuat alias Anda dapat menggunakan prosedur AddStandardAlias yang dideklarasikan sebagai berikut: AddStandardAlias(const Name, Path, DefaultDriver: String); Parameter pertama (Name) adalah nama alias yang akan dibuat. Parameter kedua (Path) digunakan untuk menunjukkan letak database. Sedangkan DefaultDriver digunakan untuk menentukan jenis tabel. DefaultDriver harus berisi salah satu dari "Paradox," "DBASE," atau "ASCIIDRV". Di bawah ini merupakan contoh cara membuat alias dengan Path menunjuk pada folder db di bawah folder dimana file exe terletak. procedure TForm1.FormCreate(Sender: TObject); var AliasBaru, Path : string; begin Path := ExtractFilePath (Application.ExeName) + 'db'; AliasBaru := 'DBInventory'; // nama alias yang akan dibuat // untuk mengecek apakah nama alias sudah ada atau belum if not Session.IsAlias(AliasBaru) then begin //jika belum ada maka tambahkan nama alias Session.AddStandardAlias (AliasBaru, Path, 'PARADOX'); end else begin // jika sudah ada, hapus dulu Session.DeleteAlias(AliasBaru); Session.AddStandardAlias (AliasBaru, Path, 'PARADOX'); end; // menyimpan nama alias pada file konfigurasi Session.SaveConfigFile; end;

Membuat group pada laporan Dengan menggunakan komponen TQRGroup Anda dapat mengelompokkan data berdasarkan kondisi tertentu. Misalnya Anda ingin mengelompokkan nama Company dari tabel Customter.db berdasarkan nama Company yang mempunyai huruf awal yang sama. Untuk itu Anda bisa mencoba contoh di bawah ini:

1. Buat sebuah proyek baru dan tambahkan sebuah report. 2. Tambahkan komponen TTable pada report. Ubah property DatabaseName 3.

4.

menjadi DBDEMOS, TableName menjadi Customer dan IndexName menjadi ByCompany. Aktifkan tabel dengan mengatur property Active menjadi True. Tambahkan komponen TQRGroup yang nantinya akan digunakan sebagai header dari group. Ubah property Expression menjadi COPY(Table1.Company, 1, 1). Expression tersebut digunakan untuk mengekstrak karakter pertama dari nama Company. Tambahkan komponen TQRExpr pada header band. Isi property Expression dengan COPY(Table1.Company, 1,1).

Gambar : Report dengan group saat design time Setelah itu Anda dapat melihat report dengan menjalankan program secara langsung atau dengan mengklik kanan pada report dan pilih Preview.

Gambar : Report dengan group saat run time Dari gambar di atas terlihat bahwa daftar nama Company dikelompokkan berdasarkan huruf depan yang sama.

Menambahkan form pada DLL Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan meletakkan rutinrutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau disk. Anda dapat mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat dibuang dari memory. Dengan demikian aplikasi yang Anda buat dapat lebih menghemat penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE. Dengan demikian Anda cukup menyertakan patches kepada program Anda tanpa Anda harus menyertakan seluaruh aplikasi. Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode program diletakkan pada file DLL. Membuat file DLL Untuk membuat file DLL, caranya pilih menu File | New | DLL. Anda dapat menyimpan project tersebut dengan ProyekDLL.dpr. Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file DLL. Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project dan pilih file unit dari Form (pada contoh ini adalah FormDLL.pas). Contoh DLL ini mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan ShowModal. procedure ShowFormDLL;stdcall; begin frmFormDLL :=TfrmFormDLL.Create(nil); frmFormDLL.Show; end; Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru dibuat tersebut akan ditampilkan dengan menggunakan method Show. Untuk menampilkan form secara modal caranya sedikit berbeda. function ShowFormDLLModal:integer;stdcall; begin frmFormDLL := TfrmFormDLL.Create(nil); Result := frmFormDLL.ShowModal; end; Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan menggunakan ShowModal Anda dapat mengetahui modal result dari form. Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy, yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu Anda

perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree. procedure TfrmFormDLL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil oleh program lain. Exports ShowFormDLL, ShowFormDLLModal; begin end. Untuk membuat kode di atas menjadi file DLL Anda dapat memilih menu Project | Build. Menambahkan form pada DLL Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan meletakkan rutinrutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau disk. Anda dapat mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat dibuang dari memory. Dengan demikian aplikasi yang Anda buat dapat lebih menghemat penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE. Dengan demikian Anda cukup menyertakan patches kepada program Anda tanpa Anda harus menyertakan seluaruh aplikasi. Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode program diletakkan pada file DLL. Membuat file DLL Untuk membuat file DLL, caranya pilih menu File | New | DLL. Anda dapat menyimpan project tersebut dengan ProyekDLL.dpr. Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file DLL. Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project dan pilih file unit dari Form (pada contoh ini adalah FormDLL.pas). Contoh DLL ini mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan ShowModal. procedure ShowFormDLL;stdcall; begin

frmFormDLL :=TfrmFormDLL.Create(nil); frmFormDLL.Show; end; Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru dibuat tersebut akan ditampilkan dengan menggunakan method Show. Untuk menampilkan form secara modal caranya sedikit berbeda. function ShowFormDLLModal:integer;stdcall; begin frmFormDLL := TfrmFormDLL.Create(nil); Result := frmFormDLL.ShowModal; end; Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan menggunakan ShowModal Anda dapat mengetahui modal result dari form. Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy, yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu Anda perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree. procedure TfrmFormDLL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil oleh program lain. Exports ShowFormDLL, ShowFormDLLModal; begin end. Untuk membuat kode di atas menjadi file DLL Anda dapat memilih menu Project | Build. Menambahkan form pada DLL Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan meletakkan rutinrutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau disk. Anda dapat mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat dibuang dari memory. Dengan demikian aplikasi yang Anda buat dapat lebih menghemat penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE. Dengan demikian Anda cukup

menyertakan patches kepada program Anda tanpa Anda harus menyertakan seluaruh aplikasi. Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode program diletakkan pada file DLL. Membuat file DLL Untuk membuat file DLL, caranya pilih menu File | New | DLL. Anda dapat menyimpan project tersebut dengan ProyekDLL.dpr. Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file DLL. Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project dan pilih file unit dari Form (pada contoh ini adalah FormDLL.pas). Contoh DLL ini mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan ShowModal. procedure ShowFormDLL;stdcall; begin frmFormDLL :=TfrmFormDLL.Create(nil); frmFormDLL.Show; end; Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru dibuat tersebut akan ditampilkan dengan menggunakan method Show. Untuk menampilkan form secara modal caranya sedikit berbeda. function ShowFormDLLModal:integer;stdcall; begin frmFormDLL := TfrmFormDLL.Create(nil); Result := frmFormDLL.ShowModal; end; Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan menggunakan ShowModal Anda dapat mengetahui modal result dari form. Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy, yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu Anda perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree. procedure TfrmFormDLL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil oleh program lain. Exports ShowFormDLL, ShowFormDLLModal;

begin end. Untuk membuat kode di atas menjadi file DLL Anda dapat memilih menu Project | Build. Menambahkan form pada DLL Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan meletakkan rutinrutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau disk. Anda dapat mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat dibuang dari memory. Dengan demikian aplikasi yang Anda buat dapat lebih menghemat penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE. Dengan demikian Anda cukup menyertakan patches kepada program Anda tanpa Anda harus menyertakan seluaruh aplikasi. Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode program diletakkan pada file DLL. Membuat file DLL Untuk membuat file DLL, caranya pilih menu File | New | DLL. Anda dapat menyimpan project tersebut dengan ProyekDLL.dpr. Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file DLL. Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project dan pilih file unit dari Form (pada contoh ini adalah FormDLL.pas). Contoh DLL ini mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan ShowModal. procedure ShowFormDLL;stdcall; begin frmFormDLL :=TfrmFormDLL.Create(nil); frmFormDLL.Show; end; Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru dibuat tersebut akan ditampilkan dengan menggunakan method Show. Untuk menampilkan form secara modal caranya sedikit berbeda. function ShowFormDLLModal:integer;stdcall; begin frmFormDLL := TfrmFormDLL.Create(nil); Result := frmFormDLL.ShowModal; end;

Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan menggunakan ShowModal Anda dapat mengetahui modal result dari form. Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy, yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu Anda perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree. procedure TfrmFormDLL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil oleh program lain. Exports ShowFormDLL, ShowFormDLLModal; begin end. Untuk membuat kode di atas menjadi file DLL Anda dapat memilih menu Project | Build. Menambahkan form pada DLL Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan meletakkan rutinrutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau disk. Anda dapat mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat dibuang dari memory. Dengan demikian aplikasi yang Anda buat dapat lebih menghemat penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE. Dengan demikian Anda cukup menyertakan patches kepada program Anda tanpa Anda harus menyertakan seluaruh aplikasi. Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode program diletakkan pada file DLL. Membuat file DLL Untuk membuat file DLL, caranya pilih menu File | New | DLL. Anda dapat menyimpan project tersebut dengan ProyekDLL.dpr. Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file DLL. Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project dan pilih file unit dari Form (pada contoh ini adalah FormDLL.pas). Contoh DLL ini

mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan ShowModal. procedure ShowFormDLL;stdcall; begin frmFormDLL :=TfrmFormDLL.Create(nil); frmFormDLL.Show; end; Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru dibuat tersebut akan ditampilkan dengan menggunakan method Show. Untuk menampilkan form secara modal caranya sedikit berbeda. function ShowFormDLLModal:integer;stdcall; begin frmFormDLL := TfrmFormDLL.Create(nil); Result := frmFormDLL.ShowModal; end; Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan menggunakan ShowModal Anda dapat mengetahui modal result dari form. Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy, yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu Anda perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree. procedure TfrmFormDLL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil oleh program lain. Exports ShowFormDLL, ShowFormDLLModal; begin end. Untuk membuat kode di atas menjadi file DLL Anda dapat memilih menu Project | Build. Menambahkan form pada DLL Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan meletakkan rutinrutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau disk. Anda dapat

mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat dibuang dari memory. Dengan demikian aplikasi yang Anda buat dapat lebih menghemat penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE. Dengan demikian Anda cukup menyertakan patches kepada program Anda tanpa Anda harus menyertakan seluaruh aplikasi. Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode program diletakkan pada file DLL. Membuat file DLL Untuk membuat file DLL, caranya pilih menu File | New | DLL. Anda dapat menyimpan project tersebut dengan ProyekDLL.dpr. Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file DLL. Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project dan pilih file unit dari Form (pada contoh ini adalah FormDLL.pas). Contoh DLL ini mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan ShowModal. procedure ShowFormDLL;stdcall; begin frmFormDLL :=TfrmFormDLL.Create(nil); frmFormDLL.Show; end; Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru dibuat tersebut akan ditampilkan dengan menggunakan method Show. Untuk menampilkan form secara modal caranya sedikit berbeda. function ShowFormDLLModal:integer;stdcall; begin frmFormDLL := TfrmFormDLL.Create(nil); Result := frmFormDLL.ShowModal; end; Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan menggunakan ShowModal Anda dapat mengetahui modal result dari form. Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy, yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu Anda perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree. procedure TfrmFormDLL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end;

Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil oleh program lain. Exports ShowFormDLL, ShowFormDLLModal; begin end. Untuk membuat kode di atas menjadi file DLL Anda dapat memilih menu Project | Build.

Membuat efek flat Kadang kala kita mungkin ingin membuat tampilan program kita sedikit berbeda dengan biasanya. Dengan tips berikut ini Anda bisa membuat komponen checkbox, radiobutton dan button menjadi flat. procedure TForm1.Flatten(theControl: TWinControl); var dwStyle: Longint; begin dwStyle := GetWindowLong(theControl.handle, GWL_STYLE) or BS_FLAT; SetWindowLong(theControl.Handle, GWL_STYLE, dwStyle); end; procedure TForm1.FormCreate(Sender: TObject); begin Flatten(Button1); Flatten(CheckBox1); Flatten(RadioButton1); end; Di sini kita menggunakan salah satu fungsi (function) Windows API, yaitu GetWindowLong yang deklarasinya sbb: function GetWindowLong (hwnd : HWND; int : integer) : integer; Fungsi GetWindowLong digunakan untuk mencari informasi mengenai window tertentu. Window di sini bisa kita artikan sebagai komponen visual seperti checkbox, radio button dan sebagainya. Parameter pertama dari fungsi GetWindowLong merupakan handle window dari komponen yang akan kita ubah menjadi flat. Parameter kedua merupakan informasi window yang akan kita ambil. Dalam hal ini parameter kedua tersebut kita isi dengan

GWL_STYLE yang artinya kita ingin memperoleh informasi style dari window tersebut. Fungsi kedua yang kita pakai adalah SetWindowLong. Fungsi tersebut adalah untuk mengubah atribut atau style dari suatu window. Untuk mengetahui secara lebih detail tentang fungsi Windows API Anda dapat membaca di help yang disertakan pada saat kita menginstall Delphi, pada bagian Win32 Programmer's Reference. Adapun kode selengkapnya adalah sebagai berikut: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; CheckBox1: TCheckBox; RadioButton1: TRadioButton; ListBox1: TListBox; procedure FormCreate(Sender: TObject); private procedure Flatten(theControl: TWinControl); procedure Flatten2(theControl: TEdit); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Flatten(theControl: TWinControl); var dwStyle: Longint; begin dwStyle := GetWindowLong(theControl.handle, GWL_STYLE) or BS_FLAT; SetWindowLong(theControl.Handle, GWL_STYLE, dwStyle); end; procedure TForm1.FormCreate(Sender: TObject); begin Flatten(Button1); Flatten(CheckBox1);

Flatten(RadioButton1); end; end.


2001 - 2006 Klik Kanan Dilarang memperbanyak artikel yang terdapat pada situs ini tanpa seizin Klik Kanan.

Mendisable menu dan tombol Close


Oleh: Setiaji

Sebuah form biasanya mempunyai tiga tombol yang terletak pada bagian title bar, yaitu tombol maximize, minimize, close. Untuk Dengan tips di bawah ini Anda dapat mendisable tombol/menu close. procedure TForm1.FormCreate(Sender: TObject); var hMenuHandle : HMENU; begin hMenuHandle := GetSystemMenu(Form1.Handle, FALSE); if (hMenuHandle <> 0) then DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND); end; Langkah pertama adalah mencari handle dari window menu (atau System menu atau Control menu), caranya yaitu dengan menggunakan fungsi GetSystemMenu. function GetSystemMenu (hWnd : HWND, bRevert : Boolean) : HMENU; Parameter pertama dari fungsi GetSystemMenu adalah handle dari window atau form. Dalam contoh ini nama formnya adalah Form1. Parameter kedua adalah bRevert. Jika nilai bRevert bernilai True maka nilai balik dari fungsi GetSystemMenu adalah NULL, sebaliknya jika bRevert bernilai False maka nilai baliknya adalah handle dari copy dari window menu. Langkah selanjutnya adalah "menghapus" item pada window menu dengan menggunakan fungsi DeleteMenu. function DeleteMenu (hMenu : HMENU, uPosition : integer, uFlags : integer): Boolean Parameter pertama adalah handle dari window menu (yang merupakan hasil pencarian dengan fungsi GetSystemMenu). Parameter kedua merupakan posisi atau pengenal menu. Jika Anda mengisi parameter ketiga dengan MF_BYCOMMAND maka parameter kedua dapat bernilai SC_CLOSE, SC_MOVE, dan SC_SIZE. Sebaliknya jika Anda mengisi parameter ketiga dengan MF_BYPOSITION maka Anda dapat mengisi parameter kedua dengan suatu nilai integer yang merepresentasikan menu Close.

Fungsi DeleteMenu akan mengembalikan nilai True jika penghapusan menu berhasil dan mengembalikan nilai False jika gagal. Kedua perintah di bawah ini akan mendapatkan hasil yang sama: DeleteMenu(hMenuHandle, 6, MF_BYPOSITION); DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND)

Menambahkan fasilitas skin pada aplikasi dengan SXSkinComponents


Mungkin Anda semua sudah sering melihat aplikasi yang menggunakan konsep skin, misalnya Win Amp, WindowBlind, dll. Dengan konsep skin, maka user dapat dengan mudah mengganti tampilan programnya. Mungkin saja Anda terinspirasi untuk membuat program yang dilengkapi dengan fasilitas skin. Bagaimana caranya? Cara yang paling mudah adalah dengan menggunakan komponen. Salah satu yang cukup menarik dan bisa Anda coba adalah SXSkinComponents. SXSkinComponents dapat digunakan untuk Delphi 6, Delphi 7, Delphi 2005, Delphi 2006, C++Builder 6 and C++Builder 2006 dan pada sistem operasi Windows 98/ME/NT/2000/XP/2003. Selain fitur yang cukup menarik, salah satu hal yang memberi nilai tambah adalah komponen ini gratis! Di bawah ini adalah contoh tampilan dari program yang dilengkapi dengan komponen SXSkinComponents. Klik pada gambar untuk melihat tampilan yang lebih besar.

Homepage: http://www.saarixx.info/sxskincomponents/en/index.htm Download:http://www.saarixx.info/sxskincomponents/en/downloads.php Ukuran File: 3,3 Mb

Anda mungkin juga menyukai