الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إنشاء ActiveX Control

مغلق
بدأه عبد الله فتحي في 8 مايو 2005 · 19 رد · 11,463 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

الإخوة الأعضاء إليكم هذه الدروس في برمجة الـ ActiveX Control والتي كانت موجودة في منتدى فيجول بيسيك للعرب سابقاً، وهي للأخ ( fawaz2000 ) ونتمنى لكم الفائدة

الدرس الأول

بسم الله الرحمن الرحيم

إخواني الكرام نظرا لكثر الأسئلة في المنتدى حول كيفية إنشاء ملفات Ocx لذلك سوف أقوم بوضع سلسة من التعليمات التي أعرفها حول برمجة كائنات ocx وأتمنا من جميع الأخوة الكرام من من لديهم خبرة في برمجه هذه الكائنات المشاركة معي في طرح هذا الموضوع بأسلوب علمي سهل وشيق يصل إلى المبتدئ بسهولة ويسر .

في لبداية سوف نتعرف على هذه الكائنات والوظيفة التي تقوم بها وفق مجال سلسة الدروس التي سوف أقوم بوضعها أن شاء الله ، وستكون الدروس أن شاء الله حول برمجة الكائنات بالتحديد الأزرار .

تقنية OCX - وبداية ظهور Activex :

إن ثورة التقنيات لـ Visual basic Microsoft بدأت مع الإصدار الأول وأخذت تنموا بالتدريج حتى كانت الثورة الثانية في الإصدار الرابع حيث في هذا الإصدار تم تغير محركEngine (وهوا الملف الذي يدعم البرامج أثناء تشغيلها ويسمى VVBRUN والذي كان مبني على تقنية 16-Bit ويعرف باسم Ruby والذي قام بابتكاره (الآن كوبر ) الأب الروحي لـ Visual basic) وفي بداية ظهور تقنية 32-Bit (Windows95 & WindowsNt) قامت Microsoft ببناء محرك جديد أسمته Object Basic والذي يعرف الآن باسم VBA وكان أهم ما في هذا المحرك هوا دعمه لتقنية COM .

وكان مع الإصدار الرابع على مطوري Visual basic دعم أدوات التحكم الخاصة Custom Controls ولم تكن VBX صالحة لذلك لا شكلاً ولا مضمونا , وكان البديل لذلك هوا دعم هذه الأدوات عن طريق تقينه OLE 2 ولكن لم تفي تقنية OLE 2 باحتياجات Visual basic لذلك تم تطوير OLE في صورة ابتكار أداة تحكم قائمة على OLE سميت (ocx)

ومع تتطور أنظمة التشغيل التي تعمل على تقنية 32-Bit وانتشارها , ومع ظهور لغات برمجة الانترنت المختلفة , قامت Microsoft بتغير هندسة تقنية ocx لتصبح صالحة للاستخدام على الشبكات وبخاصة شبكة الانترنت وقد قامت الشركة أيضاُ بتغير اسم التقنية من OLE والتي بنيت عليها ocx إلىActiveX .

ومن هنا بدأت الثورة الحقيقة لمبرمجين Visual Basic وهي إتاحة تطوير الأدوات Activex لتكون أسهل الطرق لإنتاج كائنات جديدة أو برمجة صفحات الويب بواسطة هذه التقنية .

وظيفة Activex :

سنتحدث كما ذكرت سابقاً عن طرق كيفية إنتاج كائنات ، واقصد بالكائن أداه جديدة سنقوم ببرمجتها ونقوم بالتعامل معها كتلك التي هي موجودة في صندوق الأدوات مثل زر الأمر Command Button أو أداة النص Label وغيرها من الكائنات(الأدوات) .

وحينما نتحدث عن إنتاج كائن جديد سوف بلا شك ستظهر لهذا الكائن خصائص Properties خاصة به , ووضائف (طرق) Methods , و أحداث Events معينة لهذا الكائن الجديد , لذلك سوف نقوم ببرمجة هذه الأحداث والطرق والخصائص كي يتمكن من سيستخدم هذا الكائن من المبرمجين التحكم بالكائن حسب الرغبة .

وهنا نحن في هذه الحالة سوف نطلق على أنفسنا مصممين الأداة بينما من سيستخدمها هوا المبرمج ولكي يتبين الأمر سوف أأخذ على سبيل المثال زر الأمر Command Button الموجود في صندوق الأدوات , نحن عندما نقوم بوضع هذا الزر على الـForm لنا حرية التحكم بتغير الحجم أو اسم الزر أو عنوانه وهذه العمليات تتم عن طريق الخصائص الموجودة للزر والتي قام بتصميمها مبرمجو الفيجول بيسك وتركوا للمبرمج حرية التحكم به عن طريق الخصائص . أيضاُ لجعل هذا الزر ينفذ عمل معين حسب رغبة المبرمج لذلك قام مصمم الأداة بوضع أحداث معينة لهذا الزر وهذه الأحداث : منها من هوا المسئول عن تنفيذ عمل معين إذا قام المستخدم بالنقر على الزر أو ضغط أحد المفاتيح .... وغيرها من الأحداث والتي سوف نتناول أن شاء الله الكثير من التفاصيل عنها في الدروس القادمة في قسم برمجة الأحداث .

بعد أن قمنا بتوضيح الفرق بين المبرمج والمصمم سوف ننطلق في بحر كائنات Activex كمصممين , وباعتقادي أن المصمم هوا أعلى درجة من المبرمج لأن المصمم هوا الذي سيقوم بتقديم كائن جديد للمبرمج ليقوم باستخدامه وفق الشروط التي قام بوضعها المبرمج على الأداة وأقصد بالشروط هي طرق التعامل مع الكائن .

الشروط التي يجب توافرها في المصمم :

هناك بعض الاستحباب لمن أراد أن يتقن هذه التقنيات والتي جمعتها حسب اعتقادي على شكل نقاط كما يلي :

1 - أن يكون ملماُ بأوامر ومصطلحات البرمجة وفاهم عمل الخصائص والوظائف العامة للكائنات لان المصمم في هذه الحالة هوا الذي سيقوم ببرمجة خصائص جديدة وطرق وأحداث لذلك يجب أن يعرف الغرض من هذه العمليات .

2- أن يجيد التعامل مع الإجراءات والدوال والخوارزميات .

3- معرفة التعامل مع الوحدات النمطية Module و الفئات Class , على سبيل الاستحباب لإنتاج كائن ذو كفاءة عالية .

4- أن تتوفر لدية الخبرة في التعامل مع دوال API كي يتم بناء كائن أقل هدرا لذاكرة الحاسوب وأكثر كفاءة في التعامل .

ولا أقصد أن من لم يجيد هذه الشروط هوا من يستطيع عمل هذه الكائنات وإنما هوا على سبيل ذكر من أراد الخبرة في التعامل مع هذه التقنية , ويكفي لبناء كائن بسيط فهم أساسيات معينة فقط ثم بعد ذلك يمكن لمن أراد التعمق مع هذه الأدوات أن يتحلى بهذه الشروط .

فإن كنت مهتما بها فلننطلق معاً لفهم أساسيات تصميم الكائنات ولننطلق من فئة المبرمجين إلى فئة المصممين.

في الدرس القادم إن شاء الله سوف نتعرف بشكل عملي كيفية عمل أدوات ocx , وبعد شرح الطرق سنقوم ببرمجة زر مشابه لأزرار برنامج Sub7 من الصفر باستخدام دوال Api .

ملاحظة : المصطلحات السابقة يمكنك البحث عنها في المنتدى أو أحد المراجع لفهم عمل تلك التقنيات فما يهمنا هوا كل ما يتعلق بكائنات ocx حتى لا يتشعب الموضوع.

الشرح والبرمجة باستخدام Microsoft Visual Basic 6 .

ani.gif
#2

السلام عليكم ورحمة الله وبركاته

الدرس الثاني :

سنتحدث في هذا الدرس عن كيفية التعامل مع Activex والتعرف على الخصائص الخاصة به والواجهة الخاصة بالتصميم :

طرق تصميم أدوات Activex :

تصميم يستخدم محليا:

أي تكون محتواه مع البرنامج الرئيسي وفي هذه الحالة لا يمكن أن يستخدمها أحد سوى المصمم لأنها تدمج مع الملف التنفيذي , للبرنامج .

تصميم مستقل :

وفي هذه الحالة يتم إنشائها لغرض الاستخدام العام حيث يتم تصريفها ككائن مستقل ذو امتداد (ocx) مثلاً (MyActivex.ocx) ولكي يتم استخدامها من قبل مبرمج أخر يجب أن يقوم باستدعائها أولا على البرنامج ثم يقوم بالاستخدام , ولكي يتم استدعائها قم بالضغط على الأزرار التالية Ctrl + t) ) بعد ظهور نافذة (Components)اختر استعراض (Browse.. ) ثم اختر الأداة التي أنشئت لتظهر لك في قائمة بها مجموعة من الكائنان من هنا نستطيع اختيارها , لتظهر في صندوق الأدوات كاده يستخدمها المبرمج في برنامجه .

تصميم أدوات Activex للاستخدام العام :

قم بفتح Microsoft Visual Basic في بداية التشغيل ستجد مجموعة من المشاريع اختر منها ActiveX Control بعد فتح المشروع لاحظ في نافذة متصفح المشاريع (Project Explorer)ظهور مجلد أسمة User Control يحوي على نافذة اسمها UserControl قم بالنظر إلى خصائص هذه النافذة , كذلك تعرف على الأحداث العامة لها . ولكي يتم تصريف هذه الأداة (ActiveX) إلى ملف ذو امتداد (ocx) اختر من ملف(File) -(Make Project ocx) بعد ذلك يمكن إحضارها إلى مشروعك كمستخدم لها بنفس الخطوات السابقة.

تصميم أدوات Activex للاستخدام المحلي :

وإن شاء الله سنقوم بالتصميم محلياً وذلك كي نتمكن من اختبار الكائن الجديد مباشرة من البرنامج الرئيسي حيث تظهر الأداة تلقائيان في صندوق الأدوات لنقوم بوضعها على الـForm دون الحاجة إلى تصريفها , وبعد أن ننجح في عملنا سوف نقوم بتصريف الكائن الجديد للاستخدام العام كما سيأتي لاحقاً .

البدء في مشروع يحتوي على كائن Activex :

سوف نبدأ الآن بالتعامل مع هذا الكائن تحت التصميم المحلي :

قم بفتح Visual Basic واختر مشروع من نوع (Standard EXE) بعد ذلك سنقوم بإضافة كائن ActiveX إلى المشروع كما يلي :

تعرفنا قبل قليل على أن النافذة الخاصة بالتصميم أسمها user Control سنقوم بإضافتها كما يلي :

من قائمة Project اختر --- Add User Control , بعد ذلك ستظهر لك نافذة اختر منها UserControl , بعد ذلك سوف يظهر في متصفح المشاريع مجلد جديد واسمه

User Control تحت مجلد Forms ويحوي النافذة التي سوف نتعامل معها والتي تحمل اسم UserControl1 .

ولان بعد أن تعرفنا على كيفية فتح مشروع لتصميم المحلي أو( الخاص) سنبدأ بالتعرف على كيفية وضع هذه الأداة على الـForm1

لعمل ذلك : قم بإغلاق نافذة User Control ثم توجه (قم بفتح) إلى نافذة الـForm1

انظر إلى صندوق الأدوات سوف تلاحظ ظهور كائن جديد يحمل نفس أيقونة نافذة user control قم بوضع هذا الكائن على النموذج (Form1) بطبيعة الحال لا يحتوي الكائن على أي شيء لأننا لم نقم بعد بتصميمه , فقط أنضر إلى الخصائص التي يحتويها الكائن وهذه الخصائص افتراضية وهي :

Name
Causesvalidation
DragIcon
DragMode
Height
HelpContextId
Index
Left
TabIndex
TabStop
Tag
ToolTipText
Top
Visible
WhatsThisHelpID
Width

تعتبر هذه الخصائص الافتراضية للكائن ثابتة:

أي كثير الاستخدام وترك حرية إضافة خصائص جديدة للكائن أو مماثلة للخصائص التي تتبع نافذة التصميم أي كأن تضيف خاصية BackColor والتي تتحكم بلون خلفية الزر وبطبيعة الحال خلفية الزر هي عبارة عن خلفية نافذة التصميم usercontrol1 لذلك سنحتاج أن نبرمج خاصية جدية معتمدة على خاصية نافذة التصميم BackColor كي تظهر مع الخصائص السابقة للكائن , حتى يتمكن المبرمج من تغير لون خلفية الكائن .

لذلك نستطيع تقسيم (برمجة) الخاصية إلى :

1- خاصية تتعلق بنافذة التصميمusercontrol1 مثل :

ForColor, BackColor, Font , Enable , FullColor .... وغيرها من الخصائص .

2- خاصية تتعلق بأداة أخرى تم وضعها في نافذة التصميم :

أولاً يجب أن أنوه أن نافذة التصميم(usercontrol1) شبيه بنافذة النموذج (Form) من حيث وضع الكائنات عليها مثل زر أمر أو صندوق نص وغيرها من الكائنات , غير أن نافذة Form تظهر خصائص الكائن (مثلاً Command) بشكل منفصل عن خصائصها . بينما نافذة التصميم UserControl تدمج خصائص الكائن الموضع بداخلها مع الخصائص الجديدة تحت اسم الكائن المصمم ، فمثلاً لو قمنا بوضع صندوق نص(TextBox) على نافذة التصميم UserControl ثم بعد ذلك أغلقنا نافذة التصميم وفتحنا نافذة الـForm سنلاحظ ظهور صندوق النص في الأداة الجديدة وعند النظر إلى الخصائص نلاحظ عدم وجود الخصائص المتعلقة بصندوق النص , وقد يحتاج المبرمج مثلاً أن يستخدم هذا الكائن المنشأ كصندوق يتم به وضع كلمة السر , لذلك نحتاج نحن المصممون أن نتيح هذه الخاصية للمبرمج ليستخدمها حسب الرغبة , لذلك سوف نقوم ببرمجة خاصية تحمل اسم PasswordChar ونضيفها مع الخصائص المذكورة سابقاً , وهذه الخاصية سوف تسند أو تعطي للخاصية PasswordChar التابعة لصندوق النص .

3- خاصية جديدة من إنتاج المصمم :

وهذا النوع يحدد وضيفة عمل هذه الخاصية المصمم(المبرمج) للكائن فمثلاً :

لو قمنا بعمل خوارزمية معينة لتشفير النص , هذا العمل يتطلب أن نظهر خاصية للمبرمج (مستخدم الكائن) جديدة تحمل قيم معينة مثلاً True أو False ونسمي هذه الخاصية مثلاً Notation , وبهذا العمل أعطينا المستخدم للكائن خاصية جديدة تتحكم بتشفير النص وجعلنا لمستخدم لكائن حرية الاختيار إما أن يشفر النص أولا . و سوف بالطبع تظهر هذه الخاصية الجديدة مع الخصائص المذكورة سابقاً .

بعد أن تعرفنا على الخصائص وتقسيمها سوف نواصل الحديث عن بقية متطلبات الكائن الجديد في الدرس القادم والذي سنتحدث فيه عن الأحداث , فائدتها , وكيفية فهم عملها وكيف تم عملها . ثم نبدأ خطوة خطوة بإنتاج خصائص للكائن ..... الخ .

سنقوم بوضع أول مثال على برمجة الخصائص : نفس صندوق النص المستخدم في برنامج Sub7 أرفقت صورة توضح شكل صندوق النص والزر الذي سنقوم ببرمجته .

لذلك أتمنا من الأخوة الكرام البحث عن البرنامج الإصدار الأخير حتى نتعرف مع بعض عن الخصائص والأحداث التي استخدمت في إنتاج الأزرار وصناديق النص . حيث سيكون الشرح منصب على كيفية عملها .

في هذا الدرس تعرفنا على نافذة التصميم UserControlوالفرق بين نافذة UserControl و نافذة Form , وأخذنا نضرة سريعة على الخصائص وكيف ظهورها على الكائن ومدى الحاجة لها .

هذا الدرس من اجتهادي فقد أخطاء وقد أصيب فأتمنا منكم العون على تصحيح الأخطاء

ودمتم برعاية الله وحفظة والسلام عليكم ورحمة الله وبركاته , وإلى درس قريب بإذن الله تعالي .

أخوكم : فواز الشمري

ani.gif
#3

بسم الله الرحمن الرحيم

شكراُ لكم إخواني : ويبدو ان قرائي هم من ذوي الخبرات :

فعذراُ منكم فقد أذكر أحيانا بعض المعلومات تكون قد مرت عليكم, ولكن فقط اذكرها مراعياً المبتدئين , الذين لم أرى لهم وجود, فتدريجياُ سأنتقل بالمعلومات إلى الأهمية فقط .

الدرس الثالث :

الأحداث

لكل كائن حدث وهذا الحدث مسئول عن عمل معين في لحظة معينة أي يقوم بتنفيذ مهمة (كود) في حال وقع علية حدث ما .

ولكي نستوعب الأمر جيداً سنأخذ مجوعة من الأحداث على سبيل التوضيح :

1- الحدث الأول KeyDown :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

End Sub

هذا الحدث هوا المسئول عن تنفيذ مهمة معينة في حال كان مفتاح من أزرار الكيبور مضغوط (أو مجموعة من المفاتيح)

وأجزاء هذا الحدث هي :

1 - KeyCode As Integer

يمثل شفرة مفتاح , مثل( VbKeyF1) (المفتاح) F1 أو vbKeyHome (المفتاحHome ) وغيرها من المفاتيح

يمكنك تطبيق ذلك كما يلي :

نفذا هذا الكود في الحدث التابع للـ Form1 ثم ضع الكود التالي في الحدث :

Me.Caption = vbKeyF1

بعد ذلك قم بشغيل البرنامج وضغط على المفتاح F1 لتلاحظ النتيجة على عنوان النافذة Form1.

لمعرفة المزيز عن الثوابت المقابلة للمفاتيح قم بالضغط على زر Ctr والمسافة لتضهر لك قائمة بها مجموعة من الأوامر اكتب أول الحروف Key بعد ذلك ستسرد لك القائمة مجموعة

من ثوابت المفاتيح , حيث أن جميع مفاتيح الكيبورد موجودة في هذه الثوابت ولا ثمثل ( الأحرف ) فقط مفاتيح من F1 إلى F12 و مفاتيح الأسهم وزر الهروب وغيرها .

ويفيد KeyCode في فحص مفاتيح لوحة المفاتيح حيث يعيد رقم المفتاح , وبذلك يمكن كتابة كود يقوم بإظهار ارقام المفاتيح كمايلي :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Me.Caption = KeyCode
End Sub

ملاحضة مهمة جداً :

لاحض أن KeyCode يرجع أرقام الأحرف فقط الأحرف الكبيرة بينما الأحرف الصغيرة يعطي رقمها كرقم حرف كبير على سبيل المثال : حرف A يرجع رقمة 65 بينما a يرجع رقمة 65 أيضاً وهذا بالطبع غير صحيح لذلك إذا اردنا معرفة الرقم المقابل للحرف الصغير نكتب الكود التالي

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Me.Caption = KeyCode + 32
End Sub

وهذا بدورة سيرجع الرقم المقابل للحرف الصغير فسيرجع a برقم 97 , وقد يستائل البعض لماذا زيدنا الرقم المرجع من KeyCode ب 32 , وهنا سأعتبر هذه الإجابة تمرين أطلبه من القراء الأعزاء .

الجزء الثاني Shift As Integer

هذا الجزء يعيد قيمة صحيحة تمثل أرقام المفاتيح Shift , Ctrl , Alt وهذه الأرقام هي :

1 يقابل Shift

2 يقابل Ctrl‏

4 يقابل Alt

بينما في حالات الجمع بينهم يعيد الأرقام التالية:

3 يقابل Ctrl + Shift

5 يقابل Shift + Alt

6 يقابل Ctrl + Alt

7 يقابل Ctrl + Alt + Shift

الثوابت المقابلة لأزرار

Shift = vbShiftMask

Ctrl = vbCtrlMask

Alt = vbAltMask

2- الحدث KeyUp

يفيد هذا الحدث عندما يتم رفع الضغط عن الزر في تنفيذ كود معين :

Private Sub Command2_KeyUp(KeyCode As Integer, Shift As Integer)

End Sub

أجزاء الحدث :

تخضع لنفس الأجزاء السابقة .

ملاحضة هامة جداً :

الحدثين KeyDown , KeyUp

إذا كان موضع زر أمر CommandButtom على النموذج وكانت الخاصية للزر Cancel = True فإن الجزء KeyCod لايرجع قيمة لزر ECC .

3 - الحدث KeyPress :

ينفذ هاذا الحدث كود معين عندما يظغط المستخدم زرا في لوحة المفاتيح

Private Sub Form_KeyPress(KeyAscii As Integer)

End Sub

الجزء(الباراميتر) KeyAscii :

يعيد قيمة صحيحة تمثل شفرة ASNI , يعيد الأرقام Asc للأحرف الكبيرة والصغيرة مع إمكانية توقيف عمل أي زر . و KeyAscii لايعيد ارقام المفاتح مثل F1.....F12 وغيرها .

وهنا نلاحظ ان الأرقام كما ذكرت سابقاً تمثل الحرف في جدول أسكي ولكي نتمكن من إضهار الرقم المقابل للحرف أو الحرف المقابل للرقم سنستخدم الدوال التالية :

Chr الصيغة العامة :

CHR(ChrCode)

تستخدم هذه الدالة في إيجاد الحرف المقابل للرقم مثلاً الرقم 65 هو عبارة عن A كي نتمكن من إيجادة نستخدم الدالة السابقة مثل (Chr(65

الدالة Asc عكس الدالة السابقة تماماُ , حيث تستخدم لإيجاد الرقم المقابل للحرف .

مثال يوضح ذلك يبين كيفية جعل صندوق النص لايقبل إلى حروف كبيرة باستخدام هذا الحدث:

Private Sub Text1_KeyPress(KeyAscii As Integer)
 Dim char As String

   char = Chr(KeyAscii)
   KeyAscii = Asc(UCase(char))
End Sub

وهناك العديد من الفوائد لهذا الحدث منها توقيف أزرار معينة مثلاً كأن تجل صندوق النص لايقبل إلى أرقام :

Private Sub Text1_KeyPress(KeyAscii As Integer)
 Select Case Chr(KeyAscii)
   Case 0 To 9
    'Else نفذ أمر أودعة فاضي فإن تحقق الشرط فلن يستعدي جملة
   Case Else
    If KeyAscii = vbKeyBack Then Exit Sub
    KeyAscii = 0
  End Select
End Sub

والملاحض هنا إذا كان لدي أكثر من صندوق نص فهنا إما أجعل الصناديق كمصفوفة كي تم وضع الحدث لكل صناديق النصوص أو أقوم باستعداء الحدث السابق من نفس الحدث للكائن الأخر :

مثال أضف صندوق نص أخر إلى النموذج وكتب الكود التالي في الحدث لصندوق النص الثاني كمايلي :

Private Sub Text2_KeyPress(KeyAscii As Integer)
  Text1_KeyPress KeyAscii
End Sub

لاحض الكود السابق : قمنا بتمرير KeyAscii إلى KeyAscii الخاص بالصندوق الأول ليخضع لنفس الكود, وبذلك سيتأثر الصندوق الثاني بنفس الكود الموجود في الحدث الخاص بالصندوق الأول.

ملاحضة هامة :

هناك خصائص تتعلق بهذا الحدث مثل الخاصية : KeyPreview

وهي تتبع بعض النوافذ مثل Form1 و UserControl و PropertyPage وضيفة هذه الخاصية مهمة فهي تحدد ما إذا كانت النافذه هي من ستستقبل احداث لوحة المفاتيح أولا أم الأدوات الموضوعة بداخلها : خير مثال هوا التالي :

ضع في النافذة Form زر أمر وصندوق نص ثم ضع في الحدث الخاص بصندوق النص نفس الكود السابق لمنع إدخال الأحرف إلى النص ثم ضع في حدث النافذة والزر لكود التالي :

Me.Caption = KeyCode

بعد ذلك قم بتشغيل البرنامج قم بالغط على مفاتح الأحرف (a , b t , f,f ) وغيرها ستلاحض عم كتابتها على شريط العنوان الخاص بالنافذة وهذا يعني أن حث صندوق النص هوا من بدأ أولاً قم بتغير الخاصية المذكورة من False إلى true لاحض ان ارقام الأحرف بدأت تضهر على النافذة عند الضغط على الأزرار وهذا يعني أن حدث Form هوا من بدا .

وهناك فوائد أخرى كثيرة , فقد ذكرت هذه الأمثلة لكي نتعرف علىأهمية هذا الحدث فعندما نود برمجة الحدث فأننا يجب أن نعرف ما هي أهميتة كي نحدد بالضبط ماهي الأحداث التي يجب ان ترفق مع الكائن الذي سنقوم ببرمجته لذي يجب أن نأخذ فكرة عامة قبل أن بدأ بالبرمجة .

4 - حدث MouseMove :

يستخدم هذا الحدث عند مرور الماوس فوق احد الكائنات أو النوافذ(كل من تملك هذا الحدث)

هذا الحدث مهم جداُ جداُ فمنة سنولد حدثين جديدين نسميهما MouseOver , MouseOut كما سيأتي لاحقاً

مثال :

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

End Sub

أول بارمتر أو أجزاء من الحدث :

Button :يعيد قيمة صحيحة تبين حالة زر الماوس وهذه القيم هي :

1 ضغط زر يساري

2 ضغط زر يميني

4 ضغط زر الوسط

الثوابت المناضرة للأرقام

1 = vbLeftButton

2 = vbRightButton

4 = vbMiddleButton

2 - Shift : يعمل نفس العمل في حدث KeyCode (راجع الحدث KeyCode ) .

3 - x يرجع قيمة عددية تبين الموقع الحالي لمؤشر الماوس بالنسبة للمستوى الأفقي للشاشة .

4 - y يرجع قيمة عددية تبين الموقع الحالي لمؤشر الماوس بالنسبة للمستوى العمودي للشاشة .

ملاحضة : x,y يعبر عنهما بالغة النضام المناسبة الموضوعة بواسطة الخصائص ScaleWidht , ScaleHeight , ScaleTop , ScaleLeft .

5 - الحدث MouseDown :

يحدث عندما يتم الضغط بالزر الأيمن على الكائن .

يخضع لنفس القيم التي يأخذها الحدث MouseMove

6 - الحدث MouseUp :

يحدث عندما يتم رفع الغط عن زر الماوس

يخضع لنفس القيم التي يأخذها الحدث MouseMove

ملاحضة هامة : x,y في الثلاثة الأحداث السابقة للماوس تختلف أو تتغير قيمتها من حدث لأخر , وبالتالي يجب لأن نحفض قيم x,y للقيم السابقة للحدث MouseDown في متغيرات كي يتم مثلأ مقارنتها لحضة الضغط وعند مرور الماوس MouseMove في بعض العمليات .

بعد أن أخذنا جزء بسيط من الأحداث فإننا نستطيع الأن تقسم الأحداث إلى 4 أنواع وهي :

أولاً : أحداث خاصة بالوحة المفاتيح مثل (KeyDown, KeyPress, KeyUp)

ثانيا: أحداث خاصة بالماوس مثل مثل (MouseMove, MouseDown, MouseUp)

ثالثاً: أحداث مشتركة بين الماوس ولوحة المفاتيح مثل ( GotFocus, SetFocusClick,DblClick)

وهي تلك الأحداث التي يمكن أن تنفذ إما من خلال لوحة المفاتيح أو الماوس

رابعاً: أحداث خاصة :

وهذا النوع إما يتبع كائنات أو نوافذ ليس للماوس أو لوحة المفاتيح عنها دخل ,

فعند ما نود أن نبرمج حدث (نصمم) يجب أولاُ أن نحدد الأحداث من الأربعة الأقسام السابقة ثم نقوم بوضع الفكرة التي سنحتاجها للحدث لتنفيذ مهمة معينة .

وإلى لقاء قادم , السلام عليكم ورحمة الله وبركاتة

تم تعديل هذه المشاركة بواسطة عبد الله فتحي في 8 مايو 2005 في 15:08

ani.gif
#4

جزاك الله خيرا اخى عبد الله فتحي

بالفعل المنتدى كان ينقصه هذا الموضوع

وارجو ان تواصل هذه الدروس الرائعة

:D

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#5

جعلها الله في ميزان حسناتك

والله شرح جميل

واتمنى عند الانتهاء من الموضوع اضافة مثال جاهز

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

--------------------------------------------------

مفكرة الإسلام؛ طالع أخبار العالم وأخبار المجاهدين بعيدا عن التعتيم الاعلامي.

#6

السلام عليكم

اين بقية ها الشرح الجميل يا اخ عبد الله؟؟ :(

الموضوع جميل جدا

ارجو ان تكمله :rolleyes:

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#7

اعتقد ان الاخ عبدالله لم يرى التفاعل الكافي من اعضاء المنتدى

لذا صابه الاحباط

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

--------------------------------------------------

مفكرة الإسلام؛ طالع أخبار العالم وأخبار المجاهدين بعيدا عن التعتيم الاعلامي.

#8
أرجو اكمال الموضوع فالموضوع مهم جدا
#9

مشكور عبد الله فتحي علي الموضوع

الناس انواع

رجل يعلم ويعلم انه يعلم فهذا عالم فوقروه

رجل يعلم ولا يعلم انه يعلم فهذا غافل فإيقزوه

رجل لا يعلم ويعلم انه لا يعلم فهذا جاهل فعلموه

رجل لا يعلم ولا يعلم انه يعلم فهذا احمق فابتعدو عنه

#10

تسلم على المجهود الجامد دة :rolleyes:

Mimo

040.gif

#11

أتمني من الله ان يكمل الاخ عبد الله فتحي باقي الدروس

#12

مشكوووووووووووور على جهودك وبارك الله فيك....

#13

بارك الله فيك اخي عبدالله

موضوع جميل ومهم

اكمل جزاك الله خيرا

#14

ارجو اتمام الموضوع وبالاخص عمل اسكن لليوزر كنترول عن طريق دوال الرسم كما نرى فى الامثلة الاجنبية الجاهزة :lol: وعمل ادوات بشكل الاكس بى مدمجة فى المشروع :wacko:

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#15

ايه الحكاية فين الرجالة هو كل موضوع الاقيه مبتور كده ومش كامل انا لسه معجب جديد بالمنتدى ارجو انا احافظ علي تلك الصورة جزاكم الله خير

#16

على فكرة

أنا ملاحظ أن قسم المواضيع الهامة كله كده

أرجو إكمال الموضوع

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#17

قول ان شاء الله هخلص امتحانات وابدا دورة كاملة فى شرح التعامل مع تصميم الاكتيف اكس

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#18

يا شباب الموضوع مطرووح من 2005

startingprogremmer.jpg
#19

يا اخي مبرمج مبتدأ هذا الموضوع طرح لتعم الفائدة في المنتدى

#20

مو المهم انه منقول المهم انك بحثت وتعبت من اجل الموضوع

VB_Logo_01.gif

visual basic

هذا الموضوع مغلق.

مواضيع مشابهة