Kirjoittaja: Antti Laaksonen
⚠ Huomio! Tämä opas on vanhentunut. Oppaan sisältöön ei voi enää luottaa. Opas on säilytetty vain sen historiallisen arvon vuoksi. ⚠
Tässä osassa käydään ensin läpi hiiren ja näppäimistön käsittely perustasolta ja sitten tutustutaan VB:n monipuolisiin merkkijonofunktioihin.
Hiiren käsittelyyn on kolme tapahtuma-aliohjelmaa, jotka löytyvät useimmista komponenteista. Ne ovat MouseDown, MouseMove ja MouseUp. Aliohjelmilla on seuraava tarkoitus:
MouseDown | aktivoituu, kun hiiren nappi painetaan pohjaan komponentin päällä |
MouseMove | aktivoituu, kun hiirtä liikutetaan komponentin päällä |
MouseUp | aktivoituu, kun hiiren nappi vapautetaan komponentin päällä |
Tapahtuma-aliohjelmissa on lisäksi käytössä seuraavat erikoismuuttujat:
Button | hiiren nappien tila:
| ||||||||||||||
Shift | näppäimistön erikoisnäppäinten tila, ks. Näppäimistön käsittely | ||||||||||||||
X | osoittimen x-koordinaatti komponentin vasemmasta yläkulmasta mitattuna | ||||||||||||||
Y | osoittimen y-koordinaatti komponentin vasemmasta yläkulmasta mitattuna |
Seuraava esimerkki luo yksinkertaisen piirto-ohjelman. Piirtokomennot PSet ja Line käsitellään oppaan seuraavassa osassa.
Private Sub Form_Load Me.DrawWidth = 4 'viivan paksuus 4 End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) PSet (X, Y) End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Static vx As Single, vy As Single 'muuttujat osoittimen vanhalle paikalle If Button = 1 Then If vx <> 0 And vy <> 0 Then Line (vx, vy)-(X, Y) End If vx = X vy = Y Else vx = X vy = Y End If End Sub
Näppäimistön käsittely on hyvin samantapaista kuin hiiren käsittely. Näppäimistöaliohjelmia on kolme, KeyDown, KeyPress ja KeyUp. Aliohjelmilla on seuraava tarkoitus:
KeyDown | aktivoituu, kun näppäin painetaan alas |
KeyPress | aktivoituu, kun näppäintä painetaan |
KeyUp | aktivoituu, kun näppäin nostetaam ylös |
KeyPress on ylemmän tason käsittelijä, ja se aktivoituu vain, jos KeyDownissa ei ole tehty mitään. Aliohjelmilla on lisäksi seuraavat erikoismuuttujat:
KeyCode | painetun näppäimen koodi (KeyDown ja KeyUp) | ||||||||||||||
KeyAscii | painetun näppäimen ASCII-koodi (KeyPress) | ||||||||||||||
Shift | Shift-, Alt- ja Control-näppäinten tilat:
|
Käytännössä KeyPress on melko turha aliohjelma, samat asiat saa tehtyä KeyDownilla. Jos formilla on komponentteja, KeyPreview-ominaisuus määrittää, että kaikki näppäinpainallukset kulkevat ensin formin näppäimistöaliohjelmille.
Seuraava esimerkki näyttää näppäimistöstä painettaessa näppäinkoodin ja Shift-muuttujan arvon:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) MsgBox "Näppäinkoodi: " & KeyCode & vbCrLf & "Shift: " & Shift End Sub
VB sisältää useimmille näppäimille vakion, joka korvaa vaikeasti muistettavan KeyCoden. Esimerkiksi näppäimen A vakio on vbKeyA, näppäimen Shift vbKeyShift, näppäimen Esc vbKeyEsc jne. eli vbKey + näppäimen nimi englanniksi.
Visual Basic sisältää monipuoliset merkkijonofunktiot. Tässä kappaleessa käsitellään niistä tärkeimmät.
Len | palauttaa merkkijonon pituuden | Len("Testi") on 5 |
Left | palauttaa tietyn määrän merkkejä merkkijonon alusta | Left("Testi", 3) on "Tes" |
Right | palauttaa tietyn määrän merkkejä merkkijonon lopusta | Right("Testi", 3) on "sti" |
Mid | palauttaa tietyn määrän merkkejä merkkijonon keskeltä | Mid("Testi", 2, 3) on "est" |
UCase | muuttaa merkkijonon suuriksi kirjaimiksi | UCase("Testi") on "TESTI" |
LCase | muuttaa merkkijonon pieniksi kirjaimiksi | UCase("Testi") on "testi" |
LTrim | poistaa välilyönnit merkkijonon alusta | LTrim(" Testi ") on "Testi " |
RTrim | poistaa välilyönnit merkkijonon lopusta | LTrim(" Testi ") on " Testi" |
Trim | poistaa välilyönnit merkkijonon molemmilta puolilta | Trim(" Testi ") on "Testi" |
InStr | palauttaa merkkijonon paikan toisessa merkkijonossa | InStr("Testi", "st") on 3 InStr("Testi", "sv") on 0 |
Asc | palauttaa merkin ASCII-koodin | Asc("A") on 65 |
Chr | palauttaa ASCII-koodin merkin | Chr(65) on "A" |
Space | palauttaa tietyn määrän välilyöntejä | Space(5) on " " |
String | palauttaa tietyn määrän samoja merkkejä | String(5, "A") on "AAAAA" |
Kuudes osa alkaa olla lopussa, mutta ei hätää: jatkoa on luvassa. Miten nopeasti, se riippuu oppaasta saamastani palautteesta, jota voi lähetellä keskustelualueelle tai sähköpostilla.
Seuraavassa osassa käsitellään VB:n grafiikkakomentoja ja ehkä jotain muutakin.
kunhan jostaki vain sais sellaisen scriptin joka liikuttas bmp-kuvaa nuolinäppäimistä :D
Niin, minäkin tarvisin sellaista. Eiks sitä ole missään?
Se kuvan liikutus onnistuu näin:
-Tee pictureboxi formille.
-formin keydown tapahtumaan seuraava:
if keycode = 37 then picture1.left = picture1.left - 5
if keycode = 38 then picture1.top = picture1.top - 5
if keycode = 39 then picture1.left = picture1.left + 5
if keycode = 40 then picture1.top = picture1.top + 5
jos ei toimi kokeilkaa vaihtaa keypreview trueksi.
UCase muuttaa merkkijonon suuriksi kirjaimiksi
UCase("Testi") on "TESTI"
LCase muuttaa merkkijonon pieniksi kirjaimiksi
UCase("Testi") on "testi"
alemman pitäisi olla Lcase eikä Ucase
tai keycodea käyttäen..
- formin keydown komennon alle:
_______________________________________________
select case keycode
case vbkeyup: picture1.top=picture1.top - 5
case vbkeydown: picture1.top=picture1.top + 5
case vbkeyrigth: picture1.left=picture1.left + 5
case vbkeyleft: picture1.left=picture1.left - 5
end case
_______________________________________________
tuohon voi lisätä myös esim.:
_______________________________________________
case vbkeyspace:
'nämä tapahtuu painamalla space (välilyöntiä)
'rivejä voi olla useampikin, kuin
'nämä kaksi
_______________________________________________
niin ja olisi myös melko ovelaa jos tekisi tuon
case vbkeyup: picture1.top=picture1.top - 5
näin:
case vbkeyup: picture1.top -= 5
Ei pelaa hirveesti mikään tossa visual studio.netissä.
Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.