LibreOfficeDev 25.8 Hjelp
Tjenesten PopupMenu kan brukes til å lage popup-menyer som kan assosieres med hendelser eller utføres av skript. Denne tjenesten gir følgende funksjoner:
Oppretting av popup-menyer med egendefinerte oppføringer, avmerkingsbokser og radioknapper.
Dekorasjon av menyelementer med ikoner og verktøytips.
Før du bruker PopupMenu-tjenesten, må ScriptForge-biblioteket lastes eller importeres:
Tjenesten PopupMenu kan instansieres på flere måter. Eksemplet nedenfor lager en popup-meny uten å knytte den til en mus- eller programhendelse.
    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("Valgt element-ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  Å kjøre Sub definert ovenfor vil lage en popup-meny med to oppføringer i posisjonene X=300 og Y=300 på skjermen.
Prefikset SFWidgets kan undertrykkes mens du starter PopupMenu-tjenesten.
Følgende eksempel definerer en Sub som kan assosieres med en musehendelse:
    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Fyll popup-menyen med elementer
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        Gjør noe basert på vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  Bruk metoden Kasser for å frigjøre ressurser etter at du har kjørt popup-menyen.
Det er også mulig å knytte en popup-meny til hendelser utløst av LibreOfficeDev-applikasjoner, skjema- og dialogkontroller. Hendelser som "Museknapp trykket" og "Museknapp sluppet" er ofte knyttet til popup-menyer.
    Sub MyPopupClick(Optional poEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poEvent)
        ' ...
    End Sub
  Eksemplene ovenfor kan skrives i Python som følger:
    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)
        # Fyll popupmeny med elementer
        response = my_popup.Execute()
        # Gjør noe basert på respons
        my_popup.Dispose()
  | Navn | Skrivebeskyttet | Type | Beskrivelse | 
|---|---|---|---|
| ShortcutCharacter | Nei | String | Tegn som brukes til å definere tilgangsnøkkelen til et menyelement. Standardtegnet er ~. | 
| SubmenuCharacter | Nei | String | Tegn eller streng som definerer hvordan menyelementer er nestet. Standardtegnet er >. | 
For å lage en popup-meny med undermenyer, bruk tegnet som er definert i egenskapen SubmenuCharacter mens du oppretter menyoppføringen for å definere hvor den skal plasseres. Tenk for eksempel på følgende meny-/undermenyhierarki.
    ' 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
  Koden nedenfor bruker standard undermeny-tegnet > for å lage meny-/undermeny-hierarkiet definert ovenfor:
    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")
  Strengen --- brukes til å definere skillelinjer i menyer eller undermenyer.
Elementer i menyen kan ha ikoner, som er spesifisert som argumenter i metodene AddCheckBox, AddItem og AddRadioButton.
Alle ikoner som er tilgjengelige i LibreOfficeDev kan brukes ved å spesifisere banen deres i forhold til mappen der ikonfilene er plassert i installasjonsmappen. Ikoner er plassert i følgende mappe:
INSTALLDIR/share/config
Bruk egenskapen InstallFolder til FileSystem-tjenesten for å finne ut hvor LibreOfficeDev er installert i systemet ditt.
Denne mappen inneholder en serie ZIP-filer som inneholder bildefilene til hvert tilgjengelige ikonsett. Bildene i disse ZIP-filene er organisert i mapper. For å bruke et ikon, spesifiser ikonfilen med banen til plasseringen i ZIP-filen.
Eksemplet nedenfor bruker ikonet "sc_newdoc.svg" som ligger inne i "cmd"-mappen. Skråstreken "/" brukes som baneskilletegn uavhengig av operativsystemet.
      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    Alle ikonsett har samme interne struktur. Det faktiske ikonet som vises avhenger av ikonsettet som er i bruk.
| Liste over metoder i PopupMenu-tjenesten | ||
|---|---|---|
Setter inn en avmerkingsboks i hurtigmenyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
menuitem: Definerer teksten som skal vises i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruke undermeny-tegnet.
navn: Strengverdi som skal returneres når elementet klikkes. Som standard brukes den siste komponenten i menyhierarkiet.
status: Definerer om elementet er valgt når menyen opprettes (Standard = Usann).
ikon: Bane og navn på ikonet som skal vises uten baneskilletegn. Det faktiske ikonet som vises avhenger av ikonsettet som brukes.
verktøytips: Tekst som skal vises som verktøytips.
      myPopup.AddCheckBox("Option A", Status := True)
    
      my_popup.AddCheckBox("Option A", status=True)
    Setter inn en menyoppføring i hurtigmenyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str): int
menuitem: Definerer teksten som skal vises i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruke undermeny-tegnet.
navn: Strengverdi som skal returneres når elementet klikkes. Som standard brukes den siste komponenten i menyhierarkiet.
ikon: Bane og navn på ikonet som skal vises uten baneskilletegn. Det faktiske ikonet som vises avhenger av ikonsettet som brukes.
verktøytips: Tekst som skal vises som verktøytips.
      myPopup.AddItem("Vare A", Verktøytips := "En beskrivende melding")
    
      my_popup.AddItem("Vare A", tooltip = "En beskrivende melding")
    Setter inn en alternativknappoppføring i hurtigmenyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
menuitem: Definerer teksten som skal vises i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruke undermeny-tegnet.
navn: Strengverdi som skal returneres når elementet klikkes. Som standard brukes den siste komponenten i menyhierarkiet.
status: Definerer om elementet er valgt når menyen opprettes (Standard = Usann).
ikon: Bane og navn på ikonet som skal vises uten baneskilletegn. Det faktiske ikonet som vises avhenger av ikonsettet som brukes.
verktøytips: Tekst som skal vises som verktøytips.
      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
      my_popup.AddRadioButton("Option A", name="A", status=True)
    Viser popup-menyen og venter på en brukerhandling. Returnerer elementet som brukeren har klikket på.
Hvis brukeren klikker utenfor popup-menyen eller trykker på Esc-tasten, er ingen element valgt. I slike tilfeller avhenger den returnerte verdien av parameteren returnid. Hvis returnid = Sann og ingen gjenstand er valgt, returneres verdien 0 (null). Ellers returneres en tom streng "".
svc.Execute(opt returnid: bool = True): any
returnid: Hvis True returneres den valgte vare-ID-en. Hvis False returnerer metoden elementets navn (Standard = Sann).
I eksemplene nedenfor opprettes en popup-meny og elementets navn returneres fordi argumentet returnid er satt til 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)