Windows mempunyai keyboard virtual mulai dari versi Windows 7, tetapi terkadang kita masih membutuhkan keahlian membuat keyboard virtual untuk software-software tertentu. Misalnya, membuat kalkulator, memakai touchsreen dari software yang kita buat, membatasi pemasukan dari user, dan lain-lain, tergantung kreatifitas programmer.
Untuk contoh aplikasi. Saya membuat tombol angka 0 s.d. 9 dan tombol huruf dengan TSpeedbutton dan sebuat memo dengan TMemo seperti dibawah ini.
Sekarang kita akan membuat prosedur supaya software memunculkan huruf/angka di memo. Ada 3 jenis prosedur. Prosedur utama akan memunculkan angka/huruf berdasarkan ketikan user, dan prosedur di masing-masing tombol yang memanggil prosedur pertama tadi.
Satu hal yang harus diingat dalam menggunakan tombol. TSpeedbutton lebih cocok untuk touchscreen daripada TButton dan TBitBtn. Ini disebabkan karena TSpeedbutton tidak menangkap fokus. Fokus tetap pada obyek yang ingin kita tulis. Jika Anda ngotot menggunakan TButton, maka Anda harus berusaha mengembalikan fokus pada bidang tempat menulis. Dalam kasus di artikel ini, prosedur OnClick-nya menjadi begini:
DeteksiKarakter(Sender);
ActiveControl := memo1;
Prosedur Penampil Huruf/Angka ke Obyek Tulis
Prosedur ini bertanggung jawab membuat sistem operasi memunculkan ketikan user tadi pada obyek yang sedang mendapat fokus.
procedure TForm1.TampilkanKarakter(Karakter: Char );
var
layoutKeyboard : HKL;
Key : integer;
begin
layoutKeyboard := GetKeyboardLayout(0);
Key := VkKeyScanEx(Karakter,layoutKeyboard);
keybd_event(39, 0, 0, 0);
keybd_event(39, 0, KEYEVENTF_KEYUP, 0);
keybd_event(LoByte(Key), 0, 0, 0);
keybd_event(LoByte(Key), 0, KEYEVENTF_KEYUP, 0);
end;
Fungsi GetKeyboardLayout dan keybd_event ada di unit Windows, sehingga jangan lupa menyertakan unit Windows pada bagian uses.
Prosedur Penangkap Angka/Huruf Ketikan User
Agar lebih simpel. Saya akan menggunakan caption dari masing-masing tombol untuk mengetahui angka/huruf yang ditekan oleh user.
isiCaption := TSpeebbutton(Sender).Caption;
Karena saya menggunakan tipe data string (bukan char), maka ada kemungkinan lebar data lebih dari satu. Saya jaga-jaga saja agar data yang saya dapatkan satu saja, maka saya menuliskan kode ini
karakter := isiCaption[1];
Lantas saya menyerahkan pemrosesan "seakan-akan berasal keyboard" dengan memanggil prosedur TampilkanKarakter.
procedure TForm1.DeteksiKarakter(Sender: TObject);
var
isiCaption : string;
karakter : char;
begin
isiCaption := TSpeedbutton(Sender).Caption;
karakter := isiCaption[1];
TampilkanKarakter(karakter);
end;
Prosedur Pemanggil Prosedur Utama di masing-masing tombol
Sertakan prosedur DeteksiKarakter diatas pada event OnClick masing-masing tombol seperti dibawah ini.
DeteksiKarakter(Sender);
agar tampil hurup capital gimana gan??
BalasHapusSaya jawab di artikel ini:
Hapushttps://octacintadelphi.blogspot.co.id/2018/05/membuat-keyboard-virtual-meng-kapital.html