بسم الله الرحمن الرحيم[/SIZE]
السلام عليكم ورحمة الله وبركاته[/CENTER]
تعلم كيف تبرمج أدوات Windows Control Library في فيجوال بيسيك دوت نت
قبل كل شيئ اريد ان انوه الى امر وهو ان هذا الشرح ليس منقول وهو شرحي الشخصي وتم الانتهاء من هذا الموضوع بعد جهد جهيد وتوفيق من الله اتمنى ان يعجبكم اسلوبي
مقدمة: طبعا يوجد في فيجوال بيسيك دوت نت أدوات كثيرة تأتي مع حزمة دوت نت مثل الأدوات القياسية التي نستخدمها كثيرا في مشاريعنا وهي Label,,TextBox,,Button,,PictureBox ......الخ وغيرها الكثير الكثير من الأدوات الموجودة لكن نحن أحيانا نحتاج إلى برمجة أدوات خاصة بنا تناسب احتياجات برنامجنا نضع فيها مزايا وخصائص غير موجودة بالأدوات القياسية لهذا سنتعلم في هذا الموضوع أساسيات برمجة أدوات خاصة بنا .
طبعا حتى نستطيع برمجة أداتنا الخاصة هناك ثلاثة أساليب يجب أن نتعلمها ويمكنك إتباع أي أسلوب منها وهي: 1-وراثة اداة سابقة
2-استخدام مجموعة من الادوات الجاهزة
3-انشاء اداة مستقلة من الصفر
سأقوم انشاء الله بشرح الاساليب الثلاث:
اولا:وراثة اداة سابقة:
طبعا يعتبر هذا الأسلوب من أسهل الأساليب التي تستطيع من خلالها إنشاء أداتك الخاصة وهذا الأسلوب يقوم على وراثة أداة موجودة مسبقا من أدوات دوت نت فروم وورك القياسية بكامل خصائصها وأحداثها وتجهيزها ليتم التعديل عليها وعندها تستطيع إضافة كل ما يناسب احتياجاتك من خصائص وأحداث عليها كأن تضيف على TextBox القياسية خاصية التحديد التلقائي كما سنشرح في مثالنا القادم
[size=4]ملاحظة:قبل أن ابدأ بشرح المثال القادم سأذكر بشيء هو أن هذا الشرح ينفع لجميع إصدارات فيجوال بيسيك دوت ت من 2000 إلى 2010 يعني انه لا يوجد أي فرق بينها,, أنا سأستخدم في شرحي 2010 وكل صور الشرح ستكون عليه.
التطبيق العملي:
[size=4]أولا: بعد أن تفتح فيجوال بيسيك قم باختيار مشروع جديد ومنه اختر Windows Control Library
كما في الصورة التالية
[/size][/size]
[size][font][size][font][color][size][color]
وبعدها ستفتح لك بيئة تطوير فيجوال ستديو مشروع جديد فيه الملف UserControl1.vb وفيه نافذة جديدة [size=4]ثانيا: الآن غير اسم المشروع إلى MyTextBox انظر الصورة التالية: [/size][/color][/size][/color][/font][/size][/font][/size]
[size][font][size][font][color][size][color][size]
ثالثا:افتح نافذة محرر الاكواد الخاصة بالأداة UserControl1 وامسح كل شيء فيها بحيث تصبح فارغة والآن لوراثة الأداة TextBox القياسية أضف الكود التالي الذي هو الفئة التي تشتق الأداة TextBox بكافة خصائصها وأحداثها : [/size][/color][/size][/color][/font][/size][/font][/size]
- الكود:
-
[LEFT][FONT=Tahoma][COLOR=blue][FONT=Consolas]Public[/FONT][/COLOR][FONT=Consolas] [COLOR=blue]Class[/COLOR] [COLOR=#2b91af]MyTextBox[/COLOR][/FONT][/FONT][FONT=Tahoma]
[FONT=Consolas] [COLOR=blue]Inherits[/COLOR] System.Windows.Forms.[COLOR=#2b91af]TextBox[/COLOR][/FONT]
[FONT=Consolas] [COLOR=blue]Sub[/COLOR] [COLOR=blue]New[/COLOR]()[/FONT]
[FONT=Consolas] [COLOR=blue]MyBase[/COLOR].New()[/FONT]
[FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR][/FONT]
[COLOR=blue][FONT=Consolas]End[/FONT][/COLOR][FONT=Consolas] [COLOR=blue]Class[/COLOR][/FONT][/LEFT][FONT=Tahoma]
[/FONT]
[size=4]الآن بعد تعريفك لفئة السابقة تستطيع إضافة أي شيء تريده على الأداة TextBoxكما تشاء ويناسبك من خصائص وأحداث وغيرها بما معناه انك أنشأت أداة تكست بوكس كاملة وقابلة للتعديل.
[size=4]رابعا:سنقوم الآن بإضافة خاصية التحديد التلقائي AutoSelect وهي خاصية غير موجودة مع أداة التكست بوكس القياسية وعمل هذه الخاصية هو عند اختيار القيمة True لها فيتم تحديد النص كاملا في الأداة تيكست بوكس مجرد أن تأخذ الأداة تركيزها ولإنشاء هذه الخاصية ادخل الكود التالي : [/size][/size]
- الكود:
-
[LEFT][COLOR=blue][FONT=Consolas]Private[/FONT][/COLOR][FONT=Consolas] m_autoselect [COLOR=blue]As[/COLOR] [COLOR=blue]Boolean[/COLOR][/FONT]
[FONT=Consolas] [COLOR=blue]Public[/COLOR] [COLOR=blue]Property[/COLOR] AutoSelect() [COLOR=blue]As[/COLOR] [COLOR=blue]Boolean[/COLOR][/FONT]
[FONT=Consolas] [COLOR=blue]Get[/COLOR][/FONT]
[FONT=Consolas] [COLOR=blue]Return[/COLOR] m_autoselect[/FONT]
[FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Get[/COLOR][/FONT]
[FONT=Consolas] [COLOR=blue]Set[/COLOR]([COLOR=blue]ByVal[/COLOR] value [COLOR=blue]As[/COLOR] [COLOR=blue]Boolean[/COLOR])[/FONT]
[FONT=Consolas] m_autoselect = value[/FONT]
[FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Set[/COLOR][/FONT]
[FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Property[/COLOR][/FONT][/LEFT]
والآن في الحدث Enter الخاص بالأداة ضع الكود Me.SelectAll( ) على الشكل التالي : - الكود:
-
[LEFT][SIZE=4][COLOR=blue][FONT=Consolas]Private[/FONT][/COLOR][FONT=Consolas] [COLOR=blue]Sub[/COLOR] [COLOR=#2b91af]MyTextBox[/COLOR] _Enter([COLOR=blue]ByVal[/COLOR] sender [COLOR=blue]As[/COLOR] [COLOR=blue]Object[/COLOR], [COLOR=blue]ByVal[/COLOR] e [COLOR=blue]As[/COLOR] System.[COLOR=#2b91af]EventArgs[/COLOR]) [COLOR=blue]Handles[/COLOR] [COLOR=blue]Me[/COLOR].Enter[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Me[/COLOR].SelectAll()[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR][/FONT][/SIZE][/LEFT]
وطبعا هذا الكود لتحديد كافة النص بالأداة مجرد انتقال التركيز إليها
والآن يكون شكل الكود النهائي بعد كل شيء هكذا :
- الكود:
-
[LEFT][SIZE=4][COLOR=black][COLOR=blue][FONT=Consolas]Public[/FONT][/COLOR][FONT=Consolas] [COLOR=blue]Class[/COLOR] [COLOR=#2b91af]MyTextBox[/COLOR][/FONT][/COLOR][/SIZE][COLOR=black]
[SIZE=4][FONT=Consolas] [COLOR=blue]Inherits[/COLOR] System.Windows.Forms.[COLOR=#2b91af]TextBox[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Sub[/COLOR] [COLOR=blue]New[/COLOR]()[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]MyBase[/COLOR].New()[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Private[/COLOR] m_autoselect [COLOR=blue]As[/COLOR] [COLOR=blue]Boolean[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Public[/COLOR] [COLOR=blue]Property[/COLOR] AutoSelect() [COLOR=blue]As[/COLOR] [COLOR=blue]Boolean[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Get[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Return[/COLOR] m_autoselect[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Get[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Set[/COLOR]([COLOR=blue]ByVal[/COLOR] value [COLOR=blue]As[/COLOR] [COLOR=blue]Boolean[/COLOR])[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] m_autoselect = value[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Set[/COLOR][/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Property[/COLOR][/FONT][/SIZE][/LEFT][COLOR=black]
[LEFT][SIZE=4][FONT=Consolas] [COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] [COLOR=#2b91af]MyTextBox[/COLOR] _Enter([COLOR=blue]ByVal[/COLOR] sender [COLOR=blue]As[/COLOR] [COLOR=blue]Object[/COLOR], [COLOR=blue]ByVal[/COLOR] e [COLOR=blue]As[/COLOR] System.[COLOR=#2b91af]EventArgs[/COLOR]) [COLOR=blue]Handles[/COLOR] [COLOR=blue]Me[/COLOR].Enter[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]Me[/COLOR].SelectAll()[/FONT][/SIZE]
[SIZE=4][FONT=Consolas] [COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR][/FONT][/SIZE]
[SIZE=4][COLOR=blue][FONT=Consolas]End[/FONT][/COLOR][FONT=Consolas] [COLOR=blue]Class[/COLOR][/FONT][/SIZE][/LEFT]
[/COLOR]
الآن بعد أن انتهينا سنقوم بحفظ المشروع و باستخراج ملف Dll الخاص بالأداة لنتمكن من استخدامها في مشاريعنا .
وذلك عن طريق اختيار الأمر Build MyTextBox من القائمة Build انظر الصور التالية:
[color][color][color][size]
[/size][/color][/color][/color]
[color][color][color][size]
الآن سنقوم بتجربة الأداة: أولا: بعد فتح فيجوال ستديو افتح مشروع جديد Windows Application
ثانيا: قم بإضافة الأداة إلى مشروعك كالتالي انظر الصور:
[/size][/color][/color][/color]
[color][color][color][size][size][color]
[/color][/size][/size][/color][/color][/color]
[color][color][color][size][size][color]
[/color][/size][/size][/color][/color][/color]
[color][color][color][size][size][color]
ثالثا:ارسم الأداة على النموذج وانظر إلى نافذة الخصائص ولاحظ الخاصية الجديدة التي انشأناها AutoSelect انظر الصورة: [/color][/size][/size][/color][/color][/color]
[color][color][color][size][size][color]
[/color][/size][/size][/color][/color][/color]
MyTextBox
[color][color][color][size][size][color]
[/color][/size][/size][/color][/color][/color]
تحميل مثال الأداة جاهزة ومع الكود المصدري
[color][color][color][size][size][color][color][size]
الان انتهينا من شرح الأسلوب الأول وهو وراثة أداة موجودة سابقا أتمنى أن يكون شرحي واضحا وسأشرح في المرة القادمة الأسلوب الثاني وهو
[/size][/color][/color][/size][/size][/color][/color][/color]
استخدام مجموعة من الأدوات الجاهزة
ترقبو شرح الاسلوب الثاني
[color][color][color][size][size]
[CENTER]
يتبع............................للمرة القادمة[/size][/color][/color]