Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Objektin liikkuminen? (VB)

Sivun loppuun

makeuu [14.02.2004 20:57:41]

#

Tietääkö kukaan hyvää koodivinkkiä yms. joka neuvoisi objektin liikuttamiseen näppäimistöltä.. itse en osaisi mitenkään ohjelmoida sellaista.. pyhh haikulia.. mutta onko kelläkään sellaista tai onko tullut vastaan?

rndprogy [14.02.2004 21:17:44]

#

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
if KeyCode = 74 then PictureBox.Top = PictureBox.Top - .0001 '<---en muista numeroa joka vastaisi ylä nuolta
End Sub

toi 74 kohdalle numero joka vastaa ylä nuolta. Ja tuo on .0001 koska se voi olla muuten liian nopea jos tuo nyt oli sellainen, että se lukee suoraan näppistä.
Tästä sen pitäisi saada selville sen numeron

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    MsgBox "Näppäinkoodi: " & KeyCode & vbCrLf & "Shift: " & Shift
End Sub

Antti Laaksonen [14.02.2004 21:18:52]

#

Jos formin KeyPreview-ominaisuuden arvo on True, niin kaikki näppäimenpainallukset ohjautuvat formin KeyDown-aliohjelmaan. Tässä aliohjelmassa on helppo tarkistaa KeyCode-parametrin avulla, onko painettu näppäin joku nuolinäppäimistä (vbKeyUp, vbKeyDown, vbKeyLeft tai vbKeyRight). Melkein kaikilla kontrolleilla taas on Left- ja Top-ominaisuudet, joita muuttamalla niitä pystyy liikuttamaan. Haulla löytyy varmaan monenlaisia esimerkkejä.

makeuu [14.02.2004 21:21:45]

#

joo.. kokeilin mureakuhan koodivinkkiä mutta pukkasi erroria :( ja se oli muistaakseni tällainen

Dim kd(255) As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
kd(KeyCode) = True
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
kd(KeyCode) = False
End Sub


Sub main()
While DoEvents
If kd(vbKeyEscape) Then: Unload Me
If kd(vbKeyLeft) Then: Label1.Left = Label1.Left - 4
If kd(vbKeyRight) Then: Label1.Left = Label1.Left + 4
If kd(vbKeyUp) Then: Label1.Top = Label1.Top - 4
If kd(vbKeyDown) Then: Label1.Top = Label1.Top + 9

    If Label1.Left < 0 Then: Label1.Left = 0
            If Label1.Left + Label1.Width > Me.ScaleWidth Then
                Label1.Left = Me.ScaleWidth - Label1.Width
            End If
                If Label1.Top < 0 Then: Label1.Top = 0
            If Label1.Top + Label1.Height > Me.ScaleHeight Then
                Label1.Top = Me.ScaleHeight - Label1.Height
            End If


        Wend

End Sub

kokeilen myös tuota rnd:n tekemää :D

makeuu [14.02.2004 21:31:02]

#

ja tarkoituksenahan olisi saada kuva liikkumaan formissa ja kokeilin tällaista :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Then Image.Top = Image.Top - 0.0001 '<---en muista numeroa joka vastaisi ylä nuolta
End Sub

ja muuten näppäinkoodit täältä https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=napk

makeuu [14.02.2004 21:35:24]

#

joku tässä vielä mättää :(

petrinm [14.02.2004 21:41:36]

#

Ton pitäis toimia

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
    Case vbKeyLeft 'Vasemmalle
        Picture1.Left = Picture1.Left - 100
    Case vbKeyRight 'Oikeelle
        Picture1.Left = Picture1.Left + 100
    Case vbKeyUp 'Ylös
        Picture1.Top = Picture1.Top - 100
    Case vbKeyDown 'Alas
        Picture1.Top = Picture1.Top + 100
End Select
End Sub

Private Sub Form_Load()
    Me.KeyPreview = True
End Sub

makeuu [14.02.2004 21:43:07]

#

kiitos.. kokeilen.

edit: ei toimi.. valittaa tosta "Private Sub Form_Load()" kohdasta :( mikähän olisi ongelmana?

Antti Laaksonen [14.02.2004 21:43:48]

#

Kerro ihmeessä, mikä virheilmoitus sinulle tuli. Ja tein vieläpä haun puolestasi, tuloksena:
https://www.ohjelmointiputka.net/keskustelu/2654-miten-saa-ukkelin-liikkelle

kenkku [14.02.2004 21:45:37]

#

lainaus:

ei toimi.. valittaa tosta "Private Sub Form_Load()" kohdasta :( mikähän olisi ongelmana?

Katso ettei sinulla ole kahta Form_Loadia, sillon se valittaa ja nauraa p*skaisesti

makeuu [14.02.2004 21:50:08]

#

Nyt toimii kun poistin tuon toisen from loadin :D

edit: kiitos


Sivun alkuun

Vastaus

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

Tietoa sivustosta