Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Matemaattinen ongelma

Short Php [13.05.2008 15:44:22]

#

Tähän ei rajoittuneet kykyni pysty, joten kysyn täältä.
Eli ongelma on tämä, koodin pitäisi siirtää koko formia siten, että kursori "pysyisi" (oikeasti sanottuna formi pysyisi) paikallaan, mutta formi siirtyy siten, että kursori on formin omissa pixeleissä 0,0. Muuten koodi toimii moitteetta.

Dim cursorX As Integer = Cursor.Position.X
Dim cursorY As Integer = Cursor.Position.Y
Dim meX As Integer = Me.Left
Dim meY As Integer = Me.Top
Dim finalX As Integer
Dim finalY As Integer
finalX = cursorX - meX
finalY = cursorY - meY
If (draggable = True) Then
    Me.Left = meX + finalX
    Me.Top = meY + finalY
End If

Toivottavasti tämä kuva tuo jotain selkoa.

TsaTsaTsaa [13.05.2008 16:01:44]

#

En nyt yhtään käsittänyt mitä kummaa tässä haettiin, mutta:

finalX = cursorX - meX
Me.Left = meX + finalX = meX + cursorX - meX = cursorX
(ja sama y:llä)

Eli ilmeisesti ei ole tarkoitus kuitenkaan formin koordenaatteja asettaa kursorin koordinaateiksi?

Sami [13.05.2008 16:06:06]

#

Nythän Me.Left = meX + finalX ja finalX = cursorX - meX => Me.left = meX + cursorX - meX = cursorX, eli sen pitäisikin siirtyä kursorin kohdalle (sama Me.Top:in kanssa)...

Jos haluat formin siirtyvän hiiresi mukana raahatessa, niin nuo tämänhetkiset tiedot eivät riitä siihen, vaan sinun pitäisi tietää missä hiiri oli hetki sitten (edellisen kerran kun tämä siirtokoodi suoritettiin).

Esim.

'Julkisia muuttujia tai funktiolle välitettyjä:
Dim oldCursorX As Integer
Dim oldCursorY As Integer

        'Ja sitten funktion sisältö:
        Dim cursorX As Integer = Cursor.Position.X
        Dim cursorY As Integer = Cursor.Position.Y
        If (draggable = True) Then
            '(varmista, että oldCursorX ja oldCursorY ovat asetettu myös kun nämä rivit suoritetaan ensimmäisen kerran)
            Me.Left = Me.Left + cursorX - oldCursorX
            Me.Top = Me.Top + cursorY - oldCursorY
        End If
        oldCursorX = cursorX
        oldCursorY = cursorY

Short Php [13.05.2008 16:52:58]

#

Kiitos paljon! Samin koodilla sain toimimaan hyvin.

Vastaus

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

Tietoa sivustosta