منتديات الحضرمي
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتديات الحضرمي

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

 

 إنشاء ActiveX Control

اذهب الى الأسفل 
كاتب الموضوعرسالة
bigman
عضو مميز جدا
عضو مميز جدا



المساهمات : 49
تاريخ التسجيل : 29/07/2007
العمر : 44

إنشاء ActiveX Control Empty
مُساهمةموضوع: إنشاء ActiveX Control   إنشاء ActiveX Control Icon_minitimeالسبت أغسطس 18, 2007 7:25 am

إنشاء ActiveX Control C50d09bb44




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


الدرس الأول

بسم الله الرحمن الرحيم
إخواني الكرام نظرا لكثر الأسئلة في المنتدى حول كيفية إنشاء ملفات 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 .




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

سنتحدث في هذا الدرس عن كيفية التعامل مع 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) بطبيعة الحال لا يحتوي الكائن على أي شيء لأننا لم نقم بعد بتصميمه , فقط أنضر إلى الخصائص التي يحتويها الكائن وهذه الخصائص افتراضية وهي :



كود PHP:
الكود:
[color=#000000]Name
Causesvalidation
DragIcon
DragMode
Height
HelpContextId
Index
Left
TabIndex
TabStop
Tag
ToolTipText
Top
Visible
WhatsThisHelpID
Width
[/color]



تعتبر هذه الخصائص الافتراضية للكائن ثابتة:
أي كثير الاستخدام وترك حرية إضافة خصائص جديدة للكائن أو مماثلة للخصائص التي تتبع نافذة التصميم أي كأن تضيف خاصية 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 , وأخذنا نضرة سريعة على الخصائص وكيف ظهورها على الكائن ومدى الحاجة لها .

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





فعذراُ منكم فقد أذكر أحيانا بعض المعلومات تكون قد مرت عليكم, ولكن فقط اذكرها مراعياً المبتدئين , الذين لم أرى لهم وجود, فتدريجياُ سأنتقل بالمعلومات إلى الأهمية فقط .
[size=18]
يتبع
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://abusamrah.jothost.com/index.php
bigman
عضو مميز جدا
عضو مميز جدا



المساهمات : 49
تاريخ التسجيل : 29/07/2007
العمر : 44

إنشاء ActiveX Control Empty
مُساهمةموضوع: رد: إنشاء ActiveX Control   إنشاء ActiveX Control Icon_minitimeالسبت أغسطس 18, 2007 7:26 am

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


الأحداث

لكل كائن حدث وهذا الحدث مسئول عن عمل معين في لحظة معينة أي يقوم بتنفيذ مهمة (كود) في حال وقع علية حدث ما .
ولكي نستوعب الأمر جيداً سنأخذ مجوعة من الأحداث على سبيل التوضيح :

1- الحدث الأول KeyDown :
[/size]

الكود:

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

End Sub

[/color][color=#0000bb]End Sub
[/color][/color]

[/size]
هذا الحدث هوا المسئول عن تنفيذ مهمة معينة في حال كان مفتاح من أزرار الكيبور مضغوط (أو مجموعة من المفاتيح)
وأجزاء هذا الحدث هي :
1 - KeyCode As Integer
يمثل شفرة مفتاح , مثل( VbKeyF1) (المفتاح) F1 أو vbKeyHome (المفتاحHome ) وغيرها من المفاتيح
يمكنك تطبيق ذلك كما يلي :
نفذا هذا الكود في الحدث التابع للـ Form1 ثم ضع الكود التالي في الحدث :


كود PHP:
الكود:
Me.Caption = vbKeyF1

بعد ذلك قم بشغيل البرنامج وضغط على المفتاح F1 لتلاحظ النتيجة على عنوان النافذة Form1.
لمعرفة المزيز عن الثوابت المقابلة للمفاتيح قم بالضغط على زر Ctr والمسافة لتضهر لك قائمة بها مجموعة من الأوامر اكتب أول الحروف Key بعد ذلك ستسرد لك القائمة مجموعة
من ثوابت المفاتيح , حيث أن جميع مفاتيح الكيبورد موجودة في هذه الثوابت ولا ثمثل ( الأحرف ) فقط مفاتيح من F1 إلى F12 و مفاتيح الأسهم وزر الهروب وغيرها .
ويفيد KeyCode في فحص مفاتيح لوحة المفاتيح حيث يعيد رقم المفتاح , وبذلك يمكن كتابة كود يقوم بإظهار ارقام المفاتيح كمايلي :
[/size]
كود PHP:
الكود:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Me.Caption = KeyCode
End Sub


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

كود PHP:
الكود:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Me.Caption = KeyCode + 32
End Sub

[/size]

وهذا بدورة سيرجع الرقم المقابل للحرف الصغير فسيرجع 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

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

كود PHP:
الكود:
 [/center]
[center]Private Sub Command2_KeyUp(KeyCode As Integer, Shift As Integer)[/center]
[center]End Sub
[/center]
[center]
[/size]
أجزاء الحدث :
تخضع لنفس الأجزاء السابقة .
ملاحضة هامة جداً :
الحدثين KeyDown , KeyUp
إذا كان موضع زر أمر CommandButtom على النموذج وكانت الخاصية للزر Cancel = True فإن الجزء KeyCod لايرجع قيمة لزر ECC .


3 - الحدث KeyPress :

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

كود PHP:
الكود:
 [/center]
[center]Private Sub Form_KeyPress(KeyAscii As Integer)[/center]
[center]End Sub
[/center]
[center]
[/size]

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

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

كود PHP:
الكود:
CHR(ChrCode)
[/size]
تستخدم هذه الدالة في إيجاد الحرف المقابل للرقم مثلاً الرقم 65 هو عبارة عن A كي نتمكن من إيجادة نستخدم الدالة السابقة مثل (Chr(65

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

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

كود PHP:
الكود:
 [/center]
[center]Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim char As String[/center]
[center]char = Chr(KeyAscii)
KeyAscii = Asc(UCase(char))
End Sub

[/center]
[center]
[/size]




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




كود PHP:
الكود:
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



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


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

كود PHP:
الكود:
Private Sub Text2_KeyPress(KeyAscii As Integer)
Text1_KeyPress KeyAscii
End Sub


[/size]

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

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

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


4 - حدث MouseMove :
يستخدم هذا الحدث عند مرور الماوس فوق احد الكائنات أو النوافذ(كل من تملك هذا الحدث)
هذا الحدث مهم جداُ جداُ فمنة سنولد حدثين جديدين نسميهما MouseOver , MouseOut كما سيأتي لاحقاً

مثال :

كود PHP:
الكود:
 [center]Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)[/center]
[center]End Sub
[/center]


أول بارمتر أو أجزاء من الحدث :
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)
وهي تلك الأحداث التي يمكن أن تنفذ إما من خلال لوحة المفاتيح أو الماوس
رابعاً: أحداث خاصة :
وهذا النوع إما يتبع كائنات أو نوافذ ليس للماوس أو لوحة المفاتيح عنها دخل ,

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







ودمتم برعاية الله وحفظة والسلام عليكم ورحمة الله وبركاته , وإلى درس قريب بإذن الله تعالي .
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://abusamrah.jothost.com/index.php
 
إنشاء ActiveX Control
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات الحضرمي :: منتديات لغات البرمجة :: منتدى مبرمجي لغة Microsoft Visual Basic 6 وما قبلها من إصدارات-
انتقل الى: