IBM Lotus Symphony
|
يتم تكوين نسخة Listener.
تقوم العديد من واجهات تعامل Uno بالسماح لك بتسجيل Listeners في واجهة تعامل Listener خاصة. يسمح لك هذا بعملية Listen لأحداث معينة واستدعاء طريقة Listener المناسبة. تقوم وظيفة CreateUnoListener بانتظار واجهة تعامل Listener التي تم استدعاءها ثم تقوم بامرار عنصر لواجهة التعامل يتم دعمه من خلال واجهة التعامل. عندئذ سيتم امرار العنصر الى الطريقة لتسجيل Listener.
oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )
المثال التالي يعتمد على عنصر Basic library object.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
تتطلب طريقة CreateUnoListener معاملين. الأول عبارة عن بادئة ويتم شرحه بالتفصيل فيما يلي. المعامل الثاني اسم مصنف بالكامل لواجهة تعامل Listener التي تريد استخدامها.
يجب عندئذ اضافة Listener لعنصر Broadcaster Object. يتم تنفيذ ذلك من خلال استدعاء الطريقة المناسبة لاضافة Listener. هذه الطرق تتبع دائما النموذج "addFooListener"، حيث يكون "Foo" هو Listener Interface Type، بدون 'X'. في هذا المثال، يتم استدعاء طريقة addContainerListener لتسجيل XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 must exist!
oLib.addContainerListener( oListener ) ' Register the listener
تم الآن تسجيل Listener. عند حدوث حدث، يقوم Listener المناظر باستدعاء الطريقة المناسبة من واجهة تعامل com.sun.star.container.XContainerListener Interface.
تقوم البادئة باستدعاء Listeners مسجلين من Basic-subroutines. يقوم النظام Basic run-time system بالبحث عن Basic-subroutines أو functions التي لها الاسم "PrefixListenerMethode" ويقوم باستدعاءهم عند ايجادهم. خلاف ذلك، يحدث خطأ run-time.
في هذا المثال، تستخدم واجهة التعامل Listener-Interface الطرق التالية:
disposing:
Listener base interface (com.sun.star.lang.XEventListener): واجهة التعامل الأساسية لكل واجهات تعامل Listener Interfaces
elementInserted:
Method of the com.sun.star.container.XContainerListener interface
elementRemoved:
Method of the com.sun.star.container.XContainerListener interface
elementReplaced:
Method of the com.sun.star.container.XContainerListener interface
في هذا المثال، تكون البادئة هي ContListener_. لذلك يجب تجهيز subroutines التالية في Basic:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
نوع event structure type يحتوي على معلومات عن حدث يوجد لكل أنواع Listener. عند استدعاء Listener method، يتم امرار نسخة من هذا الحدث للطريقة كمعامل. يمكن أن تقوم أيضا طرق Basic Listener methods باستدعاء عناصر هذه الأحداث، وذلك طالما تم امرار المعامل المناسب في Sub declaration. على سبيل المثال:
Sub ContListener_disposing( oEvent )
MsgBox "disposing"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementInserted( oEvent )
MsgBox "elementInserted"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementRemoved( oEvent )
MsgBox "elementRemoved"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementReplaced( oEvent )
MsgBox "elementReplaced"
MsgBox oEvent.Dbg_Properties
End Sub
لا يجب أن تقوم بتضمين المعامل لعنصر حدث اذا كان العنصر غير مستخدم:
' Minimal implementation of Sub disposing
Sub ContListener_disposing
End Sub
![]() |
يجب أن يتم تجهيز طرق عنصر الانصات دائما لتفادي أخطاء تشغيل Basic. |