22 Mart 2020 Pazar

Small Basic - Olaylar - Events

Bu derste GraphicsWindow içerisinde Mouse ve Klavye olaylarını kullanacağız.

Başlayalım:


Öncelikle penceremizi oluşturalım:
GraphicsWindow.Width = 400
GraphicsWindow.Height = 400
GraphicsWindow.Title = "Small Basic - Olaylar - Events"
 Üstteki kodların ne işe yaradığını daha önceki derslerimizde öğrenmiştik.
Şimdi de bir şekil ekleyelim:
sekil = Shapes.AddRectangle(100, 50)
Shapes.Move(sekil, 100, 125)
Shapes.AddRectangle(100, 50) komutu penceremize genişliği 100, yüksekliği 50 olan bir dikdörtgen ekleyecek.
Shapes.Move(sekil, 100, 125) komutu ise eklenen şekli (x,y) ekseninde taşıyacak. (100, 125) değerleri yerine istediğiniz değerleri girerek deneme yapabilirsiniz.

Sıra geldi klavye olaylarına. Yazmaya devam:


Önceki kodların devamına ekliyoruz:
return = "Return"
GraphicsWindow.KeyDown = keydown
GraphicsWindow.KeyUp = keyup

Sub keydown
  If GraphicsWindow.LastKey = return Then
    Shapes.Rotate(sekil, 90)
  EndIf
EndSub
Sub keyup
  If GraphicsWindow.LastKey = return Then
    Shapes.Rotate(sekil, 0)
  EndIf
EndSub

Burayı satır satır açıklayalım:
8: Basılacak tuşu tanımlıyoruz. "Return" - "Enter" tuşu demek. İsterseniz herhangi bir harf ya da sayı seçebilir ya da diğer tuşlardan birini kullanabilirsiniz. Örneğin ESC için "Escape" yazmanız yeterli. Sonraki işlemler belirlediğiniz tuş için geçerli olacak.
9-10: Daha önceki dersimizde butona basıldığında çalışacak olan Alt Yordamı kullanmak için "Controls.ButtonClicked = yazdir" komutunu kullanmıştık. Bu kez aynı şeyi buton yerine klavyeden bir tuşa basıldığında uyguluyoruz.
GraphicsWindow.KeyDown = keydown belirlediğimiz tuşa basıldığında
GraphicsWindow.KeyUp = keyup belirlediğimiz tuş bırakıldığında çalışacak alt yordamı temsil ediyor.
Üst satırda belirlediğimiz tuşa basıldığında ve bırakıldığında hangi alt yordam çalışacak onu belirliyoruz.
12-21: Bu satırlar arasında 2 tane alt yordam tanımlıyoruz. Birisi tuşa basıldığında, diğeri ise tuş bırakıldığında çalışacak.
Shapes.Rotate(sekil, 90) komutu tuşa bastığımızda şekli 90 derece döndürecek.
Shapes.Rotate(sekil, 0) komutu ise tuş bırakıldığında şekli 0 dereceye geri döndürecek.
If GraphicsWindow.LastKey = return komutu, önceki derste kullandığımız If Controls.LastClickedButton = buton komutu ile aynı işi görüyor. Klavyeden basılan son tuşu alıyor. Bu durumda eğer bu tuş bizim belirlediğimiz ise işlem yapıyor.

Son durum:

 

Bir de fare olaylarına bakalım. Devam ediyoruz:

 
Önceki kodların devamına ekliyoruz:
GraphicsWindow.MouseDown = mdown
GraphicsWindow.MouseMove = mmove
GraphicsWindow.MouseUp = mup

Sub mdown
  If Mouse.IsLeftButtonDown Then
    Shapes.Rotate(sekil, 45)
  ElseIf Mouse.IsRightButtonDown Then
    Shapes.Rotate(sekil, -45)
  EndIf
EndSub
Sub mmove
  If Mouse.IsLeftButtonDown Then
    GraphicsWindow.Title = "Mouse:("+GraphicsWindow.MouseX+", "+GraphicsWindow.MouseY+")"
  EndIf
EndSub
Sub mup
  GraphicsWindow.Title = "Small Basic - Olaylar - Events"
  Shapes.Rotate(sekil, 0)
EndSub

Yine açıklamayı yapalım:

23-25: Burası üstte klavye tuşu basıldığında ve bırakıldığında işlemleri için yapılan işlem ile aynı. Sırasıyla mouse tuşu basıldığında(23), mouse hareket ettiğinde(24) ve mouse tuşu bırakıldığında(25) işlemleri.
27-42: Bu arada yine alt yordam tanımlıyoruz.
Mouse.IsLeftButtonDown komutu eğer farenin sol tuşu basıldıysa
Mouse.IsRightButtonDown komutu da eğer farenin sağ tuşu basıldıysa yapılacak işlemler için kullanılıyor.
"Mouse:("+GraphicsWindow.MouseX+", "+GraphicsWindow.MouseY+")" komutu ise, farenin sol tuşu basılıyken hareket ettirilirse, fare okunun pencerede hangi (x, y) konumunda olduğunu pencere başlığına yazdırıyor.

Son durum:





Paylaş:

1 yorum:

Soru, sorun, görüş ve önerilerinizi bildirin. En kısa sürede yanıtlayalım...