LibreOffice 25.8 Help
De service Menu kan worden gebruikt om menu's te maken en te verwijderen uit de menubalk van een LibreOffice-documentvenster. Elk menu-item kan worden gekoppeld aan een script of aan een UNO-opdracht. Deze service biedt de volgende mogelijkheden:
Het maken van menu's met aangepaste items, selectievakjes, keuzerondjes en scheidingstekens.
Decoratie van menu-items met pictogrammen en helptips.
Menu's die met deze service zijn gemaakt, zijn alleen beschikbaar voor een bepaald documentvenster. Ze worden niet opgeslagen in het document of als applicatie-instellingen. Als u het document sluit en opent, worden de standaard menubalkinstellingen hersteld.
Wanneer OLE-objecten zoals wiskundige formules of Calc-diagrammen worden bewerkt vanuit een document, configureert LibreOffice de menubalk opnieuw volgens het object. Wanneer dit gebeurt, worden de menu's die zijn gemaakt met de service Menu verwijderd en niet hersteld na het bewerken van het OLE-object.
Voordat de service Menu gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geïmporteerd:
Een instantie van de service Menu wordt aangemaakt met het aanroepen van de methode CreateMenu van de service Document. In onderstaand stukje code wordt een menu My Menu in het huidige document aangemaakt met twee menu-regels Item A en Item B.
    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Set oMenu = oDoc.CreateMenu("MijnMenu")
        With oMenu
            .AddItem("Item A", Command := "About")
            .AddItem("Item B", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
            .Dispose()
        End With
    End Sub
  Nadat u het menu hebt gemaakt, wordt aanbevolen om de methode Dispose aan te roepen om de bronnen vrij te maken die worden gebruikt door de service-instantie Menu.
In het bovenstaande voorbeeld is Item A gekoppeld aan het UNO-commando .uno:About terwijl Item B is gekoppeld aan het script ItemB_Listener gedefinieerd in Module1 van de Standard-bibliotheek van de container Mijn macro's.
Het volgende voorbeeld definieert ItemB_Listener dat wordt aangeroepen wanneer op Item B wordt geklikt. Deze listener splitst eenvoudig de argumentreeks die aan de Sub is doorgegeven en toont deze in een berichtvenster.
    Sub ItemB_Listener(args As String)
        ' Verwerk de argumentreeks die aan de luisteraar is doorgegeven
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Menunaam: "   & sArgs(0) & Chr(13) & _
               "Menu-item: "   & sArgs(1) & Chr(13) & _
               "Item-ID: "     & sArgs(2) & Chr(13) & _
               "Itemstatus: " & sArgs(3)
    End Sub
  Zoals in het bovenstaande voorbeeld wordt getoond, ontvangen menu-items die aan een script zijn gekoppeld een door komma's gescheiden tekenreeksargument met de volgende waardes:
De naam op het hoogste niveau van het menu.
De tekenreeks-ID van het geselecteerde menu-item.
De numerieke ID van het geselecteerde menu-item.
De huidige status van het menu-item. Dit is handig voor selectievakjes en keuzerondjes. Als het item is aangevinkt, wordt de waarde "1" geretourneerd, anders wordt "0" geretourneerd.
Dezelfde voorbeelden in Python:
    from scriptforge import CreateScriptService
    
    def create_menu(args=None):
        oDoc = CreateScriptService("Document")
        oMenu = oDoc.CreateMenu("My Menu")
        oMenu.AddItem("Item A", command="About")
        oMenu.AddItem("Item B", script="vnd.sun.star.script:my_macros.py$item_b_listener?language=Python&location=user")
        oMenu.Dispose()
  
    def item_b_listener(args):
        bas = CreateScriptService("Basic")
        s_args = args.split(",")
        msg = f"Menunaam: {s_args[0]}\n"
        msg += f"Menu-item: {s_args[1]}\n"
        msg += f"Item-ID: {s_args[2]}\n"
        msg += f"Itemstatus: {s_args[3]}"
        bas.MsgBox(msg)
  | Name | AlleenLezen | Type | Beschrijving | 
|---|---|---|---|
| ShortcutCharacter | Nee | String | Teken dat wordt gebruikt om de toegangssleutel van een menu-item te definiëren. Het standaardteken is "~". | 
| SubmenuCharacter | Nee | String | Teken of tekenreeks die bepaalt hoe menu-items worden genest. Het standaardteken is ">". | 
Om een menu met submenu's te maken, gebruikt u het teken dat is gedefinieerd in de eigenschap SubmenuCharacter terwijl u het menu-item maakt om te bepalen waar het zal worden geplaatst. Beschouw bijvoorbeeld de volgende menu-/submenuhiërarchie.
    ' Item A
    ' Item B > Item B.1
    '          Item B.2
    ' ------ (line separator)
    ' Item C > Item C.1 > Item C.1.1
    '                     Item C.1.2
    ' Item C > Item C.2 > Item C.2.1
    '                     Item C.2.2
    '                     ------ (line separator)
    '                     Item C.2.3
    '                     Item C.2.4
  De onderstaande code gebruikt het standaard submenu-teken ">" om de hierboven gedefinieerde menu-/submenuhiërarchie te creëren:
    oMenu.AddItem("Item A")
    oMenu.AddItem("Item B>Item B.1")
    oMenu.AddItem("Item B>Item B.2")
    oMenu.AddItem("---")
    oMenu.AddItem("Item C>Item C.1>Item C.1.1")
    oMenu.AddItem("Item C>Item C.1>Item C.1.2")
    oMenu.AddItem("Item C>Item C.2>Item C.2.1")
    oMenu.AddItem("Item C>Item C.2>Item C.2.2")
    oMenu.AddItem("Item C>Item C.2>---")
    oMenu.AddItem("Item C>Item C.2>Item C.2.3")
    oMenu.AddItem("Item C>Item C.2>Item C.2.4")
  De tekenreeks --- wordt gebruikt om scheidingslijnen te definiëren in menu's of submenu's.
| Lijst met methodes in de menuservice | ||
|---|---|---|
Voegt een selectievakje in het menu in. Retourneert een geheel getal dat het ingevoegde item identificeert.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiërarchie van het item in het menu met behulp van het submenuteken.
name: Tekenreekswaarde die wordt gebruikt om het menu-item te identificeren. Standaard wordt het laatste onderdeel van de menuhiërarchie gebruikt.
status: Definieert of het item is geselecteerd wanneer het menu wordt gemaakt (standaard = False).
icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.
tooltip: Tekst die moet worden weergegeven als helptip.
command: De naam van een UNO-opdracht zonder het voorvoegsel .uno:. Als de opdrachtnaam niet bestaat, gebeurt er niets.
script: De URI voor een Basic- of Python-script dat wordt uitgevoerd wanneer op het item wordt geklikt.
De argumenten command en script sluiten elkaar uit, dus er kan er maar één voor elk menu-item worden ingesteld.
Raadpleeg Scripting Framework URI-specificatie voor meer informatie over de URI-syntaxis die wordt gebruikt in het argument script.
      'Menu-item geassocieerd met de opdracht .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Voert het basisscript Standard.Module1.MyListener uit dat in het document is opgeslagen
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Voert het Python-script MyListener uit dat zich bevindt in het bestand myScripts.py in de map met gebruikersscripts
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
      oMenu.AddCheckBox("Item A", status=True, tooltip="Paste values", command="Paste")
      oMenu.AddCheckBox("Item B", status=False, script="vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      oMenu.AddCheckBox("Item C", Status=True, Script="vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    Voegt een labelitem in het menu in. Retourneert een geheel getal dat het ingevoegde item identificeert.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiërarchie van het item in het menu met behulp van het submenuteken.
name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiërarchie gebruikt.
icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.
tooltip: Tekst die moet worden weergegeven als helptip.
command: De naam van een UNO-opdracht zonder het voorvoegsel .uno:. Als de opdrachtnaam niet bestaat, gebeurt er niets.
script: De URI voor een Basic- of Python-script dat wordt uitgevoerd wanneer op het item wordt geklikt.
      oMenu.AddItem("Item A", Tooltip := "Een beschrijvend bericht")
    
      oMenu.AddItem("Item A", tooltip = "Een beschrijvend bericht")
    Voegt een keuzerondje in het menu in. Retourneert een geheel getal dat het ingevoegde item identificeert.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiërarchie van het item in het menu met behulp van het submenuteken.
name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiërarchie gebruikt.
status: Definieert of het item is geselecteerd wanneer het menu wordt gemaakt (standaard = False).
icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.
tooltip:Tekst die moet worden weergegeven als helptip.
command: De naam van een UNO-opdracht zonder het voorvoegsel .uno:. Als de opdrachtnaam niet bestaat, gebeurt er niets.
script: De URI voor een Basic- of Python-script dat wordt uitgevoerd wanneer op het item wordt geklikt.
      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
      oMenu.AddRadioButton("Item A", name="A", status=True)