|
![]() |
#1 |
Klavye oLayLarı
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. Örnek: Private Sub Form_KeyPress(KeyAscii As Integer)ShowPrint Chr(KeyAscii) & " tusuna bastiniz."End SubÖ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: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 65 And Shift = 2 ThenMsgBox "Ctrl+A tus kombinasyonunu kullandiniz."End IfEnd 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: 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. Ö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 Shift 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 Private Sub Command1_Click() Dim say say = InputBox("Lütfen bir rakam giriniz") Print Chr(say) End Sub 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 Private Sub Command1_Click() Dim say say = Asc("A") Print say say = Asc("a") Print say say = Asc("oguz") Print say End Sub Asc( ) ve Chr( ) fonksiyonları kullanılarak yapılan bir örnek: Private Sub Form_Load( ) Dim I, mesaj For I = Asc(“A”) to Asc (“ Z ”) Mesaj = Mesaj + Chr (I) Next I MsgBox Mesaj End Sub Örnek: Bu programda text1'e gireceğiniz karakterin karşılığı text2'de,text3'de girdiğiniz karakterin karşılığı text4'de görünecektir. Private Sub Command1_Click()a = Text1.Texta = Asc(a)Text2.Text = Str(a)End SubPrivate Sub Command2_Click()b = Text3.Textb = Val(b)If b > 255 Then GoTo sonb = Chr(b)Text4.Text = bEnd Sub Basılan Tuşun Kodunu Bulmak Örnek: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) MsgBox "Basılan Tuşun Kodu :" & KeyCode End Sub Basılan Tuşun Ascii Değerini Bulmak Örnek: Private Sub Form_KeyPress(KeyAscii As Integer) MsgBox "Basılan Tuşun Ascii Değeri :" & KeyAscii End Sub Sadece Büyük Harf Kullanmak Örnek: Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 End If KeyAscii = Asc(UCase(Chr(KeyAscii))) ‘ UCase ile büyük harfe çevriliyor Print Chr(KeyAscii) End Sub Esc Tuşu ile Çıkış Örnek: Çıkış_Butonu. Cancel = True Private Sub Çıkış_butonu_Click() End End Sub NumLock ve CapsLock’u Açıp Kapatmak Örnek: (General)(Declaration) Const VK_CAPITAL = &H14 ‘ CapsLock Const VK_NUMLOCK = &H90 ‘ NumLock Private Type KeyboardBytes kbByte(0 To 255) As Byte End Type Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long Private Declare Function SetKeyboardState Lib "user32” (kbArray As KeyboardBytes) As Long Dim Tuş_Kodu As String Dim kbArray As KeyboardBytes Private Sub Command1_Click() ' Tuş_Kodu = VK_NumLock Tuş_Kodu = VK_CAPITAL GetKeyboardState kbArray kbArray.kbByte(Tuş_Kodu) = 0 ' Kapat SetKeyboardState kbArray End Sub Private Sub Command2_Click() kbArray.kbByte(Tuş_Kodu) = 1 ' Aç SetKeyboardState kbArray End Sub Sisteme Tuş Basımı Yollamak Örnek: (General)(Declaration) Option Explicit Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Const VK_CONTROL = &H11 Const KEYEVENTF_KEYUP = &H2 Const VK_ESCAPE = &H1B Private Sub Form_Click() Call keybd_event(VK_CONTROL, 0, 0, 0) ‘ CTRL Call keybd_event(VK_ESCAPE, 0, 0, 0) ‘ ESC Call keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) End Sub Fonksiyon Tuşlarına Görev Atamak (General)(Declaration) Option Explicit Const KEY_F1 = &H70 Const KEY_F2 = &H71 Const KEY_ESCAPE = &H1B Form1.KeyPreview = True ‘ Formun KeyPreview özelliği True Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case KEY_F1 ‘ F1 - Tarih Text1.Text = Date$ Case KEY_F2 ‘ F2 - Saat Text1.Text = Time$ Case KEY_ESCAPE ‘ ESC – Çıkış Unload Me End Select End Sub SendKeys – Tuş Basımı Gönderme Bu kod klavyenizin ışıklarını yakıp söndürür. Dim i As Integer For i = 1 To 150 SendKeys "{CAPSLOCK}", True SendKeys "{DOWN}", True SendKeys "{DOWN}", True SendKeys "{SCROLLLOCK}", True SendKeys "{DOWN}", True SendKeys "{DOWN}", True Next i SendKeys;(words) : Mesaj yollar * tusu ile yazdiginiz siler SendKeys;2;13 : Sends ozel tuslar [sag,sol,yukari,asagi] Kes, Kopyala, Yapistir Bir TextBoxta Kes, Kopyala, Yapistir, Geri Al islemlerinin yapilmasi için iki tane çok kolay yol mevcut. Asagidaki örneklerde SendKeys methodu kullanilıyor. birinci örnek: Sub DoEditThing(whatThing As String, onWhat As Object) Select Case whatThing Case "Copy" onWhat.SetFocus SendKeys "^C" Case "Cut" onWhat.SetFocus SendKeys "^X" Case "Paste" onWhat.SetFocus SendKeys "^V" Case "Undo" onWhat.SetFocus SendKeys "^Z" End Select End Sub Asagidaki kod ayni isi yapan ikinci örnek: Sub DoEditThing(whatThing As String, onWhat As Object) Dim Send$ Select Case whatThing Case "Copy" Send = "^C" Case "Cut" Send = "^X" Case "Paste" Send = "^V" Case "Undo" Send = "^Z" End Select If Len(Send) Then onWhat.SetFocus SendKeys Send End If End Sub Örnek: Private Sub Command1_Click() SendKeys "%{F4}", True ‘ Alt + F4 Programı kapar End Sub Key Code BACKSPACE {BACKSPACE}, {BS}, or {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL or DELETE {DELETE} or {DEL} DOWN ARROW {DOWN} END {END} ENTER {ENTER}or ~ ESC {ESC} HELP {HELP} HOME {HOME} INS or INSERT {INSERT} or {INS} LEFT ARROW {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} RIGHT ARROW {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} UP ARROW {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} Key Code SHIFT + CTRL ^ ALT % |
|
![]() |
![]() |
Etiketler |
klavye, olaylari |
|
|