Jarang sekali programmer membuat sebuah komponen/objek visual pada saat runtime. Artinya mereka membuat sebuah komponen visual pada saat program di jalankan (run). Biasanya semua dibuat pada saat mereka merancang tampilan program dengan meletakkan semua komponen seperti tombol (TButton), Combobox, dan lain sebagainya pada form. Cara seperti ini sering disebut dengan istilah “Designtime” atau saat merancang.
Namun jika anda perlu sekali untuk membuat sebuah komponen visual secara runtime, mungkin cara ini adalah cara pragmatis yang tepat untuk anda ikuti. Kali ini kita coba untuk membuat sebuah tombol (TButton) pada saat program dijalankan. Jadi rencananya dengan menekan sebuah tombol yang pasang pada Form pada saat designtime, program akan membuat tombol yang lain. Baik langsung saja.
Letakkan sebuah tombol pada Form utama, kemudian masuklah pada bagian prosedur OnClick tombol tersebut. Pada frame OnClick tersebut masukkan kode berikut:
procedure TForm1.Button1Click(Sender: TObject);
var
btnRunTime : TButton;
begin
btnRunTime := TButton.Create(Form1);
with btnRunTime do begin
Visible := true;
Top := 64;
Left := 50;
Width := 150;
Caption := 'My Runtime Button';
Name := 'Runtimebutton';
Parent := Form1;
end;
Pada kode diatas kita menggunakan metode “Create”, dimana sebuah kelas objek TButton dibuat menggunakan perintah create. Setelah pemanggilan create, kemudian kita deklarasikan property button yang akan tampil nanti, mulai dari visibilitas, parental, posisi tombol, lebar, caption, dan tidak tertinggal adalah nama objek itu sendiri. Semua persis seperti kita membuat tombol pada saat designtime, hanya saja kita menuliskan value sebuah objek secara pragmatis melalui sebuah kode.
Jika anda berniat untuk memberikan sebuah aksi pada tombol yang kita buat secara runtime, misalnya pada event OnClick (aksi pada saat tombol di-klik), pertama deklarasikan sebuah prosedur OnClick pada bagian Private Declarations seperti dibawah ini.
...
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure KlikTombol(Sender: TObject);
public
{ Public declarations }
end;
...
setelah itu buatlah prosedur dengan nama KlikTombol seperti kode berikut.
procedure TForm1.KlikTombol(Sender: TObject);
begin
with (Sender as TButton) do
ShowMessage('Hello Sonoku!!');
end;
Kemudian tambahkan pada event OnClick tombol “Buat Tombol” sebuah deklarasi event KlikTombol tadi sehingga kodenya akan seperti berikut.
procedure TForm1.Button1Click(Sender: TObject);
var
btnRunTime : TButton;
begin
btnRunTime := TButton.Create(Form1);
with btnRunTime do begin
Visible := true;
Top := 64;
Left := 50;
Width := 150;
Caption := 'My Runtime Button';
Name := 'Runtimebutton';
Parent := Form1;
OnClick := KlikTombol;
end;
Cukup mudah bukan? Perhatikan sekarang, bagaimana jika tombol “Buat Tombol” di-klik untuk kedua kalinya? Pastinya akan muncul pesan orror bahwa terdapat duplikasi nama sebuah objek. Hal ini memang sangat dilarang dalam Delphi. Untuk jika anda ingin membuat tombol lain secara runtime, anda harus membuat tombol tersebut dengan nama yang unik. Perhatikan contoh kode berikut.
procedure TForm1.Button2Click(Sender: TObject);
var
btnRunTime : TButton;
i: Integer;
begin
for i:= 1 to 5 do
begin
btnRunTime := TButton.Create(nil);
with btnRunTime do
begin
Visible := true;
Top := 110+(i*25);
Left := 50+(i*5);
Width := 150;
Caption := 'My Runtime Button ke-'+InttoStr(i);
Name := 'Runtimebutton'+InttoStr(i);
Parent := Form1;
OnClick := KlikTombol;
end;
end;
end
Contoh diatas akan membuat tombol sebanyak 5 kali, kemudian menatanya sedemikian rupa agar tidak bertumpuk dengan memodifikasi properti top dan left tombol. Agar nama objek menjadi unik, kita tambahkan sebuah angka yang diambilkan dari variabel iterasi “i” di belakang value properti Name tombol. Namun tetap saja, jika tombol “Buat Tombol 5” ditekan utuk kedua kalinya akan tetap muncul pesan erorr duplikat nama objek. Lalu bagaiamana mengatasinya? Tunggu artikel berikutnya…oke 🙂
Source Code (170kB)