Tutorial Delphi

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

st1\:*{behavior:url(#ieooui) }
<!– /* Font Definitions */ @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:””; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:”Times New Roman”; mso-fareast-font-family:”Times New Roman”;} h1 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:1; font-size:24.0pt; font-family:”Times New Roman”; font-weight:bold;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:”Times New Roman”; mso-fareast-font-family:”Times New Roman”;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} –>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:””;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
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 Keterangan
EWX_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);

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;

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;

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;

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;

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.


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;

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”

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

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.

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.

Mendisable menu dan tombol Close

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.

%d bloggers like this: