Deteksi status tombol INSERT
March 24, 2006 at 6:19 pm | In Code Samples | Leave a CommentDiambil dari blog IwanCS
Kita dapat mengetahui status tombol CAPS Lock, NUMS Lock atau SCROLL Locks dari lampu indikator pada semua keyboard. Namun bagaimana kita bisa mendeteksi status tombol INSERT apakah mode insert sedang aktif atau tidak.
Trik berikut ini dapat mendeteksi status tombol tersebut:
function IsInsertKeyOn: boolean; begin Result := Odd (GetKeyState(VK_INSERT)); end;
Penjelasan
Perintah Odd:
Memeriksa apakah nilai yang di evaluasi bernilai ganjil atau tidak
Perintah GetKeyState:
Akan mengembalikan nilai status dari nilai yang di evaluasi (VK_INSERT)
Perintah ini akan mengembalikan nilai biner 8 bit (0000 0000), dengan ketentuan sebagai berikut:
Bit High Order akan bernilai 1000 jika tombol sedang ditekan
Bit High Order akan bernilai 0000 jika tombol tidak sedang ditekan
Bit Low Order akan bernilai 0001 jika tombol sedang Toggle On
Bit Low Order akan bernilai 0000 jika tombol tidak sedang Toggle Off
Contoh penggunaan:
Tambahkan unit Windows pada uses list. Letakkan komponen TLabel di form dan berikan nilai property:
Label1.Caption := ‘INS’;
Kemudian pada event Form Paint, tambahkan kode berikut:
procedure TForm1.FormPaint(Sender: TObject); begin inherited; if IsInsertKeyOn then Label1.Font.Color := clBlack else Label1.Font.Color := clGray; end;
Hasil dari perintah diatas akan memberikan warna font dari komponen Label1 dengan warna abu-abu saat tombol Ins berstatus Toggle Off dan warna hitam saat tombol Ins berstatus Toggle On.
Event diatas hanya terjadi saat form digambar ulang, contoh pada saat form mendapat fokus. Agar efek status pada komponen Label dapat langsung dilihat, tambahkan kode berikut pada event Form KeyDown, dengan sebelumnya menset nilai property Form1.KeyPreview menjadi True:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_INSERT then Self.Repaint; end;
Dengan kode tersebut maka setiap kali user menekan tombol INS maka akan memanggil event FormPaint yang kemudian akan memberikan warna pada komponen Label1 sesuai statusnya.
No Comments Yet »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.