folgendes Problem:
Ich habe mit Menü Extras -> Anpassen ein Menü mit zwei Eintragen erzeugt. Ich möchte, dass Eintrag1 aktiv ist, solange Eintrag2 inaktiv bleibt. Klicke ich auf Eintrag2, wird es aktiv und Eintrag1 inaktiv. Vergleichbar mit Datei -> Speichern, wenn ich schon gespeichert habe; es ist noch "visible", aber inaktiv.
Mit
Code: Alles auswählen
FUNCTION Texyl_switchMenuitem (BYVAL NameMenu AS STRING, _
BYVAL Itemname AS STRING, _
Value AS BOOLEAN) AS BOOLEAN
DIM CfgMgrSupplier AS OBJECT
DIM CfgMgr AS OBJECT
DIM MenuBarSettings AS OBJECT
DIM PopupMenu AS OBJECT ''Container des Menüpunktes
DIM ThisPopupMenu AS OBJECT
DIM MenuItem AS OBJECT
DIM TexylMenu AS OBJECT
DIM TESTO AS Object
DIM i AS INTEGER
CfgMgr = ThisComponent.UIConfigurationManager
MenuBarSettings = CfgMgr.getSettings( "private:resource/menubar/menubar", true )
REM Menü finden
FOR i = 0 TO MenuBarSettings.Count
PopupMenu = MenuBarSettings.getByIndex (i)
IF PopupMenu(3).Value = Texyl_MENU THEN
EXIT FOR
END IF
NEXT
REM Item finden
ThisPopupMenu = PopupMenu(2).Value
FOR i = 0 TO ThisPopupMenu.Count
MenuItem = ThisPopupMenu.getByIndex(i)
IF MenuItem(3).Value = Itemname THEN
EXIT FOR
END IF
NEXT
REM oder auch
TESTO = CfgMgr.getUIElementsInfo ("UNKNOWN")
TexylMenu = CfgMgr.getSettings( TESTO(0)(0).Value, true )
END FUNCTION
Ich danke schonmal für alle Tipps und Tricks
Löse das jetzt so:
Code: Alles auswählen
OPTION EXPLICIT
PRIVATE CONST MENURESOURCE = "private:resource/menubar/menubar"
SUB test()
REM Ein Eintrag muß mit Extra->Anpassen in der Menüleiste
REM erzeugt werden.
REM Das Popup befindet sich am Index 9 der Menubar (letzter Eintrag?)
REM Es hat min. 2 Einträge
setItemEnabled (9, 1, TRUE)
END SUB
SUB setItemEnabled (BYVAL PopupIx AS INTEGER, _
BYVAL ItemIx AS INTEGER, _
BYVAL Enable AS BOOLEAN)_
DIM DocCfgMng AS OBJECT
DIM Settings AS OBJECT
DIM ItemContainer AS OBJECT
DIM Item() AS OBJECT
DIM Prop AS NEW com.sun.star.beans.PropertyValue
DIM i AS INTEGER
DIM Exist AS BOOLEAN
DocCfgMng = ThisComponent.getUIConfigurationManager ()
IF DocCfgMng.hasSettings (MENURESOURCE) THEN
Settings = DocCfgMng.getSettings (MENURESOURCE, TRUE)
ItemContainer = getItemContainer (PopupIx, Settings)
Item = ItemContainer.getByIndex (ItemIx)
REM Poperty "Enabled" suchen
FOR i = 0 TO uBound (Item)
IF Item(i).Name = "Enabled" THEN
Item(i).Value = Enable
Exist = TRUE
EXIT FOR
END IF
NEXT
REM Property "Enabled" nicht vorhanden
IF NOT Exist THEN
REDIM PRESERVE Item(uBound(Item) + 1)
Prop.Name = "Enabled"
Prop.Value = Enable
Item(uBound(Item)) = Prop
END IF
ItemContainer.replaceByIndex (ItemIx, Item)
DocCfgMng.replaceSettings (MENURESOURCE, Settings)
END IF
END SUB
FUNCTION getItemContainer (BYVAL PopupIndex AS INTEGER, _
Settings AS OBJECT) _
AS OBJECT
DIM Popup AS OBJECT
DIM i AS INTEGER
Popup = Settings.getByIndex (PopupIndex)
FOR i = 0 TO uBound (Popup)
IF Popup(i).Name = "ItemDescriptorContainer" THEN
getItemContainer = Popup(i).Value
EXIT FUNCTION
END IF
NEXT
END FUNCTION