أول شيئ , ما هي اداة ال Active X ؟اداة الاكتيف اكس هي عبارة عن اداة مثل اي اداة من ادوات
Visual Basic الشائعة : مربع النص , ليبل , كوماند .....الخ.
اداة الاكتيف اكس يمكنك وضعها في اي برنامج مصمم بالفيجوال ييسك .
اداة الاكتيف اكس تعمل على توفير الجهد حيث انك بواسطتها لا تضطر الى كتابة الكود مرات عديدة في البرنامج مما يختصر لك الكود ايضا.
كيف يمكنك عمل اداة Active X ؟في هذه المادة الدراسية سوف تتعلم كيف تعمل اداة اكتيف اكس بسيطة تقوم باظهار صندوق رسالة عندما المستخدم يضغط عليها , طبعا هذه اداة بسيطة وغير مفيدة في الحياة العملية ولكنها سوف تعلمك كيف تبرمج اداة اكتيف اكس.
بداية العملأختر من قائمة الفيجوال
File->
New Project كما هو موضح :

اختر
Active X Control ومن ثم اضعط
OK كما هو موضح :

فورم جديد سوف يظهر بدون شريط عنوان كما هو موضح :

اختر من القائمة
Project->
Project1 Properties. كما هو موضح :

يمكنك تغيير اسم الاداة تبعتك بتغيير ال
Project Name الى اي اسم كما هو موضح :

هذا الاسم ما سوف تشاهده عند الانتهاء من عمل الاداة انا مثلا سميت الاداة
MyFirstOcx كما هو موضح :

الان اضغط الزر الايمن للماوس واختر
Properties من القائمة كما هو موضح :

خاصية الاسم للفورم تكون
UserControl1 غيرها الى
My Control كما هو موضح :

هذا الاسم سوف يظهر للمستخدم عند اختيار الاداة : وهكذا .
My Control1 , My Control2 ….. .
بداية برمجة الاداة اضف زر امر ( (
Command Button الى الفورم وسميه
Command1 كما هو موضح :

هذا ما سوف تظهر عليه اداتك.
اداتك هي عبارة عن الفورم وما عليه ولكن نحن لا نريد ان يظهر الفورم ما نريد هو الكوماند فقط
لذلك اعمل
resize للفورم كي يتناسب مع الكوماند ولا يظهر منه شيئ كما هو مبين :

الان الاداة سوف تظهر على شكل زر.
ولكنها ليست زر وانما هي فورم وبداخله زر.
ولكن ماذا لو قام المستخدم بعمل
Resize للاداة في وقت التصميم (مثل اداة ال
Command Button)؟
لحل هذه المشكلة وعندما يقوم المستخدم بعمل
Resize للاداة يجب علينا ان نجعل الفورم يتناسب مع الزر الذي وضعناه.
ضع هذا الكود لجعل المستخدم يقوم ب
resize الزر بدلا من الفورم :
كود
Private Sub UserControl_Resize()
Command1.Width = UserControl.Width
Command1.Height = UserControl.Height
End Sub
To be continuedانجاز عملية خصائص الاداةكل اداة لها خصائص معينة مثل :
Name , Left , Index , Tag ….etc..
ولكن اداتنا سوف تحتوي هذه الخصائص افتراضيا ولكننا نريد ان نضيف خصائص لا تاتي افتراضية مثل Text وهو عبارة عن نص الرسالة التي سوف تظهرعندما يقوم المستخدم بالضغط على الاداة.
'انجاز خاصية ال Text property عند قرائة خاصية النص (
Reading Text Property): تحدث هذه الحالة عندما نريد ان نقرا الخاصية التي وضعها المستخدم.
على سبيل المثال عندما يضع المستخدم القيمة "
Abo Sabreen" فان نتيجة القراءة سوف تعيد "
Abo Sabreen" وهذا ما نريده بالضبط.
الان ضع الكود التالي في الفورم :
كود
Dim TextVariable As String
ال
TextVariable هو عبارة عن المتغير الذي يحمل قيمة خاصية النص(
Text Property).
الان ضع الكود التالي داخل الفورم ايضا :
كود
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
TextVariable = PropBag.ReadProperty("Text", "There is no message")
End Sub
الكود السابق يقرأ قيمة خاصية النص (
Text Property) اذا كانت فارغة فانه يعيد القيمة الافتراضية وهي
"
There is no message" وهكذا نكون قد استدعينا قرائة خاصية النص (
Reading Text Property).
الان يجب ان ننجز طريقة القرائة , ضع الكود التالي :
كود
Public Property Get Text() As String
Text = TextVariable
End Property
قيمة خاصية النص (
Text Property Value) سوف تعيد قيمة نص ولذلك وضعنا
As String.
انجاز اسلوب الكتابة ان ضرورة الكتابة تحدث عندما نريد ان نقوم بتحديث المتغير الذي يحمل لنا قيمة الخاصية (
TextVariable )
ولعمل ذلك قم بوضع الكود التالي داخل الفورم:
كود
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("Text", TextVariable, "There is no message)
End Sub
الكود في الأعلى يقوم بكتابة قيمة الخاصية الجديدة الى المتغير (
TextVariable) ويقوم يتحديث خاصية النص.
اذا كانت الكتابة للمتغير (
TextVariable) تعيد لا شيئ فضع قيمة خاصية النص الى "
There is no message".
وبهذا نكون قد انجزنا عملية اسلوب الكتابة.
ضع الكود التالي داخل الفورم :
كود
Public Property Let Text(ByVal New_Text As String)
TextVariable = New_Text
PropertyChanged "Text"
End Property
القيمة الجديدة لخاصية النص مررت بالمعامل (
New_Text ) طبعا هذا المعامل هو عبارة عن
String وذلك لان خاصية النص (
Text Property) هي عبارة عن
String.
وضعنا هنا المتغير ( Text Variable) ليحمل القيمة الجديدة لخاصية النص (
Text Property) وفي السطر الثاني من الكود تم الاعلان ان خاصية النص قد تغيرت.
انجاز الاحداث( Events)
عند نقر المستخدم على الاداة فانه يظهر صندوق رسالة في هذه العملية نحتاج الى حدثين :
1. Keypress.
2. .Click
اولا يجب علينا ان نقوم بتعريفهم ضع الكود التالي داخل الفورم :
كود
Event Click()
Event KeyPress(KeyAscii As Integer)
انجاز علمية النقر ( Click Event)نحن نريد ان يظهر صندوق رسالة وتنفيذ الكود الذي وضعه المستخدم عندما يقوم المستخدم بالنقر على الاداة لذلك ضع الكود التالي :
كود
Private Sub Command1_Click()
MsgBox (TextVariable)
RaiseEvent Click
End Sub
حفظ وتشغيل الاداة لحفظ الاداة اذهب الى (
File->
Save Project) كم هو موضح في الصورة :

الان لعمل الاداة على شكل
ocx اذهب الى
File->
Make MyFirstOCX.ocx كما هو موضح :
وبهذا تكون الاداة قد انشئت وسجلت داخل نظامك.
ولاستدعاء الاداة من داخل مشروعك اذهب الى
Project->
Components ضع صح عند
MyFirstOcx كما هو موضح:


والان سوف تشاهد الاداة في صندوق الادوات (
ToolBox) :

اضف الاداة الى الفورم وغير حجمها الى القياس الذي تريده وضع كلمة "
Abo Sabreen" في Text وشغل البرنامج واضغط على الاداة سوف يظهر صندوق رسالة .
اتمنى ان اكون قد افدتكم في نقل هذا الدرس.