ScriptForge.PopupMenu service

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

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 Collabora Office-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

SubmenuCharacter

Nei

String

Character or string that defines how menu items are nested. The default character is ">".

ShortcutCharacter

Nei

String

Character used to define the access key of a menu item. The default character is "~".


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
  

The code below uses the default submenu character ">" to create the menu/submenu hierarchy defined above:


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

The string "---" is used to define line separators in menus or submenus..


Ved hjelp av ikoner

Items in the popup menu can have icons, which are specified as arguments in the AddCheckBox, AddItem and AddRadioButton methods.

Alle ikoner som er tilgjengelige i Collabora Office 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 Collabora Office 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.


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

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

      myPopup.AddItem("Item A", tooltip = "A descriptive message")
    

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

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

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

Execute

Viser popup-menyen og venter på en brukerhandling. Returnerer elementet som brukeren har klikket på.

If the user clicks outside the popup menu ou presses the Esc key, then no item is selected. In such cases, the returned value depends on the returnid parameter. If returnid = True and no item is selected, then the value 0 (zero) is returned. Otherwise an empty string "" is returned.

Syntaks:

svc.Execute(opt returnid: bool): 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

      myPopup.AddItem("Item A", name="A")
      myPopup.AddItem("Item B", name="B")
      response = myPopup.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!