Ich beobachte seit längerem das gleiche Problem, möglicherweise schon unter AOO, bzw. bin ich da auch schon dran verzweifelt...herz4 hat geschrieben: ↑Sa 17. Aug 2019, 08:53Meine häufig benutzen Formulare werden mittels oFrame.ContainerWindow.SetPosSize(lX,lY,lBREITE,lHOEHE,15) in Größe und Position immer gleich fixiert. Dies funktioniert nicht mehr einwandfrei. Mal tadellos, dann wieder nicht, ohne erkennbare Regelmäßigkeit oder Voraussetzung. Fast durch Zufall - oder aus Verzeiflung - probierte ich zuletzt erfolgreich ein Zerpflücken des Befehls. Zunächst nur Größe einstellen mit oFrame.ContainerWindow.SetPosSize(lX,lY,lBREITE,lHOEHE,12), dann nach kurzem Wait 10(ms) Position mit oFrame.ContainerWindow.SetPosSize(lX,lY,lBREITE,lHOEHE,3) und anschließendem abermaligen Wait jedoch mit mind. 500ms(!), sonst wird auch so die Position "ignoriert".
Nach Deinem Hinweis hier, habe ich versucht das Problem mal einzugrenzen.
Ich verwende folgendes Makro:
Code: Alles auswählen
Sub FormSize()
Print "Wait 1"
Wait 10000
Print "Wait 2"
Dim oFrame as Object
Dim oWin as Object
Dim oStyle as Object
Dim lHeight As Long
Dim lWidth As Long
Dim iViewFaktorWidth as Integer
Dim iViewFaktorlHeight as Integer
Dim iPosSizeX as Integer
Dim iPosSizeY as Integer
Dim iPosSizeWidth as Integer
Dim iPosSizeHeight as Integer
iViewFaktorWidth=1440/TwipsPerPixelX()/2540*10000
iViewFaktorlHeight=1440/TwipsPerPixelY()/2540*10000
oFrame = StarDesktop.getCurrentFrame()
oWin = oFrame.getContainerWindow()
' iPosSizeX=oWin.getPosSize.X
' iPosSizeY=oWin.getPosSize.Y
' iPosSizeWidth=oWin.getPosSize.Width
' iPosSizeHeight=oWin.getPosSize.Height
' MsgBox("PosSizeX: "& iPosSizeX & Chr$(13) &"PosSizeY: "& iPosSizeY & Chr$(13) &"iPosSizeWidth: "& iPosSizeWidth & Chr$(13) &"iPosSizeHeight: "& iPosSizeHeight,0,sTitle & " - Aktuelle Fenstergröße")
' MsgBox("Max-Höhe: " & lHeightMax & Chr$(13)& "Max-Breite: " & lWidthMax,0,sTitle & " - Maximale Fenstergröße")
if lHeightMax=0 OR lWidthMax=0 then
oWin.IsMaximized = True
Wait 1000
print "Wait"
' MsgBox("Max-Höhe: " & lHeightMax & Chr$(13)& "Max-Breite: " & lWidthMax,0,sTitle & " - Maximale Fenstergröße")
lHeightMax=oWin.getSize.Height()
lWidthMax=oWin.getSize.Width()
' MsgBox("Max-Höhe: " & lHeightMax & Chr$(13)& "Max-Breite: " & lWidthMax,0,sTitle & " - Maximale Fenstergröße")
oWin.IsMaximized = False
Wait 1000
end if
' GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
' Xray oWin
oStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName("Standard")
lWidth = (oStyle.Width/10000*iViewFaktorWidth)+70
lHeight = (oStyle.Height/10000*iViewFaktorlHeight)+100
' MsgBox("Max-Höhe: " & lHeightMax & Chr$(13) &"Max-Breite: " & lWidthMax & Chr$(13) &"berechnete Höhe: "& lHeight & Chr$(13) &"berechnete Breite: "& lWidth,0,sTitle & " - Fenstergröße")
if lWidth > lWidthMax then lWidth = lWidthMax
if lHeight > lHeightMax then lHeight = lHeightMax
oWin.setPosSize(oWin.getPosSize.X,0,lWidth,lHeight,15)
' oWin.setPosSize(lWidthMax-lWidth,0,lWidth,lHeight,15)
' iPosSizeX=oWin.getPosSize.X
' iPosSizeY=oWin.getPosSize.Y
' iPosSizeWidth=oWin.getPosSize.Width
' iPosSizeHeight=oWin.getPosSize.Height
' MsgBox("PosSizeX: "& iPosSizeX & Chr$(13) &"PosSizeY: "& iPosSizeY & Chr$(13) &"iPosSizeWidth: "& iPosSizeWidth & Chr$(13) &"iPosSizeHeight: "& iPosSizeHeight,0,sTitle & " - Aktuelle Fenstergröße")
Löse ich das Makro manuell aus, dann funktioniert wait zuverlässig.
Wird das Makro hingegen beim Laden das Dokumentes ausgeführt, dann funktioniert wait gar nicht sondern die 2 Print-Anweisungen werden unmittelbar hintereinander ausgelöst.
Kannst Du bei Dir mal die 2 Print-Anweisungen einbauen und schauen, ob das bei Dir auch so ist?
Code: Alles auswählen
Print "Wait 1"
Wait 10000
Print "Wait 2"
Heiko