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

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

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!