Kieli VB
Ja muuten tuli vielä yksi kysymys mieleen jonka koodia olen yrittänyt etsiä.Se on sellainen että jos painaa jotain kohtaa formilla niin olisiko mahdollista että ukko1 liikkuu painettuun kohtaan eikä ilmesty sinne. Ei siis tätä koodia: ukko1.move x,y.
Please Tell me
lainaus:
...ukko1 liikkuu painettuun kohtaan eikä ilmesty sinne...
Kerro vähän selkeämmin. Siis jos hiirellä painetaan jotain kohtaa formissa, vai? Ei herranjestas...
Kyllä,se liikkuu sinne eikä ilmesty
Varmaankin sen ukon pitäs liukua sinne?
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ukko1.Move X, Y ukko1.Visible = False End Sub
Hän ilmeisesti haluaisi, että algoritmissa käytetään left ja top arvoja moven sijasta. Siis Ukko1.left=ukko1.left+1 tyyliin..
'Olettaen että X ja Y Private Sub Timer1_Timer() If Image1.Left < 3000 Then Image1.Left = Image1.Left + 100 ElseIf Image1.Left > 3000 Then Image1.Left = Image1.Left - 100 Else End If If Image1.Top < 3000 Then Image1.Top = Image1.Top + 100 ElseIf Image1.Top > 3000 Then Image1.Top = Image1.Top - 100 Else End If End Sub
Hän ilmeisesti haluaisi, että algoritmissa käytetään left ja top arvoja moven sijasta. Siis Ukko1.left=ukko1.left+1 tyyliin..
'X=3000 Y=3000 tässä esimerkissä.. Private Sub Timer1_Timer() If Image1.Left < 3000 Then Image1.Left = Image1.Left + 100 ElseIf Image1.Left > 3000 Then Image1.Left = Image1.Left - 100 Else End If If Image1.Top < 3000 Then Image1.Top = Image1.Top + 100 ElseIf Image1.Top > 3000 Then Image1.Top = Image1.Top - 100 Else End If End Sub
en mee takuuseen toimivuudesta, pitäisi toimia.
Iskin sitten vahingossa tabulaattoria ja entteriä.. niin näköjään kerkes lähettää vaikka iskin stoppia.. no ei maha mitään enää..
Joo tajusin jus että toihan bugaa jos se kuvan lähtöpaikka ei ole sadalla jaollinen..
Masa: Laitan sulle huomenaamulla mallin miten se pitää tehdä... tein jo osaksi mutta en ehdi tänään tehdä loppuun.
No niin
Lomakkelle kaksi objektia: Ukko1 ja Ukko2 (pictureboxia)
Molempien enabled-arvon tulee olla false tai lomakkeen mousedown-eventti ei käynnisty
oKohde on liikutettavan objektin muuttuja, jota muutetaan asettamalla sen arvoksi liikutettavan objektin nimi Set komennolla. (esim. Set oKohde = Me.Ukko2)
Lomakkeelle seuraava koodi ja sen pitäisi toimia:
Dim oKohde As Object Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 65 Then ' Vaihtaa A-kirjaimella Select Case oKohde.Name ' Valitsee liikutettavan kohteen objektin nimen perusteella Case "Ukko1" Set oKohde = Me.Ukko2 Case "Ukko2" Set oKohde = Me.Ukko1 End Select End If End Sub Private Sub Form_Load() Set oKohde = Ukko1 End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim imValX As Integer ' integer move value X = imValX Dim imValY As Integer ' integer move value Y = imValY Dim isValX As Integer ' integer source value X = isValX Dim isValY As Integer ' integer source value Y = isValY ' Tasaa kohde kymmenellä jaolliseksi isValX = Int(X / 10) * 10 isValY = Int(Y / 10) * 10 ' Tutki suunta mihin kohdetta liikutetaan If Y >= oKohde.Top And isValX >= oKohde.Left Then imValX = 10 imValY = 10 ElseIf isValY <= oKohde.Top And isValX >= oKohde.Left Then imValX = 10 imValY = -10 ElseIf isValY >= oKohde.Top And isValX <= oKohde.Left Then imValX = -10 imValY = 10 ElseIf isValY <= oKohde.Top And isValX <= oKohde.Left Then imValX = -10 imValY = -10 End If Do While oKohde.Top <> isValY Or oKohde.Left <> isValX If oKohde.Top <> isValY Then oKohde.Top = oKohde.Top + imValY If oKohde.Left <> isValX Then oKohde.Left = oKohde.Left + imValX DoEvents Loop End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.