![]() |
|
-- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : -- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- (/showthread.php?tid=4683) |
-- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- - RaggiTech - 01-10-12 كاتب الموضوع : محمد الناشـري
بسم الله الرحمن الرحيم كثيرا ما تحتاج الى تنفيذ حدث معين لعنصر تحكم ما ... فنذهب بكل بساطة الى محرر الكود ونختار وقت الحدث ثم نكتب مانريد من عنصر التحكم تنفيذة عند وقوع الحدث ... ولكن ماذا لو اننا تريد تنفيذ نفس الحدث على اكثر من نسخة من العنصر داخل الفورم .. سيلزمنا حينها ان نعيد كتابة الحدث لكل عنصر ... مما يعد امرا مرهقا بعض الشئ ... بصفة أوضح .. ماذا لوكان لدينا نموذج وبة عدد لاباس به من عنصر التجكم TextBox ونريد عند التركيز على عنصر التكست ان يتحول لونة الى الاصفر لينبة المستخدم بانة هو العنصر الذي سيتم الكتابة فية .. مثلا .. سنقوم بلاشك بجعل لون الخلفية للعنصر تساوي اللون الاصفر عند حدث التركيز .... وسنعيدها الي اللون الابيض عند فقد التركيز .. المهمة تبدو سهلة بعض الشئ ولكن ما ذا لو أردنا تطبيق ذلك على جميع عناصر TextBox الموجودة في الفورم ..... بلاشك سنحتاج الى الاشارة الى كل عنصر بتنفيذ احداث معينة نود تنفيذها .. والنتيجة كم هائل من الكود .... يتيح بيئة الدوت نت امكانية اشتقاق الكنترول وتطويرة بما يتناسب مع احتياجنا .. وللقيام بذلك كل ما عليك هو البدء بمشروع جديد ثم اختر Windows Forms Control Library .... وقم بتسمية المشروع MohdTextBox مثلا ... نبدا العمل بتغيير اسم كائن UserControl 1 الى MohdTextBox.vb ثم نقوم بحفظ المشروع .. انقر show all في نافذة Solution Explorer لتري جميع ملفات المشروع .. يوجد اسفل ملف MohdTextBox.vb الملف المسمى MohdTextBox.Designer.vb قم بفتحة وستشاهد ان الملف يبدا بالعبارتين التاليتين كود : [color=#000000][COLOR=#0000bb]Partial [/color][color=#007700]Public Class [/color][COLOR=#0000bb]MohdTextBoxتدل العبارة الاولى الى ان الملف باكملة ينتمى الى فئة MohdtextBox ... لاشتقاق جميع خصائص عنصر التحكم TextBox علينا بتغيير العبارة الثانية لتصبح كالتالي كود : [color=#000000][COLOR=#0000bb]Inherits System[/color][color=#007700].[/color][color=#0000bb]Windows[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][COLOR=#0000bb]TextBox وبهكذا نكون قد انشأنا عنصر تجكم جديد واشتققنا جميع خصائص TextBox .. ولكن ماالفائدة من ذلك .... بلاشك اننا نريد أن اضافة امكانيات جديدة لعنصر التحكم الخاص بنا .. ننتقل الان الى الكود الخاص بالكائن MohdTextBox.vb وحيث اننا نريد يتغير لون خلفية مربع النص الى اللون الاصفر عندما يكون عنصر التحكم نشطاً لذا علينا أن نكتب الكود الخاص بنا في حدث Enter الخاص بعنصر التحكم .. نقوم بتوسيع القائمة المنسدلة Events وحدد الحدث Enter ثم نكتب الاتي كود : [color=#000000][COLOR=#007700]Private [/color][color=#0000bb]Sub MohdTextBox_Enter[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Me[/color][color=#007700].[/color][COLOR=#0000bb]Enterبعد ذلك لابد لنا بان نقوم ببرمجة الحدث Leave حتي يتم اعادة ضبط اللون الخلفية الى اللون الابيض .عند الغاء تنشيطة ... كود : [color=#000000][COLOR=#007700]Private [/color][color=#0000bb]Sub MohdTextBox_Leave[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Me[/color][color=#007700].[/color][COLOR=#0000bb]Leaveنقوم الان بعمل Build لمشروعنا ...وبكذا نكون قد انشانا عنصر تحكم به الخاصية الاضافية وهي تغير لون الخلفية عند تنشيط العنصر .. ونستطيع استخدامة في اي مشروع خاص بنا او ارسالة لمن نشاء ليستخدمة ... ولاضافة عنصر التحكم الجديد الى اي مشروع نذهب الى نافذة ToolBox ونضغط على زر الفارة الايمن ونختار Choose Itemes ومن نافذة Choose ToolBox Itemes نضغط زر الاستعراض ونذهب الى مشروعنا وداخل مجلد Bin سنجد الملف MohdTextBox.dll نختارة ونضغط فتح وسيتم اضافتة الى المشروع .. يتبع ... -- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- - RaggiTech - 01-10-12 طلب احد الاخوان هنا ... ان يتم تغير العلامة "." الى " ،" تلقائيا وسأل كيف يتم تطبيقها على العديد من عناصر التحكم TextBox .. ولتنفيذ ذلك كل ماعلينا هو الذهاب الى مشروعنا .. واضافة الكود التالي عند حدث LostFocus الكود كود : [color=#000000][COLOR=#007700]Private [/color][color=#0000bb]Sub MohdTextBox_LostFocus[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Me[/color][color=#007700].[/color][COLOR=#0000bb]LostFocusيتبع .... -- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- - RaggiTech - 01-10-12 تعرفنا سابقا على كيفية إنشاء عناصر تحكم مخصصة .. وكان الأمر في غاية السهولة .. ولكن وكما تلاحظون في مشروعنا أن المستخدم لأداتنا المخصصة ( وطبعا هو المبرمج ) لا يستطيع التحكم أو اختيار الألوان التي تناسبه أو تناسب مشروعه... والسؤال هنا لماذا لا نجعل هذه القيمة كخاصية للعنصر كي يستطيع المطور ضبطها كيفما يشاء ?.... لنضف خاصيتين هما EnterFocusColor وLeaveFocusColor.. وحيث أن عنصر الذي انشأ ناه خصيصا من اجل عملية إدخال البيانات فسوف يكون من المفيد أيضاً إضافة سمة جديدة وثيقة الصلة بإدخال البيانات ألا وهي تنبيه المستخدم في حال ترك احد الحقول الإجبارية فارغا وذلك بظهور اللون الذي يتم تحديده من قبل المطور ... وطبعا لابد أن نحدد أولا ما إذا كان الحقل إجباريا أم لا ...باستخدام خاصية Mandatory فإذا كان الحقل إجباريا وترك خاليا ستتغير قيمته بناء على اللون المحدد في خاصية MandatoryColor سنستعرض ألان للخصائص التي سنخصصها لعنصر التحكم ..... خاصية EnterFocusColor عند تنشيط عنصر التحكم سيتم ضبط لون الخلفية على هذه القيمة خاصية LeaveFocusColor : عند إلغاء تنشيط عنصر التحكم يتم ضبط لون الخلفية على هذه القيمة ولكن هنا يجب الانتباه إلى انه إذا كان الحقل إجباري أي أن خاصية Mandatory قيمتهاTrue وكان الحقل خاليا فستكون الأولية لخاصية Mandatory خاصية Mandatory :إذا كانت قيمة هذه الخاصية هي True فهذا يعني أن الحقل إجباري والعكس بالعكس خاصية MandatoryColor : تضبط هذه الخاصية لون خلفية عنصر التحكم في حال كانت خاصية Mandatory لها القيمة True [SIZE=3]والآن جاء دور كتابة الأكواد .... [/SIZE] كود : [COLOR=#000000][COLOR=#0000bb]استيراد فضاء الاسماءجزء التعريفات في Declarations كود : [COLOR=#000000][COLOR=#0000bb] هذة الخاصية لتحديد مااذا كان الحقل اجباري ام لا يتبع... -- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- - RaggiTech - 01-10-12 نكمل كتابة باقي الأكود وضع خاصية التحكم في العنصر اذا كان اجباري او لا في اطار الخصائص .. كود : [color=#000000][COLOR=#0000bb]Property Mandatory[/color][color=#007700]() As [/color][COLOR=#0000bb]Booleanوضع خاصية ضبط لون خلفية العنصر اذا كان اجباري في اطار الخصائص .. كود : [color=#000000][COLOR=#0000bb]Property MandatoryColor[/color][color=#007700]() As [/color][COLOR=#0000bb]Color-- إنشاء عناصر تحكم مخصصة لنظام ويندوز -- - RaggiTech - 01-10-12 وضع خاصية ضبط لون خلفية العنصر عند التنشيط في اطار الخصائص .. كود : [color=#000000][COLOR=#0000bb]Property EnterFocusColor[/color][color=#007700]() As [/color][COLOR=#0000bb]Colorوضع خاصية ضبط لون خلفية العنصر عند الغاء التنشيط في اطار الخصائص .. كود : [color=#000000][COLOR=#0000bb]Property LeaveFocusColor[/color][color=#007700]() As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Drawing[/color][color=#007700].[/color][COLOR=#0000bb]Colorملاحظة : نلاحظ أن الخصائص قد تم وضعها في تبويب Misc في اطار الخصائص وهذا الاختصار لعلامة التبويب يعني الخصائص المتنوعة... وسنتعر ف في الموضوع القادم على كيفية وضع الخصائص في ما يناسبها من تبويب .... |