LibreOffice 25.8 Help
De service PopupMenu kan worden gebruikt om pop-upmenu's te maken die aan gebeurtenissen kunnen worden gekoppeld of door scripts kunnen worden uitgevoerd. Deze service biedt de volgende mogelijkheden:
Het maken van pop-upmenu's met aangepaste items, selectievakjes en keuzerondjes.
Decoratie van menu-items met pictogrammen en helptips.
Voordat de service PopupMenu gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geïmporteerd:
De service PopupMenu kan op meerdere manieren worden geïnstantieerd. In het onderstaande voorbeeld wordt een pop-upmenu gemaakt zonder het te associëren met een muis- of toepassingsgebeurtenis.
    Sub ShowPopup
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim myPopup As Object
        Set myPopup = CreateScriptService("SFWidgets.PopupMenu", , 300, 300)
        myPopup.AddItem("Item ~A")
        myPopup.AddItem("Item ~B")
        vResponse = myPopup.Execute()
        MsgBox("Geselecteerd item-ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  Als u de hierboven gedefinieerde Sub uitvoert, wordt een pop-upmenu gemaakt met twee items op de positie X=300 en Y=300 op het scherm.
Het voorvoegsel SFWidgets kan worden onderdrukt terwijl de service PopupMenu wordt aangeroepen.
Het volgende voorbeeld definieert een Sub die kan worden gekoppeld aan een muisgebeurtenis:
    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Pop-upmenu vullen met items
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Doe iets op basis van vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  Gebruik de methode Dispose om bronnen vrij te maken na het uitvoeren van het pop-upmenu.
Het is ook mogelijk om een pop-upmenu te associëren met gebeurtenissen die worden geactiveerd door LibreOffice-toepassingen, formulier- en dialoogvensterbesturingselementen. Gebeurtenissen zoals "Muisknop ingedrukt" en "Muisknop losgelaten" worden vaak geassocieerd met pop-upmenu's.
    Sub MyPopupClick(Optional poEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poEvent)
        ' ...
    End Sub
  Dezelfde voorbeelden in Python:
    from scriptforge import CreateScriptService
    
    def show_popup(args=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", None, 300, 300)
        bas = CreateScriptService("Basic")
        my_popup.AddItem("Item ~A")
        my_popup.AddItem("Item ~B")
        response = my_popup.Execute()
        bas.MsgBox(f"Selected item ID: {response}")
        my_popup.Dispose()
  
    def my_popup_click(poEvent=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", poEvent)
        # Pop-upmenu vullen met items
        response = my_popup.Execute()
        # Doe iets op basis van reactie
        my_popup.Dispose()
  | 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 pop-upmenu 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 submenuteken > om de hierboven gedefinieerde menu-/submenuhiërarchie te creëren:
    myPopup.AddItem("Item A")
    myPopup.AddItem("Item B>Item B.1")
    myPopup.AddItem("Item B>Item B.2")
    myPopup.AddItem("---")
    myPopup.AddItem("Item C>Item C.1>Item C.1.1")
    myPopup.AddItem("Item C>Item C.1>Item C.1.2")
    myPopup.AddItem("Item C>Item C.2>Item C.2.1")
    myPopup.AddItem("Item C>Item C.2>Item C.2.2")
    myPopup.AddItem("Item C>Item C.2>---")
    myPopup.AddItem("Item C>Item C.2>Item C.2.3")
    myPopup.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.
Items in het menu kunnen pictogrammen hebben, die als argumenten worden opgegeven in de methodes AddCheckBox, AddItem en AddRadioButton.
Alle pictogrammen die beschikbaar zijn in LibreOffice kunnen worden gebruikt door hun pad op te geven ten opzichte van de map waarin de pictogrambestanden zich in de installatiemap bevinden. Pictogrammen bevinden zich in de volgende map:
INSTALLDIR/share/config
Gebruik de eigenschap InstallFolder van de service FileSystem om te bepalen waar LibreOffice op uw systeem is geïnstalleerd.
Deze map bevat een reeks ZIP-bestanden met de afbeeldingsbestanden van elke beschikbare pictogrammenset. De afbeeldingen in deze ZIP-bestanden zijn georganiseerd in mappen. Om een pictogram te gebruiken, specificeert u het pictogrambestand met het pad naar de locatie in het ZIP-bestand.
In het onderstaande voorbeeld wordt het pictogram "sc_newdoc.svg" gebruikt dat zich in de map "cmd" bevindt. De schuine streep "/" wordt gebruikt als padscheiding, ongeacht het besturingssysteem.
      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    Alle pictogrammensets hebben dezelfde interne structuur. Het daadwerkelijk weergegeven pictogram is afhankelijk van de pictogrammenset die momenteel wordt gebruikt.
| Lijst met methodes in de service PopupMenu | ||
|---|---|---|
Voegt een selectievakje in het pop-upmenu in. Retourneert een geheel getal dat het ingevoegde item identificeert.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: 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.
      myPopup.AddCheckBox("Option A", Status := True)
    
      my_popup.AddCheckBox("Option A", status=True)
    Voegt een menu-item in het pop-upmenu in. Retourneert een geheel getal dat het ingevoegde item identificeert.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: 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.
      myPopup.AddItem("Item A", Tooltip := "Een beschrijvend bericht")
    
      my_popup.AddItem("Item A", tooltip = "Een beschrijvend bericht")
    Voegt een keuzerondje in het pop-upmenu in. Retourneert een geheel getal dat het ingevoegde item identificeert.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: 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.
      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
      my_popup.AddRadioButton("Option A", name="A", status=True)
    Toont het pop-upmenu en wacht op een actie van de gebruiker. Retourneert het item waarop de gebruiker heeft geklikt.
Als de gebruiker buiten het pop-upmenu klikt of op de toets Esc drukt, wordt er geen item geselecteerd. In dergelijke gevallen is de geretourneerde waarde afhankelijk van de parameter returnid. Als returnid = True en er is geen item geselecteerd, dan wordt de waarde 0 (nul) geretourneerd. Anders wordt een lege tekenreeks "" geretourneerd.
svc.Execute(opt returnid: bool = True): any
returnid: Indien True wordt de geselecteerde item-ID geretourneerd. Als False retourneert de methode de naam van het item (standaard = True).
In de onderstaande voorbeelden wordt een pop-upmenu gemaakt en wordt de naam van het item geretourneerd omdat het argument returnid is ingesteld op False.
      myPopup.AddItem("Item A", Name := "A")
      myPopup.AddItem("Item B", Name := "B")
      Dim vResponse as Variant
      vResponse = myPopup.Execute(False)
    
      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)