Guten Tag
bin der Verzweiflung nahe und komme nicht mehr weiter.
Ich scheitere an der trivialen Aufgabe, ein Kontrollelement (hier z.B. eine Schaltfäche) verschieben zu wollen.
Die neue X-Position soll der X-Position eines anderen Controls (hier: Listenfeld) entsprechen, das als Parameter übergeben wird.
Der nachfolgende Code ist -wie ich finde- ziemlich einfach und selbsterklärend. Aber irgend etwas ist offenbar falsch.
Code: Alles auswählen
sub MoveControl(oSrcList as object)
'Abfrage des Referenzwerts ergibt richtiges Ergebnis:
'print oSrcList.PosSize.X
dim oForm as object 'hier: ein Datenbankformular
dim oController as object
dim oModel as object
dim oCtrl as object
dim ps as variant
oForm = thisComponent.DrawPage.Forms(0)
oController = thisComponent.CurrentController
oModel = oForm.getByName("btnModify")
oCtrl = oController.getControl(oModel)
' nachfolgende Anweisung wird fehlerfrei ausgeführt,
' obwohl PosSize.X read-only ist! Natürlich ohne den gewünschten Effekt.
' oCtrl.PosSize.X = oSrcList.PosSize.X
ps = oCtrl.PosSize
ps.X = oSrcList.PosSize.X
' nachfolgende Anweisung aber erzeugt einen Fehler: Read-Only!
' oCtrl.PosSize = ps
' Nachfolgende Anweisung scheint korrekt, aber es tut sich nichts.
oCtrl.setPosSize(ps.X, ps.Y, ps.Width, ps.Height, 15)
'Die Durchleuchtung bestätigt, dass PosSize.X unverändert ist:
xray oCtrl
end sub
Kann mir bitte jemand weiterhelfen??
Herzlichen Dank
P.S.
Sehr interessant ist eine Beobachtung, die ich soeben gemacht habe:
Lasse ich den Code schrittweise im Debugger durchlaufen, dann bitzt die Schaltfläche für einen Sekundenbruchteil an der gewünschten Stelle auf, wenn die neue Position zugewiesen wird:
Allerdings steht sie danach wieder unverändert an der alten Stelle. Sehr merkwürdig!!