بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
لعل الكثير من أهل العلم لديه خبرة في كتابة العناصر و لكن لا يملك الوقت الكافي لشرحها و لأاني متفرغ بعض الشيئ و أحب كتابة العناصر أحببت أن أبحر في هذا المجال و إياكم لتعم الفائدة علينا جميعا.
و لا يظن أحدكم أني خبير في كتابة العناصر أو أني أنصب نفسي أستاذا لا لا و الله فأنه يوجد في هذا المنتدى من عمالقة البرمجة ما يجعلني أضيع بينهم و إن أي واحد منهم أحق بكتابة الموضوع مني
و لكن للأسباب التي ذكرتها أبدأ بسم الله :
و لكن قبل أن أبدأ يرجى منكم طرح إستفساراتكم و التصحيح إن أخطأت و لقد إعتمدت على DG.Pdf
الذي يأتي مع الدلفي
المكونات و الأصناف :
لأن المكونات هي أصناف فإن كتابة المكونات تعمل مع الكائنات عند مستويات مختلفة لمطوري التطبيقات.
إنشاء مكون جديد يتطلب منك إشتقاق صنف جديد
بلإختصار هناك إختلافين رئيسيين بين إنشاء المكونات و إستخدامها في التطبيقات و هي :
1- يمكن الوصول لأجزاء من الصنف غير مسموحة لمبرمجي التطبيقات .
2- إضافة أجزاء جديدة مثل الخصائص لمكوناتك.
و بسبب هذين الإختلافين تحتاج لأن تكون واع و مدرك لإصطلاحات أكثر و تقكر كيف مطوري البرامج سوف يستخدمون المكونات التي قد كتبتها.
كيف تنشىء العناصر :
المكون يشبه إلى حد كبير أي عنصر من عناصر البرنامج الذي تغير و تعدل و تعالج في خصائصه في
وقت التصميم.
إنشاء مكون يعني إشتقاق صنف جديد من صنف موجود , حيث يمكنك إشتقاق مكون جديد من أي مكون موجود من المكونات القياسية مثلا
لكن الطرق الشائعة لإنشاء مكون هي
1- نعديل مكونات موجودة مثل TButton
2- إنشاء مكونات نافذية أي ذات نوفذ مثل TEdit
3- إنشاء مكونات رسومية مثل TGraphicControl
4- إنشاء مكونات نافذية كأصناف فرعية مثل أي نافذة تظهر من الخصائص
5- إنشاء مكونات غير مرئية مثل TTimer
تعديل مكونات موجودة :
إن أبسط طريقة لإنشاء مكون هي تخصيص مكون من المكونات الموجودة حيث يمكنك إشتقاق مكون من أي مكون موجود في دلفي
مثل ListBox و Grid و في هذه الحالة مكتبة العناصر VCL تزودنا بأصناف مجردة و تبدأ بكلمة Custom مثل TCustomGrid يمكنك الإشتقاق منها لإنشاء شبكة مخصصة لك.
على سبيل المثال :
ربما تريد إنشاء ListBox خاصة بك و التي لا تحتوي بعض الخصائص الموجودة في listbox العادية
في هذه الحالة لا يمكنك الإشتقاق من TListBox لأنه لا يمكنك إخفاء خصائص موجودة أو منشورة و أو انك ستلجاْ إلى بناءه من الصفر بكافة خصائصه و وظائفه هو الطريق الأصعب.
الحل:
ماعليك إلا أن تشتق من الصنف المجرد لل TListBoxt و هو أعلى منه بدرجة أو أب له و هو TCustomListBox و الذي يزودنا بكافة خصائص و وظائف الListBox لكنها غير منشورة و بهذا يمكنك نشر ما تريد من الخصائص و ترك البقي محمي
.