Im Prinzip ist das relativ einfach:
Du brauchst ein Ereignis "Maustaste gedrückt" und mußt damit die x und y Koordinate der Schaltfläche in eine Variable schreiben. Außerdem die aktuelle Koordinate des Mauszeigers in eine Variable speichern. Ich nenne die jetzt mal so:
x_1 = x-Koordinate der Schaltfläche
y_1 = y-Koordinate der Schaltfläche
xm_1 = x-Koordinate des Mauszeigers
ym_1 = y-Koordinate des Mauszeigers
Du mußt dann für die Mausbewegung ständig die aktuellen Koordinaten ermitteln und sicherstellen das:
x_aktuell = x_1 + (xm_1 - xm_aktuell)/fx
y_aktuell = y_1 + (ym_1 - ym_aktuell)/fy
x_aktuell, y_aktuell aktuelle Koordinaten der Schaltfläche
xm_aktuell, ym_aktuell aktuelle Koordinaten des Mauszeigers
fx, fy systemabhängige Korrekturfaktoren zur Umrechnung der Mauskoordinaten in "ma"-Einheiten
Das Problem beruht in der Umrechnung, weil die Werte der Koordinaten ganzzahlig sein müssen, siehe meinen post:
viewtopic.php?t=1596
Testweise habe ich folgenden Code geschrieben, mit dem ich eine Schaltfläche auf einem Dialog in x-Richtung (erweiterbar auf y-Richtung) frei verschieben kann, wenn ich knapp neben die Schaltfläche klicke.
Code: Alles auswählen
Dim oDialog1 AS Object
Dim oForm As Object
Sub StartDialog1
oForm = DialogLibraries.Standard.Dialog1
oDialog1 = CreateUnoDialog( oForm )
oDialog1.execute
end sub
Sub Mouse(Event As Object)
x = Event.X
y = Event.Y
dim a(4)
inhalt = oDialog1.GetControl("CommandButton1")
model = inhalt.Model
a(0) = model.Height
a(1) = model.Width
a(2) = model.PositionX
a(4) = model.PositionY
model.PositionX = x/2.1
End Sub
Einfach das Makro Mouse den Ereignissen Maustaste gedrückt und Mausbewegung des BasicDialogs zuordnen. Die Konstante 2.1 ist systemspezifisch und dürfte bei Dir anders sein.
Da ich bisher keine Lösung für die Umrechnung der "ma"-Einheiten habe, kann ich Dir keinen fertigen Code anbieten der wirklich exakt funktioniert. Das Prinzip ist jedoch, wie Du siehst, sehr einfach.
Aber vielleicht kennt jemand anderes eine funktionierende Lösung, würde auch mich wegen der Problematik der "ma"-Einheiten interessieren.
Gruß
Stephan