ຟັງຊັນ 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:

ທຸກໆອິນເຕີເຟສ 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
ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!

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