Assalamu’alaikum Wa Rohmatullohi Wa Barokatuh.
Taqobalallahu Minna Waminkum Siyamanna Wasiyamakum Taqobal Yaa Kariim.
Minal Aidin wal Faizin, Mohon maaf Lahir dan Bathin.
Selamat Hari Raya Idul Fitri 1436H.
Pada kesempatan kali ini saya ingin berbagi sedikit tips sederhana, yaitu bagaimana kita memperlakukan sebagian atau semua komponen TEdit agar hanya bisa diisi dengan angka dengan acuan nama komponennya, secara otomatis tanpa memberikan pengaturan atau koding satu persatu (yang dilakukan hanya cara penamaan komponen saja).
Untuk membedakan mana komponen TEdit yang hanya bisa diisi dengan angka dan mana yang bisa diisi secara normal, kita buat sebuah aturan yaitu semua komponen TEdit yang namanya dimulai dengan huruf “en” (huruf kecil), maka dia hanya bisa diisi dengan angka, sementara untuk nama yang lain dia akan berfungsi secara normal.
Langsung saja, caranya cukup sederhana yaitu dengan meng-override procedure KeyPress milik TEdit …
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type // Tambahkan ini TEdit = class(StdCtrls.TEdit) procedure KeyPress(var Key: Char); override; end; // Sampai sini TForm1 = class(TForm) enEdit1: TEdit; Edit2: TEdit; enEdit3: TEdit; Edit4: TEdit; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TEdit } procedure TEdit.KeyPress(var Key: Char); begin inherited; if (Pos('en',Name)=1) and // Jika nama diawali dengan "en" (Pos(Key,'0123456789-'#8#13+DecimalSeparator)=0) then Key:=#0; // hanya menerima angka dan pemisah desimal end; end.
Semoga bermanfaat.
Contoh source code dapat didownload di https://app.box.com/s/enc1s0d4jntrozig5dike4uz31g245qy
Update 22/07/2015-15:00
– Mendukung pemisah desimal.
Perubahan :
– Sebelumnya mengoverride procedure CreateParams dirubah menjadi procedure KeyPress
Bagus nih ide 😀 nggak kepikiran soalnya ane nubi hehhe, ijin sedot idenya 😀