Hallo Robert,

das geht schon, aber du musst halt die URL auf dem Weg ermitteln, wie es Xray macht, damit du auch die URLs der Extensions und Addons erwischst. Im folgenden Makro schalte ich die LibreLogo-Leiste aus und nach zwei Sekunden wieder an:

SUB Test
    DIM oFrame AS OBJECT
    oFrame = StarDesktop.getCurrentFrame()
    oWin = oFrame.getContainerWindow()
    aElemente = oFrame.LayoutManager.getElements()
    FOR i = LBound(aElemente) TO UBound(aElemente)
        obj = aElemente(i)
        invoc =  CreateUnoService("com.sun.star.script.Invocation")
        invocCurrObj = invoc.createInstanceWithArguments(Array(obj))
        resourceURL= invocCurrObj.getValue("ResourceURL")
        if resourceURL= "private:resource/toolbar/addon_LibreLogo.OfficeToolBar" then
            oFrame.LayoutManager.hideElement(resourceURL)
            wait 2000
            oFrame.LayoutManager.showElement(resourceURL)
        end if
    next
end sub

Das Makro ist sicher noch nicht wasserdicht, aber das Prinzip ist klar.

Gruß
Gerhard

Am 13.06.2021 um 09:53 schrieb Robert Großkopf:
Hallo Gerhard,

Wenn du die Logik des Programms einsetzen willst, musst du eventuell
noch ein bisschen was abfragen, damit keine Fehler erzeugt werden;
vielleicht genügt es, wenn du abfragst, ob VARTYPE(vari) = 8, d.h.
"string" ist, du willst ja wohl die Namen der Symbolleisten abfragen.
Wichtig ist für mich lediglich, dass anschließend keine Symbolleisten
mehr zu sehen sind. Und das bekomme ich eben bei dieser Symbolleiste
nicht geregelt, da ich sie über die URL auf unsichtbar schalten will.
Ist aber in der Praxis erst einmal nicht so wild, weil die Zielgruppe
sowieso keine Erweiterungen und auch kein LibreLogo nutzen wird.

Ich mache das Ganze jetzt so:

SUB Symbolleisten_Ausblenden
        DIM oFrame AS OBJECT
        DIM oWin AS OBJECT
        DIM oLayoutMng AS OBJECT
        DIM aElemente()
        oFrame = StarDesktop.getCurrentFrame()
        oFrame.setTitle "Titel des Fensters"
        oWin = oFrame.getContainerWindow()
        oWin.IsMaximized = true
        oLayoutMng = oFrame.LayoutManager
        aElemente = oLayoutMng.getElements()
        FOR i = LBound(aElemente) TO UBound(aElemente)
                oLayoutMng.hideElement(aElemente(i).ResourceURL)
        NEXT
        ThisComponent.CurrentController.Sidebar.Visible = False
        ThisComponent.CurrentController.ViewSettings.ZoomValue = 200
        ThisComponent.CurrentController.ViewSettings.ShowRulers = False
        ThisComponent.CurrentController.ViewSettings.ShowParaBreaks = False
END SUB

SUB Symbolleisten_Einblenden
        DIM oFrame AS OBJECT
        DIM oLayoutMng AS OBJECT
        DIM aElemente()
        oFrame = StarDesktop.getCurrentFrame()
        oLayoutMng = oFrame.LayoutManager
        aElemente = oLayoutMng.getElements()
        FOR i = LBound(aElemente) TO UBound(aElemente)
                oLayoutMng.showElement(aElemente(i).ResourceURL)
        NEXT
        ThisComponent.CurrentController.Sidebar.Visible = True  
        ThisComponent.CurrentController.ViewSettings.ZoomValue = 100
        ThisComponent.CurrentController.ViewSettings.ShowRulers = True  
        ThisComponent.CurrentController.ViewSettings.ShowParaBreaks = True
END SUB

Für das Zeigen bzw. verstecken eines Elements ist nun einmal die
ResourceURL notwendig. Für das Handbuch wäre es natürlich schön, genauer
zu wissen, wie ich die anderen auch verstecken und wieder hervorholen
kann. Ich dachte eigentlich, dass der Verweis auf das Element reichen
müsste ( so wie "getByIndex").

Gruß

Robert


--
Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an