Star basic menüleiste ausblenden

Hallo Gemeinde,

ich versuche über eine Schaltfläche auf einem Tabellenblatt die Menü-, Symbol- und Statusleiste(n) ein- bzw. auszublenden.

Hier der Code. Ich habe die betreffenden Stellen vermerkt, an denen NICHTS PASSIERT.


'diese Sub hängt an der Schaltfläche:

sub formularanaus
oDoc = thisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName(„XBAG“)
if osheet.getcellbyposition(1,1).value=0 then
osheet.getcellbyposition(1,1).value=1
else if osheet.getcellbyposition(1,1).value=1 then osheet.getcellbyposition(1,1).value=0
endif
call FensterleistenAusblendenUndGroesseAnpassen
end sub

'…und diese wird per Call… aufgerufen:

Sub FensterleistenAusblendenUndGroesseAnpassen
oDoc = thisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName(„XBAG“)
oFrame = thisComponent.currentController.Frame
oWin = oFrame.getContainerWindow()
oFenstergroesse = oWin.getPosSize()
oLayoutManager = oFrame.LayoutManager

sStatusBar = „private:resource/statusbar/statusbar“
sMenuBar = „private:resource/menubar/menubar“
sSymbolleiste = „private:resource/toolbar/formsnavigationbar“

'alles einblenden
if osheet.getcellbyposition(1,1).value=0 then
oLayoutManager.showElement(sMenuBar) 'Menüleiste EINblenden ->Datei|Bearbeiten|Ansicht|… erscheint
oLayoutManager.setVisible(true) 'Layout Manager EINblenden -> NICHTS PASSIERT
oLayoutManager.createElement(sStatusBar) 'Statusleiste EINblenden -> Statusleiste erscheint
odoc.currentcontroller.zoomvalue=185 'Zoom-Level festlegen
endif

'alles ausblenden
if osheet.getcellbyposition(1,1).value=1 then
oLayoutManager.destroyElement(sStatusBar) 'Statusleiste AUSblenden -> Statusleiste verschwindet
oLayoutManager.hideElement(sMenuBar) 'Menüleiste AUSblenden -> NICHTS PASSIERT
oLayoutManager.setVisible(false) 'Layout Manager AUSblenden -> Datei|Bearbeiten|Ansicht|… verschwindet
odoc.currentcontroller.zoomvalue=200 'Zoom-Level festlegen
oFrame.title = „XBag-Fee-Calc“ 'Formulartitel setzen
endif
End Sub

Die zweite Frage wäre, wohin eigentlich die Symbolleisten verschwinden bzw. wie ich sie wieder herzaubere…

Viele liebe Grüße,

Marcel

„“""""""""""""""""""""""""""""""""""""""""""
EDIT:
„“""""""""""""""""""""""""""""""""""""""""""

Ich habe es mittlerweile etwas umgeändert - Code ganz unten -, soweit funktioniert auch alles (einblenden und ausblenden werden korrekt angesteuert und ausgeführt), ABER:

die Symbolleisten bleiben beim ersten Durchlauf von Ausblenden sichtbar, beim zweiten Durchlauf von Ausblenden (läuft immer abwechselnd: aus, ein, aus, ein, …) verschwinden sie, beim nächsten Mal bleiben sie wieder usw.

Das ist mir persönlich zu hoch. Wer kann mir da einen Tipp geben?
Ja, ich weiß, dass man idR keinen Dispatcher-Code mit richtigem Code mischen soll, aber ich will ja, dass das Ergebnis stimmt. Wenn ich da ankomme, kann ich mir über den Weg gedanken machen. :wink:

Vielen Dank im Voraus an alle Fachleute auf diesem Gebiet,

LG, Marcel

sub formularanaus
oDoc = thisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName(„XBAG“)
osheet.unprotect("")
if osheet.getcellbyposition(1,1).value=0 then
osheet.getcellbyposition(1,1).value=1
else if osheet.getcellbyposition(1,1).value=1 then osheet.getcellbyposition(1,1).value=0
endif
call FensterleistenAusblendenUndGroesseAnpassen
osheet.protect("")
end sub

Sub FensterleistenAusblendenUndGroesseAnpassen
dim document as object
dim dispatcher as object
dim args1(0) as new com.sun.star.beans.PropertyValue
dim args2(0) as new com.sun.star.beans.PropertyValue
dim args3(0) as new com.sun.star.beans.PropertyValue

oDoc = thisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName(„XBAG“)
oFrame = thisComponent.currentController.Frame
oWin = oFrame.getContainerWindow()
oFenstergroesse = oWin.getPosSize()
oLayoutManager = oFrame.LayoutManager

sStatusBar = „private:resource/statusbar/statusbar“
sMenuBar = „private:resource/menubar/menubar“
sSymbolleiste = „private:resource/toolbar/formsnavigationbar“

'alles einblenden
if osheet.getcellbyposition(1,1).value=0 then
’ msgbox „einblenden“
oLayoutManager.setVisible(true) 'Layout Manager EINblenden -> NICHTS PASSIERT
wait 1000
oLayoutManager.showElement(sMenuBar) 'Menüleiste EINblenden ->Datei|Bearbeiten|Ansicht|… erscheint
oLayoutManager.createElement(sStatusBar) 'Statusleiste EINblenden -> Statusleiste erscheint
odoc.currentcontroller.zoomvalue=185 'Zoom-Level festlegen

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(„com.sun.star.frame.DispatchHelper“)

args1(0).Name = „ViewRowColumnHeaders“
args1(0).Value = true
dispatcher.executeDispatch(document, „.uno:ViewRowColumnHeaders“, „“, 0, args1())

args2(0).Name = „InputLineVisible“
args2(0).Value = true
dispatcher.executeDispatch(document, „.uno:InputLineVisible“, „“, 0, args2())

args3(0).Name = „StatusBarVisible“
args3(0).Value = true
dispatcher.executeDispatch(document, „.uno:StatusBarVisible“, „“, 0, args3())

endif

'alles ausblenden
if osheet.getcellbyposition(1,1).value=1 then
’ msgbox „ausblenden“

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(„com.sun.star.frame.DispatchHelper“)

args1(0).Name = „InputLineVisible“
args1(0).Value = false
dispatcher.executeDispatch(document, „.uno:InputLineVisible“, „“, 0, args1())

args2(0).Name = „StatusBarVisible“
args2(0).Value = false
dispatcher.executeDispatch(document, „.uno:StatusBarVisible“, „“, 0, args2())

args3(0).Name = „ViewRowColumnHeaders“
args3(0).Value = false
dispatcher.executeDispatch(document, „.uno:ViewRowColumnHeaders“, „“, 0, args3())

oLayoutManager.destroyElement(sStatusBar) 'Statusleiste AUSblenden -> Statusleiste verschwindet
oLayoutManager.hideElement(sMenuBar) 'Menüleiste AUSblenden -> NICHTS PASSIERT
wait 1000
oLayoutManager.setVisible(false) 'Layout Manager AUSblenden -> Datei|Bearbeiten|Ansicht|… verschwindet
odoc.currentcontroller.zoomvalue=200 'Zoom-Level festlegen
oFrame.title = „XBag-Fee-Calc“ 'Formulartitel setzen
endif
End Sub

Ergänzungsfrage:

soweit funktioniert es akzeptabel, allerdings habe ich zeilen mit zwischenrechnungen gruppiert und ausgeblendet, woraufhin die bekannten ±Knöpfchen am Rand erscheinen.

Wer kann mir sagen, ob und wie ich auch noch diese ausgeblendet bekomme?

LG, Marcel