Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: kuvan liikuttaminen nuoliäppäimillä (VB6)

Sivun loppuun

Thugcln [15.02.2006 16:40:40]

#

Olisiko jotain yksinkertaista tapaa saada vaikka Image1 liikkumaan nuolinäppäimillä?

Meitsi [15.02.2006 16:41:22]

#

Tutkit formin keydownissa josko nappi olisi pohjassa, jos on, liikutat kuvaa.

Thugcln [15.02.2006 16:47:37]

#

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.

Henu [15.02.2006 17:03:25]

#

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.

Merri [15.02.2006 17:06:14]

#

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.

Thugcln [15.02.2006 17:26:11]

#

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.

Tumppu [15.02.2006 18:22:47]

#

ehkä vika on se että formilla ei ole image1:stä.. muuta Picture1:nen Image1:ksi. :)

Thugcln [15.02.2006 18:36:29]

#

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?

Tumppu [15.02.2006 18:41:40]

#

vaihda .Top tilalle .Left
Top = Y-akselilla kohteen sijainti formissa ja Left = X-akselilla...

Thugcln [15.02.2006 18:45:38]

#

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

sooda [15.02.2006 18:47:05]

#

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

Tumppu [15.02.2006 18:49:07]

#

ei ei ei ei... lue jtn opasta.. :D

Thugcln [15.02.2006 19:01:02]

#

Sooda ei toimi keypress eikä downissa -.-

setä [15.02.2006 19:30:20]

#

Kirjoita tuo soodan koodi tapahtumaan Form_KeyDown.

tuomas [15.02.2006 19:32:15]

#

.. ja formin keypreview kantsii pistää päälle.

Thugcln [15.02.2006 19:40:19]

#

Compile error:

Syntax error

Merri [15.02.2006 21:45:46]

#

korjaa Else If -> ElseIf

neau33 [18.02.2006 16:56:02]

#

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...

Lumi-ukkeli [19.02.2006 12:51:51]

#

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

jaskapoika [19.02.2006 15:23:20]

#

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

nomic [19.02.2006 16:10:05]

#

Olisi rok, jos kertoisit mistä se valittaa? -_-

Uskaltaisin veikkaa, että sulta puuttuu Command1

jaskapoika [19.02.2006 16:23:21]

#

ei puutu eikä se valita mitää se ei vaa yksinkertasesti liiku

Phix [19.02.2006 16:46:57]

#

Formin keypreview on tietysti false.

neau33 [19.02.2006 17:10:34]

#

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...

Nitro Man [19.02.2006 17:16:26]

#

Nämähän ovat ihan perusjuttuja kannattaa opiskella oppaita,täällä ohjelmointiputkassa on hyvä VB opas

jaskapoika [19.02.2006 17:36:25]

#

ihme homma ku laittaa picturebox:in nii se toimii muttaku ottaa pois nii ei toimi


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta