ເນື້ອໃນ

# ຟັງຊັນ CreateUnoListener

ສ້າງອິນສະແຕນຊ໌ຂອງ Listener.

ວັດຖຸ Uno ຫຼາຍຢ່າງຊ່ວຍໃຫ້ທ່ານລົງທະບຽນ listeners ດ້ວຍອິນເຕີເຟສ listener ສະເພາະ. ສິ່ງນີ້ຊ່ວຍໃຫ້ສາມາດຕິດຕາມເຫດການສະເພາະ ແລະ ເອີ້ນໃຊ້ເມທອດ listener ທີ່ເໝາະສົມ. ຟັງຊັນ CreateUnoListener ຈະກຳນົດອິນເຕີເຟສ listener ທີ່ກ່ຽວຂ້ອງກັບວັດຖຸ UNO. ຫຼັງຈາກນັ້ນ ອິນເຕີເຟສ listener ຈະຖືກຜູກມັດກັບວັດຖຸທີ່ກ່ຽວຂ້ອງ.

### ໄວຍາກອນ:

        CreateUnoListener( Prefix As String, Typename As String) As Object

### ພາຣາມິເຕີ:

ຊື່ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | ---
ຄຳນຳໜ້າ (Prefix) | String | ຄຳນຳໜ້າຂໍ້ຄວາມທີ່ໃຊ້ໃນ subroutine ຂອງ BASIC ທີ່ຈັດການກັບເຫດການ.
Typename | String | ຊື່ອິນເຕີເຟສ UNO listener ທີ່ລະບຸຢ່າງສົມບູນ.

### ປະເພດຄ່າທີ່ສົ່ງກັບ:

Object. ບໍລິການ UNO ທີ່ກົງກັບຊື່ອິນເຕີເຟສ listener Typename, ຖ້າບໍ່ດັ່ງນັ້ນຈະມີຄ່າເປັນ Null.

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ຕິດຕາມເຫດການທີ່ເກີດຂຶ້ນກັບວັດຖຸຫໍສະໝຸດ BASIC.

    Dim oListener As Object
    oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )

ເມທອດ CreateUnoListener ຕ້ອງການສອງພາລາມິເຕີ. ອັນທຳອິດແມ່ນ ຄຳນຳໜ້າ ເຊິ່ງຈະອະທິບາຍລະອຽດລຸ່ມນີ້. ພາລາມິເຕີທີສອງ Typename ແມ່ນຊື່ເຕັມຂອງອິນເຕີເຟສ listener.

ທຸກໆ listener ຕ້ອງໄດ້ຮັບການລົງທະບຽນກັບຄຸນສົມບັດ broadcaster ຂອງ LibreOffice. ສິ່ງນີ້ເຮັດໄດ້ໂດຍການຜູກມັດແຕ່ລະ listener ກັບວັດຖຸທີ່ກ່ຽວຂ້ອງ. ເມທອດການຜູກມັດຈະໃຊ້ຮູບແບບ 'addFooListener' ເສີມ, ໂດຍທີ່ 'Foo' ແມ່ນປະເພດວັດຖຸຂອງອິນເຕີເຟສ listener ທີ່ບໍ່ມີ 'X'. ໃນຕົວຢ່າງນີ້, ເມທອດ addContainerListener ຖືກເອີ້ນເພື່ອລົງທະບຽນ XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Library1 ຕ້ອງມີຢູ່!
    oLib.addContainerListener( oListener ) ' ລົງທະບຽນ listener

ດຽວນີ້ listener ໄດ້ຖືກລົງທະບຽນແລ້ວ. ເມື່ອມີເຫດການເກີດຂຶ້ນ, listener ທີ່ເຮັດວຽກຢູ່ຈະເອີ້ນໃຊ້ເມທອດທີ່ເໝາະສົມທີ່ກຳນົດໄວ້ໃນອິນເຕີເຟສ com.sun.star.container.XContainerListener.

subroutines ຂອງ BASIC ທີ່ລົງທະບຽນແບບອີງຕາມເຫດການ (Event-driven) ຈຳເປັນຕ້ອງໃຊ້ ຄຳນຳໜ້າ ທີ່ກຳນົດໄວ້. ລະບົບ BASIC ຈະຄົ້ນຫາ subroutines ຫຼື ຟັງຊັນທີ່ມີຊື່ວ່າ 'ຄຳນຳໜ້າ+ListenerMethod' ແລະ ເອີນໃຊ້ພວກມັນເມື່ອພົບ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຈະເກີດຂໍ້ຜິດພາດໃນເວລາດຳເນີນການ.

ໃນຕົວຢ່າງນີ້, ອິນເຕີເຟສ com.sun.star.container.XContainerListener ໄດ້ກຳນົດເມທອດຕໍ່ໄປນີ້:

ເມທອດ | ຄຳອະທິບາຍ
--- | ---
disposing | com.sun.star.lang.XEventListener ອິນເຕີເຟສພື້ນຖານສຳລັບທຸກໆ Listener Interface
elementInserted | ເມທອດຂອງອິນເຕີເຟສ com.sun.star.container.XContainerListener
elementRemoved | ເມທອດຂອງອິນເຕີເຟສ com.sun.star.container.XContainerListener
elementReplaced | ເມທອດຂອງອິນເຕີເຟສ com.sun.star.container.XContainerListener

'ContListener_' ທີ່ໃຊ້ໃນຕົວຢ່າງນີ້ໝາຍຄວາມວ່າ subroutine ຕໍ່ໄປນີ້ຕ້ອງຖືກສ້າງຂຶ້ນໃນ BASIC:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

ທຸກໆອິນເຕີເຟສ listener ຈະກຳນົດຊື່ເຫດການທີ່ຖືກຄວບຄຸມເຊິ່ງກ່ຽວຂ້ອງກັບວັດຖຸ Uno. ເມື່ອມີເຫດການເກີດຂຶ້ນ, ມັນຈະຖືກສົ່ງໄປຫາເມທອດເປັນພາລາມິເຕີ. ເມທອດເຫດການຂອງ BASIC ຍັງສາມາດເອີ້ນໃຊ້ເຊິ່ງກັນແລະກັນໄດ້ ຕາບໃດທີ່ມີການສົ່ງພາລາມິເຕີທີ່ເໝາະສົມໃນການປະກາດ Sub.

    Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
        MsgBox "disposing"
    End Sub

    Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox oEvent.Source.' "elementInserted"
    End Sub

    Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementRemoved"
    End Sub

    Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementReplaced"
    End Sub

ບໍ່ຈຳເປັນຕ້ອງລວມພາລາມິເຕີວັດຖຸເຫດການເມື່ອບໍ່ໄດ້ໃຊ້ງານ:

    ' ການສ້າງ Sub disposing ແບບພື້ນຖານທີ່ສຸດ
    Sub ContListener_disposing
    End Sub

ເມທອດ Listener ຕ້ອງຖືກສ້າງຂຶ້ນ ສະເໝີ ເພື່ອຫຼີກເວັ້ນຂໍ້ຜິດພາດໃນເວລາດຳເນີນການຂອງ BASIC.

ໃຊ້ຄອນໂຊລຫໍສະໝຸດ ScriptForge ເມື່ອເຂົ້າເຖິງ BASIC IDE ບໍ່ໄດ້ງ່າຍ, ເຊັ່ນໃນລະຫວ່າງການປະມວນຜົນເຫດການ. ໃຊ້ເມທອດ DebugPrint ເພື່ອເພີ່ມຂໍ້ມູນທີ່ກ່ຽວຂ້ອງລົງໃນຄອນໂຊລ. ລາຍການໃນຄອນໂຊລສາມາດບັນທຶກລົງໄຟລ໌ຂໍ້ຄວາມ ຫຼື ສະແດງຜົນໃນໜ້າຕ່າງໄດອະລັອກໄດ້. ຫຼື ໃຊ້ໂມດູນ Trace ຂອງຫໍສະໝຸດ Access2Base ເປັນທາງເລືອກ.

       Sub SF_Trace
          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          svc = CreateScriptService("ScriptForge.Exception")
          svc.Console modal:=False
          svc.DebugPrint("Lorem", "Ipsum", "...")
       End Sub ' SF_Trace

       Sub A2B_Trace
          GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
          Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
          Access2Base.Trace.TraceConsole()
       End Sub ' A2B_Trace

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ການສ້າງຕົວຮັບຟັງເຫດການ

ການເຊື່ອມໂຍງເຫດການກັບວັດຖຸ

ເບິ່ງເພີ່ມເຕີມ ເຫດການເອກະສານ, ເຫດການຟອມ.

ການສ້າງ Dialog Handler

ການຮັບຟັງເຫດການຂອງເອກະສານ

ອັອບເຈັກ, ຟັງຊັນ ແລະ ບໍລິການຂອງ UNO

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