Boleh jadi kamu membenci sesuatu, padahal ia amat baik bagimu,
dan boleh jadi (pula) kamu menyukai sesuatu padahal ia amat buruk bagimu;
Allah mengetahui, sedang kamu tidak mengetahui. (QS. 2:216)
Jadwal Sholat untuk wilayah Jakarta dan Sekitarnya, Kamis, 24 Mei 2012/3 Rajab 1433 H : Imsak 4:26:59 - Shubuh 4:33:25 - Terbit 5:55:33 - Dzuhur 11:49:46 - Ashar 15:11:48 - Maghrib 17:44:03 - Isya' 18:57:40 WIB

Penulis Topik: Properties KeyPreview di MDIForm Kok Enggak Ada Ya ? (VB)  (Dibaca 216 kali)


Offline k4m4r82

  • myQ Newbie
  • *
  • Tgl Gabung: Mar 2007
  • Tulisan: 27
    • Lihat Profil
« pada: 10 Mei 2009, 11:25:28 »
Kalo enggak salah ada 2 jenis form yang di kenal VB yaitu :
1. SDI Form
2. MDI Form
Trus Apa perbedaan antara SDI Form dan MDI Form ? Cari sendiri aja ya :D
:mandir:
Gimana udah dapat perbedaannya ? Ok salah satu properties penting yang dimiliki SDI Form adalah KeyPreview. Jika nilainya di set True, maka form akan terlebih dulu merespon event keyboard dibandingkan objek lainnya. Misal kita ingin menambahkan fungsi Shortcut berikut :
Kode: [Pilih]
Private Sub Form_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyEscape Then cmdSelesai_Click 'tombol ESC
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyT And (Shift And vbAltMask) Then 'tombol CTRL + T
        If cmdTambah.Enabled = True Then cmdTambah_Click
           
    ElseIf KeyCode = vbKeyB And (Shift And vbAltMask) Then 'tombol CTRL + B
        If cmdPerbaiki.Enabled = True Then cmdPerbaiki_Click
       
    ElseIf KeyCode = vbKeyH And (Shift And vbAltMask) Then 'tombol CTRL + H
        If cmdHapus.Enabled = True Then cmdHapus_Click
       
    ElseIf KeyCode = vbKeyE And (Shift And vbAltMask) Then 'tombol CTRL + E
        cmdSelesai_Click
           
    End If
End Sub

Kode diatas tidak akan jalan jika Properties KeyPreview masih dalam kondisi False (ingat nilai default properties KeyPreview = False). Nah sesuai dengan judul thread ini yang menjadi pertanyaan adalah MDI Form tidak mempunyai properties KeyPreview, trus bagaimana solusinya jika kita ingin menambahkan tombol Shortcut ?
Ada banyak cara, salah satu solusi yang mudah dan murah tentunya :D adalah sebagai berikut :
1. Tambahkan objek Timer kemudian set nilai Intervalnya misal 100
2. Ketikkan kode berikut (misal untuk shortcut pencarian (CTRL + F))
Kode: [Pilih]
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Timer1_Timer()
    If GetAsyncKeyState(vbKeyF) And &H8000 Then
       If GetAsyncKeyState(vbKeyControl) And &H8000 Then
           'TODO : tampilkan dialog pencarian
       End If
   End If
End Sub

Pertanyaan berikutnya, kenapa ada nilai &H8000 ?

Selamat mencoba :)
« Edit Terakhir: 10 Mei 2009, 11:32:31 oleh k4m4r82 »