Control verschieben: Zuweisung korrekt, Effekt=NULL!
Verfasst: Sa, 18.01.2014 14:36
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.
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!!
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
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:
Code: Alles auswählen
oCtrl.setPosSize(ps.X, ps.Y, ps.Width, ps.Height, 15)