SFWidgets.PopupMenu tjeneste

Tjenesten PopupMenu kan brukes til å lage popup-menyer som kan assosieres med hendelser eller utføres av skript. Denne tjenesten gir følgende funksjoner:

Tjenestepåkallelse

Før du bruker PopupMenu-tjenesten, må ScriptForge-biblioteket lastes eller importeres:

note

• Grunnleggende makroer krever å laste ScriptForge-biblioteket ved hjelp av følgende setning:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-skript krever import fra scriptforge-modulen:
fra scriptforge import CreateScriptService


I Basic

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.

tip

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
  
tip

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 LibreOffice-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
  
I Python

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()
  

Egenskaper

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 >.


Meny og undermenyer

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")
  
note

Strengen --- brukes til å definere skillelinjer i menyer eller undermenyer.


Ved hjelp av ikoner

Elementer i menyen kan ha ikoner, som er spesifisert som argumenter i metodene AddCheckBox, AddItem og AddRadioButton.

Alle ikoner som er tilgjengelige i LibreOffice 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

tip

Bruk egenskapen InstallFolder til FileSystem-tjenesten for å finne ut hvor LibreOffice 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.

I Basic

      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
I Python

      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    
note

Alle ikonsett har samme interne struktur. Det faktiske ikonet som vises avhenger av ikonsettet som er i bruk.


Metoder

Liste over metoder i PopupMenu-tjenesten

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Setter inn en avmerkingsboks i hurtigmenyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.

Syntaks:

svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int

Parametre:

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.

Eksempel:

I Basic

      myPopup.AddCheckBox("Option A", Status := True)
    
I Python

      my_popup.AddCheckBox("Option A", status=True)
    

AddItem

Setter inn en menyoppføring i hurtigmenyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.

Syntaks:

svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str): int

Parametre:

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.

Eksempel:

I Basic

      myPopup.AddItem("Vare A", Verktøytips := "En beskrivende melding")
    
I Python

      my_popup.AddItem("Vare A", tooltip = "En beskrivende melding")
    

AddRadioButton

Setter inn en alternativknappoppføring i hurtigmenyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.

Syntaks:

svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int

Parametre:

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.

Eksempel:

I Basic

      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
I Python

      my_popup.AddRadioButton("Option A", name="A", status=True)
    

Execute

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 "".

Syntaks:

svc.Execute(opt returnid: bool = True): any

Parametre:

returnid: Hvis True returneres den valgte vare-ID-en. Hvis False returnerer metoden elementets navn (Standard = Sann).

Eksempel:

I eksemplene nedenfor opprettes en popup-meny og elementets navn returneres fordi argumentet returnid er satt til False.

I Basic

      myPopup.AddItem("Item A", Name := "A")
      myPopup.AddItem("Item B", Name := "B")
      Dim vResponse as Variant
      vResponse = myPopup.Execute(False)
    
I Python

      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)
    
warning

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.


Supporter oss!