Edukiak
Indizea 🔎︎

# ScriptForge.PopupMenu zerbitzua

PopupMenu zerbitzua gertaerei lotuta dauden edo scripten bidez exekutatzen diren laster-menuak sortzeko erabili daiteke. Zerbitzu horrek honako ezaugarriak eskaintzen ditu:

- Sarrera, kontrol-lauki eta aukera-botoi pertsonalizatuak dituzten laster-menuen sorrera.

- Menu-elementuen apainketa ikonoekin eta aholkuekin.

## Zerbitzuari deitzea

##### Basic lengoaian

Modu asko daude PopupMenu zerbitzuaren instantziak sortzeko. Beheko adibidean, saguaren edo aplikazio baten gertaerekin lotuta ez dagoen laster-menu bat sortzen da.

        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("Hautatutako elementuaren IDa: " & vResponse)
            myPopup.Dispose()
        End Sub

Goian definitutako Sub errutina exekutatzean, pantailan X=300 eta Y=300 kokagunean dagoen eta bi sarrera dituen laster-menu bat sortuko da.

SFWidgets ez da derrigorrezkoa PopupMenu zerbitzuari deitzean.

Hurrengo adibidean, sagu-gertaera bati lotu dakiokeen Sub instrukzio bat definitu da:

        Sub MyPopupClick(Optional poMouseEvent as Object)
            Dim myPopup As Object
            Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
            ' Bete laster-menua elementuekin
            Dim vResponse As Variant
            vResponse = myPopup.Execute(False)
            ' Egin zerbait vResponse elementuan oinarrituta
            ' ...
            myPopup.Dispose()
        End Sub

Erabili Dispose metodoa laster-menua exekutatu ondoren baliabideak askatzeko.

Posible da, baita ere, laster-menu bat LibreOffice aplikazioek, inprimakien edo elkarrizketa-koadroen kontrolek abiarazitako gertaerekin lotzea. Adibidez, "Saguaren botoia sakatu da" eta "Saguaren botoia askatu da" moduko gertaerak sarritan laster-menuekin lotzen dira.

        Sub MyPopupClick(Optional poEvent as Object)
            Dim myPopup As Object
            Set myPopup = CreateScriptService("PopupMenu", poEvent)
            ' ...
        End Sub

##### Python lengoaian

Goiko adibideak honela idatzi daitezke Python lengoaian:

        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)
            # Bete laster-menua elementuekin
            response = my_popup.Execute()
            # Egin zerbait erantzunean oinarrituta
            my_popup.Dispose()

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
SubmenuCharacter | Ez | String | Menu-elementuak nola habiaratuko diren definitzen duen karakterea edo katea. Karaktere lehenetsia ">" da.
ShortcutCharacter | Ez | String | Menu-elementu bat atzitzeko tekla definitzen duen karakterea. Karaktere lehenetsia "~" da.

## Menuak eta azpimenuak

Azpimenuak dituen laster-menu bat sortzeko, erabili SubmenuCharacter propietatean definitutako karakterea menu-sarrera sortzean, azpimenua non kokatuko den definitzeko. Adibidez, hurrengo menu/azpimenu hierarkia sortu daiteke.

        ' 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

Beheko kodeak ">" azpimenu-karakterea erabiltzen du goian definitutako menu/azpimenu hierarkia sortzeko:

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

"---" katea menuen edo azpimenuen marra bereizleak definitzeko erabiltzen da.

## Ikonoak erabiltzea

Laster-menuko elementuek ikonoak eduki ditzakete, AddCheckBox, AddItem eta AddRadioButton metodoen argumentu gisa zehazten badira.

LibreOffice aplikazioak erabilgarri dituen ikono guztiak erabili daitezke, ikono-fitxategiak instalazio-karpetako zein tokitan dauden zehazten bada beren bide-izen erlatiboaren bidez. Ikonoak honako karpetan daude:

INSTALLDIR/share/config

Erabili FileSystem zerbitzuaren InstallFolder propietatea LibreOffice sistemako zein tokitan dagoen instalatuta zehazteko.

Karpeta horrek ikono multzo erabilgarri bakoitzaren irudi-fitxategiak dituzten ZIP fitxategien serieak ditu. ZIP fitxategien barruko irudiak karpetatan daude antolatuta. Ikono bat erabiltzeko, zehaztu ikono-fitxategiak ZIP fitxategiaren barruan duen kokagunearen bide-izena.

Beheko adibidean, "cmd" karpetaren barruan dagoen "sc_newdoc.svg" ikonoa erabiltzen da. Barraren karakterea, "/", bide-izenaren bereizle gisa erabiltzen da, berdin dio sistema eragilea zein den.

        myPopup.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")

Ikono multzo guztiek barneko egitura bera dute. Bistaratuko den ikonoa unean erabiltzen ari den ikono multzoaren araberakoa izango da.

## Metodoak

PopupMenu zerbitzuaren metodoen zerrenda
AddCheckBox AddItem | AddRadioButton | Execute

## AddCheckBox

Kontrol-lauki bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.

### Sintaxia:

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

### Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu honek elementuak menuaren barruan duen hierarkia ere definitzen du, horretarako azpimenuen karakterea erabiliz.

name: Elementuan klik egiten denean itzuliko den kate-balioa. Balio lehenetsia menu-hierarkiaren azken osagaia da.

status: Menua sortzen denean elementua hautatuta agertuko den ala ez definitzen du (Balio lehenetsia = False).

icon: Bistaratuko den ikonoaren bidea eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

## AddItem

Menu-sarrera bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.

### Sintaxia:

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

### Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu honek elementuak menuaren barruan duen hierarkia ere definitzen du, horretarako azpimenuen karakterea erabiliz.

name: Elementuan klik egiten denean itzuliko den kate-balioa. Balio lehenetsia menu-hierarkiaren azken osagaia da.

icon: Bistaratuko den ikonoaren bidea eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

### Adibidea:

##### Basic lengoaian

          myPopup.AddItem("Item A", Tooltip := "Mezu deskribatzaile bat")

##### Python lengoaian

          myPopup.AddItem("Item A", tooltip = "Mezu deskribatzaile bat")

## AddRadioButton

Aukera-botoi bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.

### Sintaxia:

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

### Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu honek elementuak menuaren barruan duen hierarkia ere definitzen du, horretarako azpimenuen karakterea erabiliz.

name: Elementuan klik egiten denean itzuliko den kate-balioa. Balio lehenetsia menu-hierarkiaren azken osagaia da.

status: Menua sortzen denean, elementua hautatuta dagoen ala ez definitzen du (Balio lehenetsia = False).

icon: Bistaratuko den ikonoaren bidea eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

## Execute

Laster-menua bistaratzen du eta erabiltzailearen ekintza baten zain geratzen da. Erabiltzaileak sakatu duen elementua itzultzen du.

Erabiltzaileak laster-menutik kanpo egiten badu klik edo Esc tekla sakatzen badu, ez da elementurik hautatuko. Kasu horietan, itzuliko den balioa returnid parametroaren araberakoa izango da. returnid = True bada eta ez badago elementurik hautatuta, 0 (zero) balioa itzuliko da. Bestela, hutsik dagoen kate bat, "", itzuliko da.

### Sintaxia:

svc.Execute(opt returnid: bool): any

### Parametroak:

returnid: True (egia) bada, hautatutako elementuaren IDa itzuliko da. False (faltsua) bada, metodoak elementuaren izena itzuliko du (Balio lehenetsia = True).

### Adibidea:

Beheko adibideetan, returnid argumentuaren balioa False denez, laster-menu bat sortzen da eta elementuaren izena itzultzen da.

##### Basic lengoaian

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

##### Python lengoaian

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

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.

Erlazionatutako gaiak

SFDialogs.Dialog zerbitzua

SFDialogs.DialogControl zerbitzua