Olisiko jotain yksinkertaista tapaa saada vaikka Image1 liikkumaan nuolinäppäimillä?
Tutkit formin keydownissa josko nappi olisi pohjassa, jos on, liikutat kuvaa.
No en saanut toimimaan ainankaan näin
If KeyDown Then Image1.Top = Image1.Top + 10
Mikäköhän vikana ? Olen yrittäny jo aika kauan.
Vikana on se ettet määritä mistä napista kuva liikkuu.Elikkä tuonne keydowniin pistä tämmöinen koodi:
If KeyCode = vbKeyDown Then Image1.Top = Image1.Top + 10 End If
tuo tarkkailee jos sinulla on alespäin nuoli painettuna pohjaan niin silloin liikutetaan kuvaa.
Formiin voisi myös laittaa KeyPreview-asetuksen True:ksi. Tällöin kaikki näppäinpainallukset menevät ensin formille ja sitten vasta muille kontrolleille. Jos formilla on jokin kontrolli joka kaappaa näppäimet itselleen ja KeyPreview = False, niin formin koodia ei koskaan suoriteta.
Nytten olin kyllä ihan hämillään. En saa millään toimimaan vaikka jo jonkun 45 minuuttia olen yrittäny. Formissa keypreview on true. Ja formi sisälttä koodin:
If KeyCode = vbKeyDown Then
Image1.Top = Image1.Top + 10
End If
Ja tietysti formilla on myös Picture1.
ehkä vika on se että formilla ei ole image1:stä.. muuta Picture1:nen Image1:ksi. :)
Okei kiitos :) Vika oli se mitä Tumppu sanoi. Nytten haluaisin saada Liikkumaan oikealle ja vasemmalle juuri huomasin, että se ei ihan samalla tavalla käy. Olisiko tietoa miten tämä tapahtuu?
vaihda .Top tilalle .Left
Top = Y-akselilla kohteen sijainti formissa ja Left = X-akselilla...
Mulla ei toimi ihan tämmöin
Private Sub Form_Left = X(KeyCode As Integer, Shift As Integer)
If KeyCode = Left = X Then
Image1.Left = Image1.Left - 35
End If
End Sub
Ei pahalla, mut onks sulla päässä vikaa jos selvistä esimerkeistäkään et tajua? O_o Aika omaperäseltä näyttää toi sun yritelmäs. KeyDowniin (vai oliks KeyPress, evm) siis tyyliin
If KeyCode = vbKeyDown Then Image1.Top = Image1.Top + 10 Else If KeyCode = vbKeyLeft Then Image1.Left = Image1.Left - 10 End If
ei ei ei ei... lue jtn opasta.. :D
Sooda ei toimi keypress eikä downissa -.-
Kirjoita tuo soodan koodi tapahtumaan Form_KeyDown.
.. ja formin keypreview kantsii pistää päälle.
Compile error:
Syntax error
korjaa Else If -> ElseIf
Heippa pojat!
Oletetaanpa, että Formilla on PictureBox objekti jonka sisällä on tarkoitus liikutella Image objektissa olevaa kuvaa.
'No ekaks siirretään focus PictureBox'iin Private Sub Form_GotFocus() Picture1.SetFocus End Sub 'Tokaks Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyDown If Image1.Top <= Picture1.Height - Image1.Height - 10 Then Image1.Top = Image1.Top + 10 Else: Image1.Top = Picture1.Height - Image1.Height End If Case vbKeyUp If Image1.Top >= 10 Then Image1.Top = Image1.Top - 10 Else: Image1.Top = 0 End If Case vbKeyRight If Image1.Left <= Picture1.Width - Image1.Width - 10 Then Image1.Left = Image1.Left + 10 Else: Image1.Left = Picture1.Width - Image1.Width End If Case vbKeyLeft If Image1.Left >= 10 Then Image1.Left = Image1.Left - 10 Else: Image1.Left = 0 End If End Select End Sub
Toivottavasti tästä on apua...
ehkä helpointa olisi tämmönen koodi:
Formille piirrät Picture1 nimisen PictureBoxin ja kopsaat ton koodin
Private Sub Form_Load() Me.KeyPreview = True End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyUp Picture1.Top = Picture1.Top - 10 Case vbKeyDown Picture1.Top = Picture1.Top + 10 Case vbKeyLeft Picture1.Left = Picture1.Left - 10 Case vbKeyRight Picture1.Left = Picture1.Left + 10 End Select End Sub
miksi en saa tätä toimimaan
Private Sub Form_Load() Me.KeyPreview = True End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyUp Command1.Top = Command1.Top - 10 Case vbKeyDown Command1.Top = Command1.Top + 10 Case vbKeyLeft Command1.Left = Command1.Left - 10 Case vbKeyRight Command1.Left = Command1.Left + 10 End Select End Sub
Olisi rok, jos kertoisit mistä se valittaa? -_-
Uskaltaisin veikkaa, että sulta puuttuu Command1
ei puutu eikä se valita mitää se ei vaa yksinkertasesti liiku
Formin keypreview on tietysti false.
Hei jaskapoika!
Toi sun jutska ei toimi siitä yksinkertaisesta syystä, että
Form_Load tapahtuman - Me.KeyPreview = True - ei ohita CommandButton'in Focusta. Voit testata asian todenperäissyden esim. niin, että laitat sinne sun formillesi lisäksi vaikkapa PictureBox'in, käynnistät ohjelman ja painat TAB-näppintä, jolloin focus siirtyy PictureBox'lle, jonka focuksen formille asetettu -Me.KeyPreview = True - ohittaa...Jatka vielä testaamista
poistamalla se PictureBox ja lisäämällä toinen CommandButton, niin huomaat eron...
Toivottavasti nappi alkaa liikkumaan...
Nämähän ovat ihan perusjuttuja kannattaa opiskella oppaita,täällä ohjelmointiputkassa on hyvä VB opas
ihme homma ku laittaa picturebox:in nii se toimii muttaku ottaa pois nii ei toimi
Aihe on jo aika vanha, joten et voi enää vastata siihen.