Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Vb koon vaihto???

Shogun [08.07.2003 20:34:49]

#

Kuinka saan tehtyä niin et käyttäjä voi tarrata vaikka jonkun labelin tai textboxin nurkasta kiinni ja saatää siten se kokoa ite???

jouku [08.07.2003 20:41:57]

#

pistät

label1.width = "sejase"
label1.height= "sejase"

tai sitten tuo oli right ja left!

Antti Laaksonen [09.07.2003 02:23:49]

#

Tämä oli vähän hankalampi tehtävä, mutta sainpa toimivan koodinpätkän aikaiseksi. Koodin toiminta perustuu Controls-taulukkoon, jonka kautta kontrollien tietoihin päästään käsiksi ja pystytään muuttamaan niiden nimien perusteella.

Kun hiirtä liikutetaan formilla, ohjelma tarkistaa, onko hiiri venytettäväksi määrättyjen kontrollien kulmien lähellä (esimerkissä kolmen pikselin etäisyydellä kulmasta). Jos on, hiiren osoitin vaihdetaan nuoleksi (/ = 6, \ = 8), ja jos samanaikaisesti hiiren näppäin on pohjassa, kontrollin koko muuttuu.

Private Sub Form_Load()
    'mittayksikkö pikseli
    ScaleMode = 3
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static vk As String, vp As Integer, vx As Integer, vy As Integer

    Dim klista() As Variant
    Dim k As Object, i As Integer, vr As Integer
    Dim x1 As Integer, y1 As Integer, x2 As Integer
    Dim y2 As Integer, le As Integer, ko As Integer

    'kontrollit, joiden kokoa pystyy muuttamaan
    klista = Array("Text1", "Label1")

    'kontrollien kulmissa oleva alue (neliön sivujen pituus),
    'jossa hiiri näkyy nuolena ja kontrolliin voi "tarttua kiinni"
    vr = 3

    If Button = 1 Then
        Select Case vp
        'kosketus vasempaan yläkulmaan
        Case 1
            If vx - X > 0 And vy - Y > 0 Then
                Controls(vk).Move X, Y, vx - X, vy - Y
            End If
        'kosketus vasempaan alakulmaan
        Case 2
            If vx - X > 0 And Y - vy > 0 Then
                Controls(vk).Move X, vy, vx - X, Y - vy
            End If
        'kosketus oikeaan yläkulmaan
        Case 3
            If X - vx > 0 And vy - Y > 0 Then
                Controls(vk).Move vx, Y, X - vx, vy - Y
            End If
        'kosketus oikeaan alakulmaan
        Case 4
            If X - vx > 0 And Y - vy > 0 Then
                Controls(vk).Move vx, vy, X - vx, Y - vy
            End If
        End Select
    Else
        'käydään taulukon kontrollit läpi
        For i = 0 To UBound(klista)
            'haetaan kontrollin tiedot objektiin
            Set k = Controls(klista(i))
            'haetaan osa objektin arvoista muuttujiin
            x1 = k.Left
            y1 = k.Top
            x2 = k.Left + k.Width
            y2 = k.Top + k.Height
            le = k.Width
            ko = k.Height
            'kosketus vasempaan yläkulmaan
            If Abs(X - x1) <= vr And Abs(Y - y1) <= vr Then
                MousePointer = 8
                vp = 1
                vx = X + le
                vy = Y + ko
            'kosketus vasempaan alakulmaan
            ElseIf Abs(X - x1) <= vr And Abs(Y - y2) <= vr Then
                MousePointer = 6
                vp = 2
                vx = X + le
                vy = Y - ko
            'kosketus oikeaan yläkulmaan
            ElseIf Abs(X - x2) <= vr And Abs(Y - y1) <= vr Then
                MousePointer = 6
                vp = 3
                vx = X - le
                vy = Y + ko
            'kosketus oikeaan alakulmaan
            ElseIf Abs(X - x2) <= vr And Abs(Y - y2) <= vr Then
                MousePointer = 8
                vp = 4
                vx = X - le
                vy = Y - ko
            'ei kosketusta
            Else
                vp = 0
                MousePointer = 0
            End If
            If vp <> 0 Then
                vk = k.Name
                Exit For
            End If
        Next
    End If
End Sub

Shogun [09.07.2003 14:24:20]

#

Ohhoh. Tuossa tais olla tekemistä.
Kiitos.

Shogun [09.07.2003 14:24:36]

#

Ohhoh. Tuossa tais olla tekemistä.
Kiitos.

Vastaus

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

Tietoa sivustosta