ບໍລິການ SFWidgets.Menu

ບໍລິການ Menu ສາມາດໃຊ້ເພື່ອສ້າງ ແລະ ລຶບເມນູອອກຈາກແຖບເມນູຂອງໜ້າຕ່າງເອກະສານ LibreOffice. ແຕ່ລະລາຍການເມນູສາມາດເຊື່ອມໂຍງກັບສະຄຣິບ ຫຼື ຄຳສັ່ງ UNO ໄດ້. ບໍລິການນີ້ມີຄວາມສາມາດດັ່ງນີ້:

ໄອຄອນ ບັນທຶກ

ເມນູທີ່ສ້າງຂຶ້ນດ້ວຍບໍລິການນີ້ຈະໃຊ້ໄດ້ສະເພາະໜ້າຕ່າງເອກະສານທີ່ລະບຸເທົ່ານັ້ນ. ພວກມັນຈະບໍ່ຖືກບັນທຶກໄວ້ໃນເອກະສານ ຫຼື ເປັນການຕັ້ງຄ່າແອັບພລິເຄຊັນ. ການປິດ ແລະ ເປີດເອກະສານໃໝ່ຈະເປັນການຄືນຄ່າການຕັ້ງຄ່າແຖບເມນູເລີ່ມຕົ້ນ.


ໄອຄອນ ຄຳເຕືອນ

ເມື່ອມີການແກ້ໄຂວັດຖຸ OLE ເຊັ່ນ ສູດ Math ຫຼື ແຜນພູມ Calc ພາຍໃນເອກະສານ, LibreOffice ຈະກຳນົດຄ່າແຖບເມນູໃໝ່ຕາມວັດຖຸນັ້ນ. ເມື່ອສິ່ງນີ້ເກີດຂຶ້ນ, ເມນູທີ່ສ້າງດ້ວຍບໍລິການ Menu ຈະຖືກລຶບອອກ ແລະ ຈະບໍ່ຖືກຄືນຄ່າຫຼັງຈາກແກ້ໄຂວັດຖຸ OLE ແລ້ວ.


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

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

ໄອຄອນ ບັນທຶກ

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

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


ໃນ Basic

ບໍລິການ Menu ຖືກສ້າງຂຶ້ນໂດຍການເອີ້ນວິທີ CreateMenu ຈາກບໍລິການ Document. ຕົວຢ່າງລະຫັດດ້ານລຸ່ມນີ້ສ້າງເມນູຊື່ My Menu ໃນໜ້າຕ່າງເອກະສານປັດຈຸບັນ ໂດຍມີສອງລາຍການຄື Item A ແລະ Item B.


    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Set oMenu = oDoc.CreateMenu("My Menu")
        With oMenu
            .AddItem("Item A", Command := "About")
            .AddItem("Item B", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
            .Dispose()
        End With
    End Sub
  
ໄອຄອນ ບັນທຶກ

ຫຼັງຈາກສ້າງເມນູແລ້ວ, ແນະນຳໃຫ້ເອີ້ນວິທີ Dispose ເພື່ອຄືນຊັບພະຍາກອນທີ່ໃຊ້ໂດຍອິນສະແຕນຊ໌ບໍລິການ Menu.


ໃນຕົວຢ່າງຂ້າງເທິງ, ລາຍການ A ແມ່ນກ່ຽວຂ້ອງກັບຄໍາສັ່ງ UNO .uno:About ໃນຂະນະທີ່ ລາຍການ B ແມ່ນກ່ຽວຂ້ອງກັບສະຄຣິບ ItemB_Listener ທີ່ຖືກກຳນົດໄວ້ໃນ Module1 ຂອງຄັງ Standard ໃນໂຕບັນຈຸ My Macros.

ຕົວຢ່າງຕໍ່ໄປນີ້ກຳນົດ ItemB_Listener ທີ່ຈະຖືກເອີ້ນໃຊ້ເມື່ອມີການຄລິກ Item B. ຕົວຟັງນີ້ຈະແຍກຂໍ້ຄວາມອາກິວເມັນທີ່ສົ່ງໃຫ້ Sub ແລະ ສະແດງພວກມັນໃນກ່ອງຂໍ້ຄວາມ.


    Sub ItemB_Listener(args As String)
        ' ປະມວນຜົນຂໍ້ຄວາມອາກິວເມັນທີ່ສົ່ງໃຫ້ຕົວຟັງ
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Menu name: "   & sArgs(0) & Chr(13) & _
               "Menu item: "   & sArgs(1) & Chr(13) & _
               "Item ID: "     & sArgs(2) & Chr(13) & _
               "Item status: " & sArgs(3)
    End Sub
  

ດັ່ງທີ່ສະແດງໃນຕົວຢ່າງຂ້າງເທິງ, ລາຍການເມນູທີ່ເຊື່ອມໂຍງກັບສະຄຣິບຈະໄດ້ຮັບອາກິວເມັນຂໍ້ຄວາມທີ່ແຍກດ້ວຍຈຸດຈຳ ເຊິ່ງມີຄ່າດັ່ງນີ້:

ໃນ Python

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


    from scriptforge import CreateScriptService
    
    def create_menu(args=None):
        oDoc = CreateScriptService("Document")
        oMenu = oDoc.CreateMenu("My Menu")
        oMenu.AddItem("Item A", command="About")
        oMenu.AddItem("Item B", script="vnd.sun.star.script:my_macros.py$item_b_listener?language=Python&location=user")
        oMenu.Dispose()
  

    def item_b_listener(args):
        bas = CreateScriptService("Basic")
        s_args = args.split(",")
        msg = f"Menu name: {s_args[0]}\n"
        msg += f"Menu item: {s_args[1]}\n"
        msg += f"Item ID: {s_args[2]}\n"
        msg += f"Item status: {s_args[3]}"
        bas.MsgBox(msg)
  

ຄຸນສົມບັດ

ຊື່

ອ່ານຢ່າງດຽວ

ປະເພດ

ຄຳອະທິບາຍ

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
  

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


    oMenu.AddItem("Item A")
    oMenu.AddItem("Item B>Item B.1")
    oMenu.AddItem("Item B>Item B.2")
    oMenu.AddItem("---")
    oMenu.AddItem("Item C>Item C.1>Item C.1.1")
    oMenu.AddItem("Item C>Item C.1>Item C.1.2")
    oMenu.AddItem("Item C>Item C.2>Item C.2.1")
    oMenu.AddItem("Item C>Item C.2>Item C.2.2")
    oMenu.AddItem("Item C>Item C.2>---")
    oMenu.AddItem("Item C>Item C.2>Item C.2.3")
    oMenu.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")
    
ໄອຄອນ ບັນທຶກ

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


ວິທີການ

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

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

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

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

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

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

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

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

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

command: ຊື່ຂອງຄຳສັ່ງ UNO ໂດຍບໍ່ມີຄຳນຳໜ້າ .uno:.

script: URI ສຳລັບສະຄຣິບ Basic ຫຼື Python ທີ່ຈະເຮັດວຽກເມື່ອຄລິກລາຍການ.

ໄອຄອນ ບັນທຶກ

ອາກິວເມັນ command ແລະ script ບໍ່ສາມາດໃຊ້ພ້ອມກັນໄດ້, ດັ່ງນັ້ນຈຶ່ງຕັ້ງໄດ້ພຽງຢ່າງດຽວສຳລັບແຕ່ລະລາຍການເມນູ.


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

ອ່ານ ຂໍ້ກຳນົດສະເພາະຂອງ URI ສຳລັບໂຄງຮ່າງການຂຽນສະຄຣິບ ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບໄວຍາກອນ URI ທີ່ໃຊ້ໃນອາຄິວເມັນ script.


ຕົວຢ່າງ:

ໃນ Basic

      ' ລາຍການເມນູທີ່ເຊື່ອມໂຍງກັບຄຳສັ່ງ .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' ລັນສະຄຣິບ Basic Standard.Module1.MyListener ທີ່ເກັບໄວ້ໃນເອກະສານ
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' ລັນສະຄຣິບ Python MyListener ທີ່ຕັ້ງຢູ່ໃນໄຟລ໌ myScripts.py ໃນໂຟນເດີສະຄຣິບຜູ້ໃຊ້
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
ໃນ Python

      oMenu.AddCheckBox("Item A", status=True, tooltip="Paste values", command="Paste")
      oMenu.AddCheckBox("Item B", status=False, script="vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      oMenu.AddCheckBox("Item C", Status=True, Script="vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    

AddItem

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

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

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

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

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

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

command: ຊື່ຂອງຄຳສັ່ງ UNO ໂດຍບໍ່ມີຄຳນຳໜ້າ .uno:.

script: URI ສຳລັບສະຄຣິບ Basic ຫຼື Python ທີ່ຈະເຮັດວຽກເມື່ອຄລິກລາຍການ.

ໄອຄອນ ບັນທຶກ

ອາກິວເມັນ command ແລະ script ບໍ່ສາມາດໃຊ້ພ້ອມກັນໄດ້, ດັ່ງນັ້ນຈຶ່ງຕັ້ງໄດ້ພຽງຢ່າງດຽວສຳລັບແຕ່ລະລາຍການເມນູ.


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

ອ່ານ ຂໍ້ກຳນົດສະເພາະຂອງ URI ສຳລັບໂຄງຮ່າງການຂຽນສະຄຣິບ ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບໄວຍາກອນ URI ທີ່ໃຊ້ໃນອາຄິວເມັນ script.


ຕົວຢ່າງ:

ໃນ Basic

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

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

AddRadioButton

ແຊກປຸ່ມເລືອກ (radio button) ໃນເມນູ. ສົ່ງຄືນຄ່າຕົວເລກທີ່ລະບຸລາຍການທີ່ແຊກເຂົ້າໄປ.

ໄວຍາກອນ:

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

ພາຣາມິເຕີ:

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

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

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

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

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

command: ຊື່ຂອງຄຳສັ່ງ UNO ໂດຍບໍ່ມີຄຳນຳໜ້າ .uno:.

script: URI ສຳລັບສະຄຣິບ Basic ຫຼື Python ທີ່ຈະເຮັດວຽກເມື່ອຄລິກລາຍການ.

ໄອຄອນ ບັນທຶກ

ອາກິວເມັນ command ແລະ script ບໍ່ສາມາດໃຊ້ພ້ອມກັນໄດ້, ດັ່ງນັ້ນຈຶ່ງຕັ້ງໄດ້ພຽງຢ່າງດຽວສຳລັບແຕ່ລະລາຍການເມນູ.


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

ອ່ານ ຂໍ້ກຳນົດສະເພາະຂອງ URI ສຳລັບໂຄງຮ່າງການຂຽນສະຄຣິບ ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບໄວຍາກອນ URI ທີ່ໃຊ້ໃນອາຄິວເມັນ script.


ຕົວຢ່າງ:

ໃນ Basic

      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
ໃນ Python

      oMenu.AddRadioButton("Item A", name="A", status=True)
    
ໄອຄອນ ຄຳເຕືອນ

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


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

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