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?
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
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ä.
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
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.
joku tässä vielä mättää :(
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
kiitos.. kokeilen.
edit: ei toimi.. valittaa tosta "Private Sub Form_Load()" kohdasta :( mikähän olisi ongelmana?
Kerro ihmeessä, mikä virheilmoitus sinulle tuli. Ja tein vieläpä haun puolestasi, tuloksena:
https://www.ohjelmointiputka.net/keskustelu/2654-miten-saa-ukkelin-liikkelle
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
Nyt toimii kun poistin tuon toisen from loadin :D
edit: kiitos
Aihe on jo aika vanha, joten et voi enää vastata siihen.