CreateUnoListener Function
লিসেনারের দৃষ্টান্ত তৈরি করা হয়।
অনেক Uno ইন্টারফেস একটি বিশেষ লিসেনার ইন্টারফেসে লিসেনার নিন্ধন করতে দেয়। এটি আপনাকে সুনির্দিষ্ট ইভেন্ট শুনতে অনুমোদন দেয় এবং উপযুল্ত লিসেনার পদ্ধতি কল করে থাকে। CreateUnoListener ফাংশনটি কল করা লিসেনার ইন্টারফেসের জন্য অপেক্ষা করে থাকে এবং তারপর ইন্টারফেসে একটি বস্তু পাস করে যা ইন্টারফেস সমর্থন। বস্তুটি তারপর লিসেনার নিবন্ধনের পদ্ধতিতে পাস করা হয়।
সিনট্যাক্স:
oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )
উদাহরণ:
নিচের উদাহরণসমূহ বেসিক লাইব্রেরি ভিত্তিক ।
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
CreateUnoListener মেথডের দুইটি প্যারামিটার প্রয়োজন। প্রথমটি একটি প্রিফিক্স এবং নিচে এর বিশদ বর্ণনা রয়েছে। দ্বিতীয় প্যারামিটারটি লিসেনার ইন্টারফেসের সম্পূর্ণ উপযুক্ত নাম যা আপনি ব্যবহার করতে চান।
ব্রডকাস্ট বস্তুতে অবশ্যই লিসেনারটি যুক্ত করতে হবে। এটি সম্পন্ন করতে একটি লিসেনার যুক্ত করতে উপযুক্ত পদ্ধতি কল করা করা হয়। এই পদ্ধতিসমূহ সবসময় "addFooListener" প্যাটার্নটি অনুসরণ করে থাকে, যেখানে "Foo" হলো 'X' ব্যতীত লিসেনার ইন্টারফেস ধরন। এই উদাহরণে, addContainerListener পদ্ধতি XContainerListener নিবন্ধনের জন্য কল করা হয়:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 must exist!
oLib.addContainerListener( oListener ) ' Register the listener
লিসেনার নিবন্ধিত। যখন একটি ইভেন্ট সংঘটিত হয়, সংশ্লিষ্ট লিসেনার com.sun.star.container.XContainerListener ইন্টারফেস থেকে উপযুক্ত মেথডটি কল করে।
বেসিক-সাবরুটিন থেকে নিবন্ধিত লিসেনারকে প্রিফিক্সের সাহায্যে কল করা হয়। বেসিক রান টাইম পদ্ধতিটি বেসিক-সাবরুটিন অথবা ফাংশনের জন্য অনুসন্ধান করে থাকে যার নাম "PrefixListenerMethode" এবং খুঁজে পাওয়া গেলে এদেরকে কল করা হয়। অন্যথায়, একটি রান টাইম ত্রুটি সংঘটিত হয়।
এই উদাহরণে, লিসেনার-ইন্টারফেস নিচের মেথডটি ব্যবহার করে:
-
সম্পন্ন করা হচ্ছে:
-
লিসেনার বেস ইন্টারফেস (com.sun.star.lang.XEventListener): সব লিসেনার ইন্টারফেসের জন্য বেস ইন্টারফেস
-
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_। নিচের সাবরুটিনটি অবশ্যই বেসিকে বাস্তবায়ন করতে হবে:
-
ContListener_disposing
-
ContListener_elementInserted
-
ContListener_elementRemoved
-
ContListener_elementReplaced
একটি ইভেন্টের গঠনের টাইপ যা প্রতিটি লিসেনার টাইপের জন্য বিদ্যমান ইভেন্ট সম্পর্কিত তথ্য ধারণ করে। যখন একটি লিসেনার মেথড কল করা হয়, এই ইভেন্টের একটি দৃষ্টান্ত প্যারামিটার হিসেবে একটি মেথডে প্রেরিত হয়। মৌলিক লিসেনার মেথড এই ইভেন্ট বস্তুকে কল করতে পারে, যতক্ষন পর্যন্ত না উপযুক্ত প্যারামিটার Sub ডিক্লেয়ারেশনে পাস করা না হয়। যেমন:
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
বেসিক রান-টাইম ত্রুটি অগ্রাহ্য করতে লিসেনার মেথডের অবশ্যই সবসময় বাস্তবায়ন করতে হবে।