Danke für den Hinweis mit den Rahmen - die waren's nicht
The dirty way:
Also zunächst mal: das Ganze ist mit Sicherheit ein Hardwareproblem, das bei einigen Software/Hardware-Kombinationen auftaucht. Betroffen sind vor allem Linux-Systeme (Ubuntu (3 von 7), Lubuntu (1 von 3)) sowie zumindest 1 von 16 WinXP-Pro Rechnern - Alle unsere Rechner haben die Grafik on Board.
Der Anzeigefehler tritt bei LO 3.3.2 und OOo 3.3.0 (nur ein betroffener Rechner getestet) gleichermaßen auf und wird durch ein "fehlerhaftes Repaint" des verbleibenden Hintergrundes beim Verschieben oder bei der Gößenänderung eines Kontrollelements (getestet bei Textfeldern) ausgelöst. Interessanterweise werden nich einfach Teile des Kontrollelements "vergessen", sondern die Überbleibsel befinden sich an einer Stelle an der das KE weder war noch ist, in der Regel direkt an die Position vor der Veränderung oben, unten, rechts oder links angehängt...

- da unten gehört es nicht hin
- Bildschirmfoto.png (18.26 KiB) 582 mal betrachtet

- Da oben ebensoweinig (derzeit wäre es ausgeblendet)
- Bildschirmfoto-1.png (29.61 KiB) 582 mal betrachtet
Die Größen/Positionsänderung erfolgt durch die Zuweisung eines "com.sun.star.awt.Point" bzw. "com.sun.star.awt.Size"-Objektes an die ".position" bzw ".size" Property eines Drawpageobjektes, das mit "thiscomponent.drawpage.createEnumeration" erzeugt wurde.
Unten habe ich 2 Workarounds beschrieben, die beide funktionieren
1. Workaraound (benutze ich derzeit)
Das Kontrollelement wird während der Veränderung ausgeblendet, und nachher wieder eingeblendet
2. Workaraound
Diesen WA habe ich zu Testzwecken gemacht, um zu eruieren ob die Werte der Veränderung einen Einfluss haben.
Der Workaround macht nichts anderes, als dass er vor der Zuweisung der neuen Property-Werte (.Size und .Position) diese im Drawpageobjekt zunächst auf "0" setzt, und dann erst die gewünschten Werte setzt.
Code: Alles auswählen
oshapesenum=thiscomponent.drawpage.createEnumeration
while oshapesenum.hasmoreelements
oshape = oshapesenum.nextelement
if oshape.supportsService("com.sun.star.drawing.ControlShape") then
if oshape.control.ServiceName = "stardiv.one.form.component.Edit"
if oshape.control.Name = <Name des Kontrollelements as String> then
REM Der mit Hochkommas auskommentierte Bereich ist der nicht verwendete Workaround 2
' dim opositionNull as new com.sun.star.awt.Point
' opositionNull.X = 0
' opositionNull.Y = 0
' dim osizeNull as new com.sun.star.awt.Size
' osizeNull.Height = 0
' osizeNull.Width = 0
dim oposition as new com.sun.star.awt.Point
oposition.X=oshape.Position.X 'Position unveraendert
oposition.Y=5000
dim osize as new com.sun.star.awt.Size
osize.Height = 5000
osize.Width = oshape.Size.Width 'Breite unveraendert
REM Der mit Hochkommas auskommentierte Bereich ist der nicht verwendete Workaround 2
' oshape.size = osizeNull 'Muss nicht unbedingt sein, verhindert aber "Flackern" der Anzeige
' oshape.position = opositionNull
oshape.visible = false '<=== verhindert den Anzeigefehler
oshape.size = osize '<=== Jede dieser Zeilen loest den Anzeigefehler aus
oshape.position = oposition '<=== Jede dieser Zeilen loest den Anzeigefehler aus
oshape.visible = true '<=== verhindert den Anzeigefehler
end if
end if
end if
wend
g