von Axel Richter » So, 03.04.2011 07:35
Hallo,
gogo hat geschrieben:und wenn nur Namen möglich sind: kann man die Liste dieser Namen (also die Bezeichnungen von Statuszeile, Menüleiste und aller Symbolleisten) irgendwo auslesen?
Klar kann man das. Du schreibst doch selbst:
gogo hat geschrieben:Thiscomponent.currentController.Frame.LayoutManager.getElements
... ist ein Array, dessen Größe man mit lbound() und ubound() bestimmen kann
Blende also die Sysmbolleisten ein, die Du haben willst und lass Dir dann die Namen ausgeben.
Code: Alles auswählen
Sub getAllLayoutManagerElementsResourceURLs()
oLayoutManager = ThisComponent.CurrentController.Frame.LayoutManager
'xray oLayoutManager
aLayoutManagerElements = oLayoutManager.Elements
for i = lbound(aLayoutManagerElements) to ubound(aLayoutManagerElements)
MsgBox aLayoutManagerElements(i).ResourceURL
next
End Sub
Zum nachlesen:
http://wiki.services.openoffice.org/wik ... ementation
gogo hat geschrieben:wie man mit Starbasic an das Kontextmenü rankommt?
Man kommt ran, aber nicht schön, weil die (XPropertySet)com.sun.star.ui.ActionTrigger-Objekte nur mit Tricks per Starbasic komplett greifbar sind. Es gibt da einige Versuche im Netz, die zunächst irgendwelche anderen XPropertySets erstellen, die dann ins Kontextmenü hängen, in der Hoffnung, dass die dort dann als com.sun.star.ui.ActionTrigger-Objekte erkannt werden. Hier z.B.
http://codesnippets.services.openoffice ... eptor.snip.
Meine Versuche haben ergeben, dass es aber auch einfacher geht, denn auf die com.sun.star.ui.ActionTrigger-Objekte kann per Starbasic komplett zugegriffen werden, wenn man diese, nach dem Erzeugen, zunächst ins Kontextmenü einhängt, dann von dort wieder ausliest, bearbeitet und wieder einhängt. Nicht schön, aber es funktioniert. Siehe Anlage.
viele Grüße
Axel
- Dateianhänge
-
- LayoutManagerContextMenu.ods
- (9.24 KiB) 88-mal heruntergeladen
Hallo,
[quote="gogo"]und wenn nur Namen möglich sind: kann man die Liste dieser Namen (also die Bezeichnungen von Statuszeile, Menüleiste und aller Symbolleisten) irgendwo auslesen?[/quote]
Klar kann man das. Du schreibst doch selbst:
[quote="gogo"]Thiscomponent.currentController.Frame.LayoutManager.getElements
... ist ein Array, dessen Größe man mit lbound() und ubound() bestimmen kann[/quote]
Blende also die Sysmbolleisten ein, die Du haben willst und lass Dir dann die Namen ausgeben.
[code]Sub getAllLayoutManagerElementsResourceURLs()
oLayoutManager = ThisComponent.CurrentController.Frame.LayoutManager
'xray oLayoutManager
aLayoutManagerElements = oLayoutManager.Elements
for i = lbound(aLayoutManagerElements) to ubound(aLayoutManagerElements)
MsgBox aLayoutManagerElements(i).ResourceURL
next
End Sub[/code]
Zum nachlesen: [url]http://wiki.services.openoffice.org/wiki/Framework/Article/General_Architecture_Of_The_Framework_User_Interface_Implementation[/url]
[quote="gogo"]wie man mit Starbasic an das Kontextmenü rankommt?[/quote]
Man kommt ran, aber nicht schön, weil die (XPropertySet)com.sun.star.ui.ActionTrigger-Objekte nur mit Tricks per Starbasic komplett greifbar sind. Es gibt da einige Versuche im Netz, die zunächst irgendwelche anderen XPropertySets erstellen, die dann ins Kontextmenü hängen, in der Hoffnung, dass die dort dann als com.sun.star.ui.ActionTrigger-Objekte erkannt werden. Hier z.B. [url]http://codesnippets.services.openoffice.org/Office/Office.ContexMenuInterceptor.snip[/url].
Meine Versuche haben ergeben, dass es aber auch einfacher geht, denn auf die com.sun.star.ui.ActionTrigger-Objekte kann per Starbasic komplett zugegriffen werden, wenn man diese, nach dem Erzeugen, zunächst ins Kontextmenü einhängt, dann von dort wieder ausliest, bearbeitet und wieder einhängt. Nicht schön, aber es funktioniert. Siehe Anlage.
viele Grüße
Axel