Gelöst: Symbolleisten wieder sichtbar machen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Gelöst: Symbolleisten wieder sichtbar machen

Beitrag von WSO »

Hallo Zusammen,
Ich habe per Marko Symbolleisten ausgeblendet, kann sie aber nicht wieder auf dem gleich Weg wieder sichtbar machen.

Code: Alles auswählen

	If glbExpertenmodus = False THEN
		 lmgr = oFormDocs.getCurrentController().Frame.LayoutManager
    		 lmgr.setVisible(false)             
'    		 lmgr.hideElement("private:resource/menubar/menubar")  
    		lmgr.hideElement("private:resource/statusbar/statusbar")
'     		lmgr.hideElement("private:resource/toolbar/formsnavigationbar")
    		lmgr.hideElement("private:resource/toolbar/standardbar")
    		 lmgr.hideElement("private:resource/toolbar/formdesign")
    		lmgr.hideElement("private:resource/toolbar/formcontrols")
     	ELSE
		lmgr = oFormDocs.getCurrentController().Frame.LayoutManager
    		lmgr.setVisible(true)             
    		lmgr.showElement("private:resource/menubar/menubar")  
    		lmgr.showElement("private:resource/statusbar/statusbar")
    		lmgr.showElement("private:resource/toolbar/formsnavigationbar")
     		lmgr.showElement("private:resource/toolbar/standardbar")
    		lmgr.showElement("private:resource/toolbar/formdesign")
    		lmgr.showElement("private:resource/toolbar/formcontrols")   
    End If

Ist recht lästig, da ich dummereise auch die Navigationsleiste ausgeblendet hatte und jetzt nicht mehr eingeblendet bekomme.
Kann mir da bitte jemand helfen?
Gruss,
WSO
Zuletzt geändert von WSO am Mi, 06.08.2014 13:34, insgesamt 1-mal geändert.
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Symbolleisten wieder sichtbar machen

Beitrag von balu »

Mahlzeit WSO,

schau doch mal hier, vielleicht hilft dir das weiter.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Symbolleisten wieder sichtbar machen

Beitrag von WSO »

leider nicht.
finde keinen Grund, warum "hide" funktioniert und "show" nicht.
Benutzeravatar
Rasakul
**
Beiträge: 32
Registriert: Di, 29.07.2014 15:26
Wohnort: Wien

Re: Symbolleisten wieder sichtbar machen

Beitrag von Rasakul »

Hi WSO!

blöde Frage, aber hast du geprüft, ob du überhaupt in den Else-Zweig reinkommst?

LG
Rasakul
Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden - Linus Torvalds
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Symbolleisten wieder sichtbar machen

Beitrag von WSO »

Moin Rasakul,
klar, das war der erste Test.
Das IF / Else arbeitet korrekt.
Ich denke wir haben hier nen bug.
Gruss,
Wolfram
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Symbolleisten wieder sichtbar machen

Beitrag von balu »

Hallo Wolfram,

deine Antworten sind ja so was von extrem komprimiert, das man damit gar nix anfangen kann.
leider nicht.
finde keinen Grund, warum "hide" funktioniert und "show" nicht.
Hast Du den Code aus dem verlinkten Thread nachgebaut? Und wenn ja, wie; und wo hast Du ihn angewendet?

Wenn ich deinen Code nur minimal auf das hier ändere,

Code: Alles auswählen

Sub Main
glbExpertenmodus = 0
       If glbExpertenmodus = False THEN
           lmgr = ThisComponent.getCurrentController().Frame.LayoutManager
               lmgr.setVisible(false)             
    '           lmgr.hideElement("private:resource/menubar/menubar") 
              lmgr.hideElement("private:resource/statusbar/statusbar")
    '           lmgr.hideElement("private:resource/toolbar/formsnavigationbar")
              lmgr.hideElement("private:resource/toolbar/standardbar")
               lmgr.hideElement("private:resource/toolbar/formdesign")
              lmgr.hideElement("private:resource/toolbar/formcontrols")
            ELSE
          lmgr = ThisComponent.getCurrentController().Frame.LayoutManager
              lmgr.setVisible(true)             
              lmgr.showElement("private:resource/menubar/menubar") 
              lmgr.showElement("private:resource/statusbar/statusbar")
              lmgr.showElement("private:resource/toolbar/formsnavigationbar")
               lmgr.showElement("private:resource/toolbar/standardbar")
              lmgr.showElement("private:resource/toolbar/formdesign")
              lmgr.showElement("private:resource/toolbar/formcontrols")   
        End If
End Sub
dann kann ich in Calc damit die Symbolleisten ein und ausblenden. Ich muss dazu nur

Code: Alles auswählen

Sub Main
glbExpertenmodus = 0
[...]
End Sub
auf

Code: Alles auswählen

Sub Main
glbExpertenmodus = 1
[...]
End Sub
ändern, und schon funzt es.
Also ich weiß beim besten willen einfach nicht wo dein Problem liegt! Wir sitzen nicht auf deinem Schoß um dir beim programmieren zusehen zu können. Gib uns mehr Input damit wir besser helfen können. Der komplette Code der bei dir für das ein- und ausblenden verantwortlich ist, wäre ja schon mal nicht verkehrt, und sage uns wo Du ihn anwendest.

Ach ja! Nenn uns deine AOO oder LO Version, mit der genauen Versionsnummer.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Symbolleisten wieder sichtbar machen

Beitrag von Karolus »

Hallo

In manchen Fällen muss eine Symbolleiste erstmal "kreiert" werden bevor sie sichtbar gemacht werden kann.

Code: Alles auswählen

doc = desktop.getCurrentComponent()
lmgr = doc.getCurrentController().Frame.LayoutManager

toolbars = ("private:resource/toolbar/formdesign",
            "private:resource/menubar/menubar",
            "private:resource/toolbar/formsnavigationbar",
            "private:resource/statusbar/statusbar")

def toggle(layoutmanager, symbolleiste):
    if not layoutmanager.getElement(symbolleiste):
        layoutmanager.createElement( symbolleiste )
    if layoutmanager.isElementVisible(symbolleiste):
        layoutmanager.hideElement(symbolleiste)
        return
    layoutmanager.showElement(symbolleiste)
    layoutmanager.setVisible(True)

def main():
    for leiste in toolbars:
        toggle( lmgr, leiste)
 
Das ist jetzt python - für Übersetzungen nach Basic bin ich unterqualifiziert. 8)

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
Rasakul
**
Beiträge: 32
Registriert: Di, 29.07.2014 15:26
Wohnort: Wien

Re: Symbolleisten wieder sichtbar machen

Beitrag von Rasakul »

Hi, guten Morgen!

bin zwar kein Experte, aber in StarBasic sollte dein Code dann so ungefähr ausschauen:

Code: Alles auswählen

Sub ShowBar(oForm as Object) 

    oController = oForm.getComponent().getCurrentController()
    lmgr = oController.Frame.LayoutManager
    
    Dim statusbar(5) As String
    
    statusbar(0) = "private:resource/menubar/menubar"
    statusbar(1) = "private:resource/statusbar/statusbar"
    statusbar(2) = "private:resource/toolbar/formsnavigationbar"
    statusbar(3) = "private:resource/toolbar/standardbar"
    statusbar(4) = "private:resource/toolbar/formdesign"
    statusbar(5) = "private:resource/toolbar/formcontrols"
    
    For Each i In statusbar()
        If Not(lmgr.requestElement(i)) Then
            lmgr.createElement(i)
        Endif
        lmgr.showElement(i)
    Next i

End sub
Hier noch die zugehörige API: https://www.openoffice.org/api/docs/com ... nager.html
Hier findet man dann auch die Methoden, um z.B. die Leisten anzudocken

LG
Rasakul
Zuletzt geändert von Rasakul am Do, 07.08.2014 16:31, insgesamt 1-mal geändert.
Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden - Linus Torvalds
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Symbolleisten wieder sichtbar machen

Beitrag von WSO »

Genau das war es!
Mit dem vorher ausgeführten "createElement" geht jetzt auch das "showElement".
Vielen Dank Gruss
WSO
Antworten