[VB6] Moving Controls

01/09/2010 - 11:38 von Lothar Geyer | Report spam
Ich möchte einen Label oder eine Textbox vom Benutzer auf der Form (oder
einem Frame) verschieben lassen. Also mit der Maus anklicken und mit
gedrückter Maus z.B. vom linken Rand an den rechten verschieben.

Wie gehe ich am besten vor?

Lothar Geyer
 

Lesen sie die antworten

#1 Paul Pierot
01/09/2010 - 13:48 | Warnen spam
Am 01.09.2010 11:38, schrieb Lothar Geyer:
Ich möchte einen Label oder eine Textbox vom Benutzer auf der Form (oder
einem Frame) verschieben lassen. Also mit der Maus anklicken und mit
gedrückter Maus z.B. vom linken Rand an den rechten verschieben.

Wie gehe ich am besten vor?



1. Du deklarierst zunàchst zwei globale Variablen:

Private offsetX As Single, offsetY As Single


2. Dann interessiert das MouseDown und MouseMove-Event deines Objekts:

Private Sub Label1_MouseDown(...)
offsetX = X: offsetY = Y
End Sub
Private Sub Label1_MouseMove(...)
If Button = vbLeftButton Then
Label1.Left = Label1.Left + X - offsetX
Label1.Top = Label1.Top + Y - offsetY
End If
End Sub


offsetX/ offSetY verhindert lediglich, dass dein Objekt beim anklicken
an die linke obere Ecke deines Mousepointers flutscht - also nur der
Korrektheit halber.

Damit sich dein Objekt nicht außerhalb des Anzeigebereichs verschieben
làsst, müsstest du noch eine Untersuchung der Werte im MouseMove
einbauen, z.B:
If Label1.Left + X - offsetX < 0 then Exit Sub
If Label1.Top + Y - offsetY < 0 then Exit Sub
'usw.

Bei Textboxen besteht zudem das Problem, dass sich mit obiger Methode
kein Text per Maus mehr selektieren làsst.


Lothar Geyer



HTH
Paul.

Ähnliche fragen