03-10-12, 09:10 AM
كاتب الموضوع : silverlight
الموضوع : تطوير الكزنترول Designers اللغة المستخدمة: الفيجوال بيسك
التطبيق: فيجوال استوديو 2005 و 2008
المستوي: التقييم متروك للقارئ
إعداد: مهندس / عمر أمين إبراهيم
ماذا تعني كلمة Designers ؟
هذا سؤال مهم جدا نسأله لأنفسنا وطبعا ليس المقصود هنا أن نترجم المعني من الإنجليزية الي العربية عموما لكي نجيب علي السؤال فالإجابة ستكون كالأتي إن Designers هي همزة الوصل بين المبرمج و الكونترول بأنواعه المختلفة في مرحلة Design Time.
بشكل عام Designers يمكن استخدامها مع Windows Forms وأيضا مع Web UI
ما هي أنواع Designers ؟
هناك العديد من Designers و هي مرتبه حسب أنواعها كالأتي
ComponentDesigner Class
ControlDesigner Class
ComponentDocumentDesigner Class
ParentControlDesigner Class
ScrollableControlDesigner Class
DocumentDesigner Class
وعموما كل هذه الكلاس Classes مشتقه من بعضها البعض والأصل لجميعها هو ComponentDesigner الذي يتكون من مجموعه من Interfaces التي تمثل أصل Designers Classes
أصل Designer ؟
جميع أنواع Designers المعروفة لنا جاءت من مكان واحد فقط ألا وهو مجموعه من Interfaces وهي كالأتي
IDesigner Interface
IDisposal Interface
IDesgnerFilter Interface
ITreeDesigner Interface
IComponentInitializer Interface
IRootDesigner Interface
IToolboxUser Interface
ITypeDescriptorFilterServices Interface
ولمزيد من التفاصيل يمكن الرجوع الي Namespaces التالية
System.Windows.Forms.Design Namespace
System.ComponentModel.Design Namespace
نبذة عن الكونترول
كما تعلمون إن الكونترول له أنواع مختلفة كثيرة وكلها مشتقه من Control Class ومنها علي سبيل المثال الأنواع التالية
Control Class وهذا النوع هو ما يختص به موضوعنا عن تطوير الكونترول وهو مشتق من Component Class الذي بدوره مشتق من MarshalByRefObject Class
ScrollableControl Class وهو مشتق من Control Class
ContainerControl Class وهو مشتق ScrollableControl
ListControl Class وهو أيضا مشتق من Control Class وهذا النوع من الكونترول هو الذي تم استخدامه في بناء الكومبو بوكس ComboBox Class و أيضا ListBox Class
الفارق بين هذه Control Classes المختلفة انه قد تم عمل Implementation لبعض Interfaces أي انه قد أضيفت بعض Interfaces وبناء عليه يتم تخليق Control Class باسم جديد فقط وطبعا أنت أيضا عزيزي القارئ يمكنك أن تفعل نفس الشيء يعني ببساطه تقدر تخلق أي كلاس بأي اسم تريد وتضيف له مواصفات جديدة عن طريق استخدام Interfaces أو يدون Interfaces
أعتقد الأن أدركت عزيزي القارئ لماذا تطرقنا لمناقشة موضوع Interfaces ولإعطاء مثال عام عن موضوعنا انظر الي الكود الموجود أدناه. وفي هذا المثال قمت باستخدام Attribute وهو عبارة عن System.Windows.Forms.Design. DocumentDesigner وهذا يوضح كيفية اسخدام Designers الموجوده في System بدون اضافة اي Custom Designers واستعمالها في نصميم الكونترول.
كود :
Imports System.ComponentModel
Imports System.ComponentModel.Design
<Designer("System.Windows.Forms.Design.DocumentDesigner, System.Windows.Forms.Design.DLL", _
GetType(IRootDesigner)), *********ategory("Form")> _
Public Class MyControl
Inherits ContainerControl
Implements IArab
' Insert code here.
Public Property myProperty() As System.Drawing.Color Implements IArab.myProperty
Get
End Get
Set(ByVal value As System.Drawing.Color)
End Set
End Property
End Class 'MyForm
Public Interface IArab
Property myProperty() As Color
End Interface