Sabtu, 23 Mei 2009

Melakukan Close Form pada Saat Event OnCreate atau OnShow pada Borland Delp

Tadi sore salah seorang rekan penulis titip pesan untuk dicarikan solusi terhadap permasalahan yang dihadapinya. Kebetulan rekan penulis ini adalah pengguna Borland Delphi dan memiliki permasalahan sebagai berikut. Dia ingin melakukan close form (menutup form) secara lagsung pada saat event OnCreate atau OnShow form tersebut. Pada kasus ini dia ceritanya sedang membuat suatu sistem sekuriti hak akses pada aplikasi dimana kita bisa memberi hak akses terhadap orang lain apakah bisa membuka form tersebut atau tidak.

Setelah berburu di internet akhirnya ketemu juga solusinya. Ternyata sangat mudah sekali caranya. Pada Windows terdapat Windows message yaitu WM_CLOSE yang digunakan untuk menutup suatu window. Windows message WM_CLOSE ini kemudian kita kirimkan dengan prosedur PostMessage. Kenapa menggunakan PostMessage? Kenapa bukan SendMessage? Ini disebabkan karena PostMessage sifatnya adalah mengirimkan Windows message ke dalam message queue. Berbeda dengan SendMessage yang mengirimkan Windows message dan sifatnya menunggu sampai ada respon balik. Untuk lebih jelasnya akan dijelaskan dalam contoh berikut ini.

Dalam contoh ini penulis menggunakan Borland Delphi 6.0. Buatlah sebuah project baru. Secara otomatis akan tercipta Form1. Letakkan sebuah komponen Button pada Form1 dan kemudian buatlah form baru (melalui menu File | New | Form). Kemudian pilih menu Project | Options. Kemudian akan muncul Project Options dialog box, pilih tab Forms dan arahkan Form2 ke bagian 'Available forms' (ini akan membuat Form2 tidak di-create secara otomatis). Kemudian tekan tombol OK. Sekarang Anda harus mengetikkan code berikut pada bagian event OnClick pada tombol Button1 tersebut.

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.ShowModal;
Form2.Free;
end;

Setelah itu ketik code seperti berikut ini pada event OnCreate atau OnShow pada Form2. Pada contoh di bawah code diletakkan pada event OnShow.

procedure TForm2.FormShow(Sender: TObject);
begin
PostMessage(self.handle, WM_CLOSE, 0, 0);
Screen.Cursor := crDefault;
end;

Kalau kita lihat pada code di atas maka hanya terdapat dua baris code, sangat sederhana sekali bukan. Yang pertama adalah perintah PostMessage dengan mengirimkan Windows message WM_CLOSE. Pada baris kedua ada perintah untuk mengembalikan cursor kepada keadaan semula. Silakan Anda jalankan program di atas dan tekanlah tombol yang ada pada Form1, akan nampak bahwa Form2 tidak akan sampai dimunculkan karena sudah ditutup dengan pengiriman Windows message WM_CLOSE pada Form2 dengan perintah PostMessage.
Silakan download source code lengkap dari project di atas

Demikianlah tips sederhana mengenai proses close form pada event OnShow atau OnCreate pada Borland Delphi. Semoga bermanfaat.

Design by infinityskins.blogspot.com 2007-2008