ບໍລິການ SFWidgets.PopupMenu

ບໍລິການ PopupMenu ສາມາດໃຊ້ເພື່ອສ້າງເມນູປັອບອັບທີ່ສາມາດເຊື່ອມໂຍງກັບເຫດການ ຫຼື ເຮັດວຽກໂດຍສະຄຣິບ. ບໍລິການນີ້ມີຄວາມສາມາດດັ່ງນີ້:

ການເອີ້ນໃຊ້ບໍລິການ

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ PopupMenu, ຕ້ອງໂຫລດ ຫຼື ນຳເຂົ້າໄລບຣາຣີ ScriptForge ກ່ອນ:

ໄອຄອນ ບັນທຶກ

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from scriptforge import CreateScriptService


ໃນ Basic

ບໍລິການ PopupMenu ສາມາດສ້າງໄດ້ຫຼາຍວິທີ. ຕົວຢ່າງດ້ານລຸ່ມນີ້ສ້າງເມນູປັອບອັບໂດຍບໍ່ໄດ້ເຊື່ອມໂຍງກັບເມົາສ໌ ຫຼື ເຫດການຂອງແອັບພລິເຄຊັນ.


    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("Selected item ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  

ການລັນ Sub ທີ່ກຳນົດໄວ້ຂ້າງເທິງຈະສ້າງເມນູປັອບອັບທີ່ມີສອງລາຍການທີ່ຕຳແໜ່ງ X=300 ແລະ Y=300 ເທິງໜ້າຈໍ.

ໄອຄອນ ເຄັດລັບ

ສາມາດລະຄຳນຳໜ້າ SFWidgets ໄດ້ໃນຂະນະທີ່ເອີ້ນໃຊ້ບໍລິການ PopupMenu.


ຕົວຢ່າງຕໍ່ໄປນີ້ກຳນົດ Sub ທີ່ສາມາດເຊື່ອມໂຍງກັບເຫດການເມົາສ໌:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' ເພີ່ມລາຍການໃສ່ເມນູປັອບອັບ
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' ເຮັດບາງຢ່າງຕາມຄ່າ vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  
ໄອຄອນ ເຄັດລັບ

ໃຊ້ວິທີ Dispose ເພື່ອຄືນຊັບພະຍາກອນຫຼັງຈາກໃຊ້ງານເມນູປັອບອັບແລ້ວ.


ນອກຈາກນັ້ນ ຍັງສາມາດເຊື່ອມໂຍງເມນູປັອບອັບກັບເຫດການທີ່ຖືກກະຕຸ້ນໂດຍແອັບພລິເຄຊັນ LibreOffice, ຟອມ ແລະ ການຄວບຄຸມໄດອາລັອກ ໄດ້ນຳ.


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

ຕົວຢ່າງຂ້າງເທິງສາມາດຂຽນເປັນ Python ໄດ້ດັ່ງນີ້:


    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)
        # ເພີ່ມລາຍການໃສ່ເມນູປັອບອັບ
        response = my_popup.Execute()
        # ເຮັດບາງຢ່າງຕາມຄ່າຕອບສະໜອງ
        my_popup.Dispose()
  

ຄຸນສົມບັດ

ຊື່

ອ່ານຢ່າງດຽວ

ປະເພດ

ຄຳອະທິບາຍ

ShortcutCharacter

ບໍ່

String

ຕົວອັກສອນທີ່ໃຊ້ກຳນົດຄີເຂົ້າເຖິງຂອງລາຍການເມນູ. ຕົວອັກສອນເລີ່ມຕົ້ນແມ່ນ ~.

SubmenuCharacter

ບໍ່

String

ຕົວອັກສອນ ຫຼື ຂໍ້ຄວາມທີ່ກຳນົດວ່າລາຍການເມນູຖືກຊ້ອນກັນແນວໃດ. ຕົວອັກສອນເລີ່ມຕົ້ນແມ່ນ >.


ເມນູ ແລະ ເມນູຍ່ອຍ

ເພື່ອສ້າງເມນູປັອບອັບທີ່ມີເມນູຍ່ອຍ, ໃຫ້ໃຊ້ຕົວອັກສອນທີ່ກຳນົດໃນຄຸນສົມບັດ SubmenuCharacter.


    ' 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
  

ລະຫັດດ້ານລຸ່ມນີ້ໃຊ້ຕົວອັກສອນເມນູຍ່ອຍເລີ່ມຕົ້ນ > ເພື່ອສ້າງລຳດັບຊັ້ນຂອງເມນູ/ເມນູຍ່ອຍ:


    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")
  
ໄອຄອນ ບັນທຶກ

ຂໍ້ຄວາມ --- ແມ່ນໃຊ້ເພື່ອສ້າງເສັ້ນຂັ້ນໃນເມນູ ຫຼື ເມນູຍ່ອຍ.


ການໃຊ້ໄອຄອນ

ລາຍການໃນເມນູສາມາດມີໄອຄອນ, ເຊິ່ງຖືກລະບຸເປັນອາກິວເມນໃນເມັດທອດ AddCheckBox, AddItem ແລະ AddRadioButton.

ໄອຄອນທັງໝົດທີ່ມີໃນ LibreOffice ສາມາດໃຊ້ໄດ້ໂດຍການລະບຸເສັ້ນທາງຂອງມັນ.

INSTALLDIR/share/config

ໄອຄອນ ເຄັດລັບ

ໃຊ້ຄຸນສົມບັດ InstallFolder ຂອງບໍລິການ FileSystem ເພື່ອເບິ່ງວ່າ LibreOffice ຕິດຕັ້ງຢູ່ໃສ.


ໂຟນເດີນີ້ບັນຈຸໄຟລ໌ ZIP ທີ່ມີຮູບພາບໄອຄອນຊຸດຕ່າງໆ. ເພື່ອໃຊ້ໄອຄອນ, ໃຫ້ລະບຸໄຟລ໌ໄອຄອນພ້ອມເສັ້ນທາງພາຍໃນໄຟລ໌ ZIP.

ຕົວຢ່າງດ້ານລຸ່ມນີ້ໃຊ້ໄອຄອນ "sc_newdoc.svg" ທີ່ຕັ້ງຢູ່ໃນໂຟນເດີ "cmd".

ໃນ Basic

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

      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    
ໄອຄອນ ບັນທຶກ

ຊຸດໄອຄອນທັງໝົດມີໂຄງສ້າງພາຍໃນຄືກັນ. ໄອຄອນທີ່ສະແດງແທ້ຈະຂຶ້ນກັບຊຸດໄອຄອນທີ່ກຳລັງໃຊ້ງານຢູ່.


ວິທີການ

ລາຍຊື່ວິທີການໃນບໍລິການ PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

ແຊກຊ່ອງໝາຍໃນເມນູປັອບອັບ. ສົ່ງຄືນຄ່າຕົວເລກທີ່ລະບຸລາຍການ.

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

menuitem: ກຳນົດຂໍ້ຄວາມທີ່ຈະສະແດງໃນເມນູ.

name: ຄ່າຂໍ້ຄວາມທີ່ຈະສົ່ງຄືນເມື່ອຄລິກລາຍການ.

status: ກໍານົດວ່າລາຍການຈະຖືກເລືອກຫຼືບໍ່ ເມື່ອເມນູຖືກສ້າງຂຶ້ນ (ຄ່າເລີ່ມຕົ້ນ = False).

icon: ເສັ້ນທາງ ແລະ ຊື່ຂອງໄອຄອນທີ່ຈະສະແດງ.

tooltip: ຂໍ້ຄວາມທີ່ຈະສະແດງເປັນຄຳແນະນຳເຄື່ອງມື.

ຕົວຢ່າງ:

ໃນ Basic

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

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

AddItem

ແຊກລາຍການເມນູໃນເມນູປັອບອັບ. ສົ່ງຄືນຄ່າຕົວເລກທີ່ລະບຸລາຍການ.

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

menuitem: ກຳນົດຂໍ້ຄວາມທີ່ຈະສະແດງໃນເມນູ. ອາຄິວເມນນີ້ຍັງກຳນົດລຳດັບຊັ້ນຂອງລາຍການພາຍໃນເມນູໂດຍການໃຊ້ຕົວອັກສອນເມນູຍ່ອຍ.

name: ຄ່າຂໍ້ຄວາມທີ່ຈະສົ່ງຄືນເມື່ອຄລິກລາຍການ.

icon: ເສັ້ນທາງ ແລະ ຊື່ຂອງໄອຄອນທີ່ຈະສະແດງ.

tooltip: ຂໍ້ຄວາມທີ່ຈະສະແດງເປັນຄຳແນະນຳເຄື່ອງມື.

ຕົວຢ່າງ:

ໃນ Basic

      myPopup.AddItem("Item A", Tooltip := "A descriptive message")
    
ໃນ Python

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

AddRadioButton

ແຊກປຸ່ມເລືອກໃນເມນູປັອບອັບ. ສົ່ງຄືນຄ່າຕົວເລກທີ່ລະບຸລາຍການ.

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

menuitem: ກຳນົດຂໍ້ຄວາມທີ່ຈະສະແດງໃນເມນູ. ອາຄິວເມນນີ້ຍັງກຳນົດລຳດັບຊັ້ນຂອງລາຍການພາຍໃນເມນູໂດຍການໃຊ້ຕົວອັກສອນເມນູຍ່ອຍ.

name: ຄ່າຂໍ້ຄວາມທີ່ຈະສົ່ງຄືນເມື່ອຄລິກລາຍການ.

ສະຖານະ: ກຳນົດວ່າລາຍການຈະຖືກເລືອກຫຼືບໍ່ ເມື່ອເມນູຖືກສ້າງຂຶ້ນ (ຄ່າເລີ່ມຕົ້ນ = False).

icon: ເສັ້ນທາງ ແລະ ຊື່ຂອງໄອຄອນທີ່ຈະສະແດງ.

tooltip: ຂໍ້ຄວາມທີ່ຈະສະແດງເປັນຄຳແນະນຳເຄື່ອງມື.

ຕົວຢ່າງ:

ໃນ Basic

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

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

Execute

ສະແດງເມນູປັອບອັບ ແລະ ລໍຖ້າການກະທຳຂອງຜູ້ໃຊ້. ສົ່ງຄືນລາຍການທີ່ຜູ້ໃຊ້ຄລິກ.

ຖ້າຜູ້ໃຊ້ຄລິກຢູ່ນອກເມນູປັອບອັບ ຫຼື ກົດປຸ່ມ Esc, ຈະບໍ່ມີລາຍການໃດຖືກເລືອກ. ໃນກໍລະນີດັ່ງກ່າວ, ຄ່າທີ່ສົ່ງຄືນແມ່ນຂຶ້ນກັບພາລາມິເຕີ returnid. ຖ້າ returnid = True ແລະ ບໍ່ມີລາຍການໃດຖືກເລືອກ, ຄ່າ 0 (ສູນ) ຈະຖືກສົ່ງຄືນ. ຖ້າບໍ່ດັ່ງນັ້ນ ຈະສົ່ງຄືນເປັນສາຍອັກຂະລະຫວ່າງປ່າວ "".

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

returnid: ຖ້າ True ລະຫັດ ID ຂອງລາຍການທີ່ເລືອກຈະຖືກສົ່ງຄືນ. ຖ້າ False ເມັດທອດຈະສົ່ງຄືນຊື່ຂອງລາຍການ (ຄ່າເລີ່ມຕົ້ນ = True).

ຕົວຢ່າງ:

ໃນຕົວຢ່າງດ້ານລຸ່ມນີ້, ເມນູປັອບອັບຖືກສ້າງຂຶ້ນ ແລະ ສົ່ງຄືນຊື່ລາຍການ ເພາະອາກິວເມັນ returnid ຖືກຕັ້ງເປັນ False.

ໃນ Basic

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

      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)
    
ໄອຄອນ ຄຳເຕືອນ

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.


ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!