tutorial delphi

48
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 memperoleh empat buah file. Copy keempat file tersebut ke direktory Lib (biasanya C:\Program Files\Borland\Delphi 3\Lib). 2. Jalankan program Delphi Anda. Dari menu Component, pilih Install Component. 3. Pada bagian Unit File Name, klik Browse dan arahkan ke letak file IEBtn.pas (C:\Program Files\Borland\Delphi 3\Lib\IEBtn.pas). 4. Untuk bagian Package File Name, Anda bisa mengisi dengan C:\Program Files\Borland\Delphi 3\Lib\dclusr30.dpk. 5. Klik OK. 6. 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

Upload: indraoco

Post on 05-Jul-2015

406 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tutorial Delphi

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 memperoleh empat buah file. Copy keempat file tersebut ke direktory Lib (biasanya C:\Program Files\Borland\Delphi 3\Lib).

2. Jalankan program Delphi Anda. Dari menu Component, pilih Install Component.3. Pada bagian Unit File Name, klik Browse dan arahkan ke letak file IEBtn.pas (C:\

Program Files\Borland\Delphi 3\Lib\IEBtn.pas).4. Untuk bagian Package File Name, Anda bisa mengisi dengan C:\Program Files\

Borland\Delphi 3\Lib\dclusr30.dpk. 5. Klik OK. 6. 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

Page 2: Tutorial Delphi

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

Page 3: Tutorial Delphi

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

typeTForm1 = 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.

Page 4: Tutorial Delphi

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 KeteranganEWX_RESTART Melakukan restart dengan menampilkan

peringatan.EWX_SHUTDOWN Melakukan shutdown dengan menampilkan

peringatan.EWX_LOGOFF Melakukan log off dengan menampilkan

peringatan.EWX_FORCE 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 ArtiSW_SHOWMINIMIZED Menampilkan aplikasi secara minimal

(berbentuk icon)SW_SHOWMAXIMIZED Menampilkan aplikasi dengan (ukuran) window

maksimalSW_SHOWNORMAL 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 Arti

Page 5: Tutorial Delphi

0 Windows mengalami out of memory atau resources

ERROR_BAD_FORMAT File yang dijalankan bukan merupakan file aplikasi Windows

ERROR_FILE_NOT_FOUND File yang dijalankan tidak ditemukanERROR_PATH_NOT_FOUND 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 :

Page 6: Tutorial Delphi

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 :

Page 7: Tutorial Delphi

access.cpl = Accessibility Optionsappwiz.cpl = Add/Remove Programdesk.cpl = Display Propertiesintl.cpl = Regional Settings joy.cpl = Joystick main.cpl =Mouse mmsys.cpl = Multimediamodem.cpl = Modems Propertiesnetcpl.cpl = Network Propertiespassword.cpl = Password Settingssysdm.cpl = System Propertiestimedate.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)       else       {jika disk drive tidak kosong maka ......}end;

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;

Page 8: Tutorial Delphi

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,

pilih New Form). Beri nama form tersebut dengan FrmSplash.3. Tambahkan komponen Timer (terletak pada tab Win32), beri nama dengan

tmMainTimer.4. 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

digunakan sebagai splash screen dan klik tombol ">" untuk memindah form splash screen ke bagian Available forms.

8. Kalau sudah klik OK.9. 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.

Page 9: Tutorial Delphi

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;

Page 10: Tutorial Delphi
Page 11: Tutorial Delphi

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;

Page 12: Tutorial Delphi

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,      State); end;

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;

Page 13: Tutorial Delphi

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'

Page 14: Tutorial Delphi

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 PortPort 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.

Page 15: Tutorial Delphi

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.

Page 16: Tutorial Delphi

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).

Page 17: Tutorial Delphi

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 DelphiTidak 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

Page 18: Tutorial Delphi

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 Bit 0 = LED1 = 00000001 bin = 1 hex = 1 decDataPort Bit 1 = LED2 = 00000010 bin = 2 hex = 2 decDataPort Bit 2 = LED3 = 00000100 bin = 4 hex = 4 decDataPort Bit 3 = LED4 = 00001000 bin = 8 hex = 8 decDataPort Bit 4 = LED5 = 00010000 bin = 10 hex = 16 decDataPort Bit 5 = LED6 = 00100000 bin = 20 hex = 32 decDataPort Bit 6 = LED7 = 01000000 bin = 40 hex = 64 decDataPort Bit 7 = LED8 = 10000000 bin = 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;

Page 19: Tutorial Delphi

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;

Page 20: Tutorial Delphi

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.

Page 21: Tutorial Delphi

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)+'      Jam '+IntToStr(m)+' Menit '+IntToStr(s)+' Detik';end;

Sedangkan contoh penggunaannya adalah sebagai berikut:

procedure TForm1.Button1Click(Sender: TObject);begin     Label1.Caption:=UpTime;

end;

Page 22: Tutorial Delphi

AutoScroll pada palette Delphi

Anda yang sudah familiar dengan Delphi tentunya tidak asing lagi dengan komponen-komponennya 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:

HKEY_CURRENT_USER\Software\Borland\5.0\4. 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.5. Pindah ke subkey yang baru saja dibuat (subkey Extras).6. Buat sebuah String Value. Caranya klik kanan, pilih New - String Value. Beri nama

dengan AutoPaletteScroll. Beri nilai pada AutoPaletteScroll dengan 1.7. 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

Page 23: Tutorial Delphi

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 fontSecara 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 InspectorSeperti 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"

Page 24: Tutorial Delphi

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.

Page 25: Tutorial Delphi

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 nLeftRect, // x-coordinate of the upper-left corner of the bounding rectangle int nTopRect, // y-coordinate of the upper-left corner of the bounding rectangle int nRightRect, // x-coordinate of the lower-right corner of the bounding rectangle int nBottomRect // y-coordinate of the lower-right corner of the bounding rectangle );

Page 26: Tutorial Delphi

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.icoIconIndex=0InfoTip=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'),    FILE_ATTRIBUTE_SYSTEM);end;

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.

Page 27: Tutorial Delphi

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;

Page 28: Tutorial Delphi

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

menjadi DBDEMOS, TableName menjadi Customer dan IndexName menjadi ByCompany. Aktifkan tabel dengan mengatur property Active menjadi True.

3. 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.

4. 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.

Page 29: Tutorial Delphi

Gambar : Report dengan group saat run time

Dari gambar di atas terlihat bahwa daftar nama Company dikelompokkan berdasarkan huruf depan yang sama.

Page 30: Tutorial Delphi

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 rutin-rutin 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.

Page 31: Tutorial Delphi

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 rutin-rutin 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;

Page 32: Tutorial Delphi

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 rutin-rutin 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

Page 33: Tutorial Delphi

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

Page 34: Tutorial Delphi

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 rutin-rutin 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

Page 35: Tutorial Delphi

   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 rutin-rutin 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

Page 36: Tutorial Delphi

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 rutin-rutin 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

Page 37: Tutorial Delphi

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.

 

Page 38: Tutorial Delphi

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

Page 39: Tutorial Delphi

usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

typeTForm1 = class(TForm)Edit1: TEdit;Button1: TButton;CheckBox1: TCheckBox;RadioButton1: TRadioButton;ListBox1: TListBox;procedure FormCreate(Sender: TObject);privateprocedure Flatten(theControl: TWinControl);procedure Flatten2(theControl: TEdit);{ Private declarations }public{ Public declarations }end;

varForm1: 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 CloseOleh: Setiaji

Page 40: Tutorial Delphi

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)

Page 41: Tutorial Delphi

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.htmDownload:http://www.saarixx.info/sxskincomponents/en/downloads.phpUkuran File: 3,3 Mb