VB de klavye Olayları

9 Tem 2007
130
0
KeyPreview

Form aktifken basılan tuşlardan formun etkilenip etkilenmeyeceği bu özellik kullanılarak ayarlanılır. Bu özellik iki değer alabilir. Eğer değer true ise formda bulunan herhangi bir kontrolün üzerinde basılan tuşlar ilk önce formun KeyPress, Keydown, KeyUp olaylarını meydana getirir. Bu değer false ise kontrolün üzerinde basılan tuşlar o kontrolün KeyPress, Keydown, KeyUp olaylarını meydana getirir.

KeyPress (Bir tuşa basma olayı)

Çalışma anında klavyenin yön ve kontrol (Control Alt, Shift vs.) tuşları dışında herhangi bir tuşa basılması halinde KeyPress olayı meydana gelir. KeyPress olayı için Visual Basic tarafından hazırlanan yordama basılan tuşun Ascii kodu parametre olarak gönderilir. Formlar için KeyPress olayının olabilmesi için formda düğme ve metin kutusu gibi nesnelerin olmaması gerekir. Bu olay ve yordam daha çok dışarıdan bilgi girişi yapılan nesneler için kullanıldığı zaman işlevsel olmaktadır. Ancak formlar için yine KeyPress olayı için basit bir örnek verebiliriz. Bu örnek çalışma anında tuşa basılan tuşun Ascii kodunu bulup ekrana yazar:
İmleç metin kutusu üzerinde iken bir tuşa basıldığı anda Keydown’dan sonra tetiklenen olaydır. Bu olayda basılan tuşun Ascii değeri KeyAscii değişkenine atanır. Bu değişkeni kullanarak hangi tuşa basıldığını öğrenebilirsiniz.

Aşağıdaki program, formun çalışması sırasında hangi tuşa basıldığını ekrana yazar. (Bu key olaylarının kullanılabilmesi için, nesnenin keypreview özelliğinin açık olması gerekir.) Aktif nesne tarafından algılanır.

Çalışma anında her tuşa basma işleminden sonra Form_KeyPress yordamı işletilir. Basılan tuşun Ascii kodu Chr ( ) fonksiyonuna parametre olarak verilerek hangi tuşa basıldığı öğrenilebilir.

Kod:
Örnek:
   
 Private Sub Form_KeyPress(KeyAscii As Integer)
Show
Print Chr(KeyAscii) & " tusuna bastiniz."
End Sub

Kod:
Örnek:
   
  Private Sub Form_KeyPress (KeyAscii As Integer )
  Tuşun basılıp bırakılması ile yapılacak olan işlemler
  End Sub
KeyDown ve KeyUp Olayları

KeyDown ve KeyUp olayları işlev bakımında KeyPress olayına benzeseler de bazı farklılıklar vardır. KeyDown olayı tuşa basıldığı anda, KeyUp ise tuşun serbest bırakıldığı sırada meydana gelir. KeyPress olayında ise tuşa basma – bırakma ayrımı yoktur. Bu iki olayı temsil eden yordamlar KeyPress olayına ait yordamdan farklı olarak dışarıdan ikinci bir parametreyi daha almaktadır. Basılan tuşun Ascii kodu KeyCode adlı parametreye (değişken) aktarılır.
KeyDown: İmleç metin kutusu üzerinde iken bir tuşa basıldığı anda tetiklenen olaydır. Bu olay herhangi bir tuşa basıldığı anda meydana gelir. Bu olayda iki parametre kullanılır. Bu parametrelerin biri basılan tuşun Ascii değerini, diğeri ise bu tuşla birlikte Shift, Ctrl ve Alt tuşlarından herhangi birine basılıp basılmadığı konusunda bilgi tutar. Aktif nesne tarafından algılanır. KeyUp olayından önce oluşur. Shift adındaki ikinci parametreye ise bu olay meydana geldiği zaman Shift, Ctrl ve alt tuşlarının birinin basılı durumda olup olmadığı konusunda bilgi aktarılır. KeyDown olayı sırasında Shift tuşu basılı durumda ise Shift değişkeni 1,basılı durumda değilse 0 değerini içerir. Bu olay sırasında Ctrl tuşu basılı durumda ise Shift parametresi 2 değerini alır ve Alt tuşu basılı durumda ise 4 değerini alır.
Aşağıdaki örnekte kullanıcı Ctrl tuşu ile birlikte A tuşuna basarsa kullanıcıya mesaj verecektir.
Örnek:
Kod:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 65 And Shift = 2 ThenMsgBox "Ctrl+A tus kombinasyonunu kullandiniz."
End If
End Sub

Bu çalıştırıldığı anda herhangi bir tuşa basılması durumunda KeyDown olayı meydana gelir ve form_Keydown yordamı işletilir. Bu sırada Shift tuşu basılı durumda ve basılan tuş Enter ise ekrana MsgBox( ) ile mesaj verilir.

KeyUp olayı KeyDown farklı olarak tuşa basıldığı sırada değil, tuşun serbest bırakıldığı yani kullanıcının elini tuşun üstünden kaldırdığı zaman meydana gelir. Bunun dışında KeyUp olayı KeyDown’dan farklı değildir. KeyDown olayının KeyPress olayı karşısında önceliği var.
Örnek:
Kod:
  Private Sub Form_KeyDown (KeyCode As Integer, Shift As Integer)
  Tuşa basılması ile yapılacak olan işlemler
  End Sub
KeyUp: İmleç metin kutusu üzerinde iken bir tuşa basılıp bırakıldığı anda tetiklenen olaydır. Bu olay ise kullanıcının bastığı tuşu bırakması sırasında meydana gelir. Yukarıdaki tabloda Shift parametresi için gösterilen değerler bu olaydada geçerlidir. Basılı olan bir tuşun bırakılmasıdır. Basılı olan tuşun bırakılması olayıdır. Aktif nesne tarafından algılanır. KeyDown olayından sonra oluşur.

Kod:
Örnek:
   
  Private Sub Form_KeyUp (KeyCode As Integer, Shift As Integer)
  Basılı olan tuşun bırakılması ile yapılacak olan işlemler
  End Sub
Aşağıdaki tabloda S parametresinin alabileceği değerler ve açıklamalarını bulabilirsiniz.

Shift Parametresinin içeriği
Basılı durumda olan tuşlar
0
Shift,Ctrl ve Alt tuşları basılı durumda
1
Shift tuşları basılı durumda
2
Ctrl tuşu basılı durumda
3
Shift ve Ctrl tuşları basılı durumda
4
Alt tuşu basılı durumda
5
Shift ve Alt tuşaları basılı durumda
6
Ctrl ve Alt tuşları basılı durumda
7
Shift,Ctrl ve Alt tuşları basılı durumda

Ya da bu şekilde de diyebiliriz:

Shift
Tuş Kombinasyonu
0
Basılı Tuş Yok (Ctrl,Alt,Shift)
1
Shift
2
Ctrl
3
Shift + Ctrl
4
Alt
5
Shift + Alt
6
Ctrl + Alt
7
Shift + Ctrl + Alt


Chr( ) Fonksiyonu

Bu fonksiyon 0 ile 255 arasındaki herhangi bir sayıya karşılık gelen Ascii karakterini elde etmek amacıyla kullanılır. Chr ( ) fonksiyonu dışarıdan parametre olarak değeri 0 ile 255 arasında değişen tamsayı bir değeri almaktadır. Geriye bu sayının Ascii karakterini döndürür. Döndürülen değerlerin bazıları ekranda gösterilebilinen karakter olmayıp bir etkidir. Chr( ) fonksiyonunun geriye döndürdüğü bilgi Variant tiptedir. Eğer geriye karaktersel bilginin gönderilmesini istiyorsanız Chr( ) yerine Chr$( ) fonksiyonunu kullanabilirsiniz.

Örnek
Kod:
[FONT=Arial]Private[/FONT][FONT=Arial] Sub Command1_Click()[/FONT]
  [FONT=Arial]Dim say[/FONT]
  [FONT=Arial]say[/FONT][FONT=Arial] = InputBox("Lütfen bir rakam giriniz")[/FONT]
  [FONT=Arial]Print[/FONT][FONT=Arial] Chr(say)[/FONT]
  [FONT=Arial]End[/FONT][FONT=Arial] Sub[/FONT]
Chr$: Gönderdiğiniz ASCII değerini karakter cinsinden döndürür.0–255 arasında girilen bir nümerik ascii koduna karşılık gelen karakteri verir.

Yazılışı: CHR (Sayı) Yazılışı: CHR$ (Sayı)


Asc( ) Fonksiyonu


Gönderdiğiniz karakterin ASCII değerini döndürür. Klavyeden girilen herhangi bir ifadenin, nümerik ascii karşılığını verir. Eğer tek harfli ifade yerine sözcük girerseniz, sözcüğün ilk karakterini baz alacaktır. Mesela asc (bilgisayar)denirse b' nin nümerik ascii karşılığı olan 98 elde edilir.
Bu fonksiyon, herhangi bir karaktersel bilginin ilk karakterinin Ascii kodunu bulmak amacıyla kullanılmaktadır. Asc() fonksiyonu parametre olarak aldığı karaktersel bilginin ilk karakterinin Ascii kodunu döndürür. Döndürülen değer 0 ile 255 arasında değer olabilir. Yazılışı: ASC (Karaktersel Bilgi)

Örnek

Kod:
[FONT=Arial]Private[/FONT][FONT=Arial] Sub Command1_Click()[/FONT]
  [FONT=Arial]Dim say[/FONT]
  [FONT=Arial]say[/FONT][FONT=Arial] = Asc("A")[/FONT]
  [FONT=Arial]Print[/FONT][FONT=Arial] say[/FONT]
  [FONT=Arial]say[/FONT][FONT=Arial] = Asc("a")[/FONT]
  [FONT=Arial]Print[/FONT][FONT=Arial] say[/FONT]
  [FONT=Arial]say[/FONT][FONT=Arial] = Asc("oguz")[/FONT]
  [FONT=Arial]Print[/FONT][FONT=Arial] say[/FONT]
         [FONT=Arial]End[/FONT][FONT=Arial] Sub[/FONT]
Asc( ) ve Chr( ) fonksiyonları kullanılarak yapılan bir örnek:

Kod:
[FONT=Arial]Private[/FONT][FONT=Arial] Sub Form_Load( )[/FONT]
  [FONT=Arial]Dim I, mesaj[/FONT]
  [FONT=Arial]For[/FONT][FONT=Arial] I = Asc(“A”) to Asc (“ Z ”)[/FONT]
  [FONT=Arial]Mesaj = Mesaj + Chr (I)[/FONT]
  [FONT=Arial]Next[/FONT][FONT=Arial] I[/FONT]
  [FONT=Arial]MsgBox[/FONT][FONT=Arial] Mesaj[/FONT]
  [FONT=Arial]End[/FONT][FONT=Arial] Sub
[/FONT]
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.