Agar komponen TEdit hanya bisa diisi angka dengan acuan nama komponen

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

2 Comments to Agar komponen TEdit hanya bisa diisi angka dengan acuan nama komponen

  1. Imam Chalimi says:

    Update 22/07/2015-15:00
    – Mendukung pemisah desimal.

    Perubahan :
    – Sebelumnya mengoverride procedure CreateParams dirubah menjadi procedure KeyPress

  2. Arachmadi says:

    Bagus nih ide 😀 nggak kepikiran soalnya ane nubi hehhe, ijin sedot idenya 😀

Leave a Reply

Your email address will not be published.