MS.Programmer
Nov 19 2003, 11:16 PM
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
لعل الكثير من أهل العلم لديه خبرة في كتابة العناصر و لكن لا يملك الوقت الكافي لشرحها و لأاني متفرغ بعض الشيئ و أحب كتابة العناصر أحببت أن أبحر في هذا المجال و إياكم لتعم الفائدة علينا جميعا.
و لا يظن أحدكم أني خبير في كتابة العناصر أو أني أنصب نفسي أستاذا لا لا و الله فأنه يوجد في هذا المنتدى من عمالقة البرمجة ما يجعلني أضيع بينهم و إن أي واحد منهم أحق بكتابة الموضوع مني
و لكن للأسباب التي ذكرتها أبدأ بسم الله :
و لكن قبل أن أبدأ يرجى منكم طرح إستفساراتكم و التصحيح إن أخطأت و لقد إعتمدت على DG.Pdf
الذي يأتي مع الدلفي
المكونات و الأصناف :
لأن المكونات هي أصناف فإن كتابة المكونات تعمل مع الكائنات عند مستويات مختلفة لمطوري التطبيقات.
إنشاء مكون جديد يتطلب منك إشتقاق صنف جديد
بلإختصار هناك إختلافين رئيسيين بين إنشاء المكونات و إستخدامها في التطبيقات و هي :
1- يمكن الوصول لأجزاء من الصنف غير مسموحة لمبرمجي التطبيقات .
2- إضافة أجزاء جديدة مثل الخصائص لمكوناتك.
و بسبب هذين الإختلافين تحتاج لأن تكون واع و مدرك لإصطلاحات أكثر و تقكر كيف مطوري البرامج سوف يستخدمون المكونات التي قد كتبتها.
كيف تنشىء العناصر :
المكون يشبه إلى حد كبير أي عنصر من عناصر البرنامج الذي تغير و تعدل و تعالج في خصائصه في
وقت التصميم.
إنشاء مكون يعني إشتقاق صنف جديد من صنف موجود , حيث يمكنك إشتقاق مكون جديد من أي مكون موجود من المكونات القياسية مثلا
لكن الطرق الشائعة لإنشاء مكون هي
1- نعديل مكونات موجودة مثل TButton
2- إنشاء مكونات نافذية أي ذات نوفذ مثل TEdit
3- إنشاء مكونات رسومية مثل TGraphicControl
4- إنشاء مكونات نافذية كأصناف فرعية مثل أي نافذة تظهر من الخصائص
5- إنشاء مكونات غير مرئية مثل TTimer
تعديل مكونات موجودة :
إن أبسط طريقة لإنشاء مكون هي تخصيص مكون من المكونات الموجودة حيث يمكنك إشتقاق مكون من أي مكون موجود في دلفي
مثل ListBox و Grid و في هذه الحالة مكتبة العناصر VCL تزودنا بأصناف مجردة و تبدأ بكلمة Custom مثل TCustomGrid يمكنك الإشتقاق منها لإنشاء شبكة مخصصة لك.
على سبيل المثال :
ربما تريد إنشاء ListBox خاصة بك و التي لا تحتوي بعض الخصائص الموجودة في listbox العادية
في هذه الحالة لا يمكنك الإشتقاق من TListBox لأنه لا يمكنك إخفاء خصائص موجودة أو منشورة و أو انك ستلجاْ إلى بناءه من الصفر بكافة خصائصه و وظائفه هو الطريق الأصعب.
الحل:
ماعليك إلا أن تشتق من الصنف المجرد لل TListBoxt و هو أعلى منه بدرجة أو أب له و هو TCustomListBox و الذي يزودنا بكافة خصائص و وظائف الListBox لكنها غير منشورة و بهذا يمكنك نشر ما تريد من الخصائص و ترك البقي محمي
.
ORWA
Nov 20 2003, 12:32 AM
أحسنت ms programmer إن موضوعك شيق جدا ورائع ,
وقد أعجبتني جدا فكرة طرح موضوع تعلم كتابة العناصر .
خاصة وأن مبرمجي ديلفي يقسمون إلى قسمين :
مطوري تطبيقات (Application developer) و كتاب عناصر (Components Writers) ..
ومعظم الناس في الوطن العربي يهتمون في الجزء الأول فقط ,
أنا أعمل الآن على كتابة مجموعة عناصر جديدة خاصة بي
كما أني سوف أبدأ بتعديل مجموعة عناصر خاصة بالبرمجة ثلاثية الأبعاد على دلفي .
وأظن أن في ذلك متعة حقيقية , ومعرفة بالبرمجة الحقيقية الأصلية ..
وفقك الله يا أخي , إستمر في الدروس ولو على مهل , المهم أن تكون المواضيع شاملة ومفيدة وخالية من الأخطاء , وإن شاء الله نساعدك في ذلك ويساعدنا بقية الأعضاء المضطلعين ..
MS.Programmer
Nov 24 2003, 02:33 AM
السلام عليكم ها نحن من جديد
الشكر الجزيل لجميع الأخوة المتابعين و نرجوا منهم المتابعة و التعليق و المساعدة إن لزم.
نرجو المعذرة إن كان هناك ترجمة ركيكة .
سوف يكون الدرس مملاً بعض الشيء و لكن إن شاء الله من جد وجد و من سار على الدرب وصل.
إنشاء عناصر نافذية:
العناصر النافذية في مكتبة العناصر المرئية هي كائنات تظهر في وقت التشغيل و التي تمكن المستخدم من التفاعل معها. كل نافذة لها مقبض نافذة (handle) يمكننا الوصول إليه من خلال الخاصية Handle و التي يعرفها نظام التشغيل أي يعطيها قيمة إن الهاندل تسمع للنافذة بإستقبال التفعيل Focus و يمكن تمريرها لتوابع Api للويندوز
كل العناصر النافذية تنحدر تحت TwinControl هذا يتضمن معظم العناصر النافذية القياسية مثل Buttons و Listbox و edit boxs .
إذاً يمكنك إشتقاق مكون مبتكر مباشرة من TwinControl .
إن دلفي تزودنا بمكون TcustomControl خصيصاً لهذا الغرض حيث أن هذا المكون هو نافذة مخصصة التي تمكننا بسهولة من رسم صور مرئية معقدة.
إنشاء مكونات رسومية :
إذا كان المكون لا يقبل التفعيل (Focus ) يمكنك جعله مكون رسومي . حيث أن المكونات الرسومية هي مكونات مشابهة للمكونات النافذية و لكن ليس لديها Handle و لهذا يتستهلك موارد نظام أقل .
إن مكون مثل Tlable الذي لا يقبل التفعيل مثلا يمكنك أن تجعله يتقبل رسائل الماوس.
إن دلفي تدعم إنشاء مثل هذه العناصر من خلال المكون TgraphicControl
حيث أن هذا المكون هو صنف مجرد مشتق من Tcontrol.
ولكن الأفضل أن تبدأ بالإشتقاق من TgraphicControl المزود بلوحة رسم Canvas تمكنك من الرسم على النافذة تعالج برسائل WM_PAPINT و كل ما تحتاجه فقط أن تجتاز (Override) منهج الرسم Paint .
الأصناف الفرعية النافذية :
في برمجة النوافذ التقليدية , أنت تنشىء مكون مخصص بتعريف صنف نافذة جديد و تسجيله مع النوافذ.
إن صنف النافذة مشابه لكائنات أو أصناف في البرمجة غرضية التوجه حيث يمكنك أن تبني نافذة بالإعتماد على نافذة موجودة و التي تدعى صنف فرعي ثم تضع عنصرك في مكتبة ربط ديناميكي dll المشابهة كثيرا لنوافذ الويندوز ثم تزودها بواجهة لها.
كمثال على تقنية الأصناف الفرعية Tedit
إنشاء مكونات غير مرئية:
كمثال عليها TDatabase و TTimer و TDialogs
و تشتق مباشرة من الصنف Tcomponent وهو الصنف المجرد الأساس لكل المكونات.
و إن شاء الله سنستمر
MS.Programmer
Nov 30 2003, 09:52 PM
سلام عليكم و بعد
ما الذي يحصل في العنصر :
لتجعل عناصرك أجزاء موثوق بها في بيئة دلفي تحتاج للتبع إتفاقيات و أعراف محددة في تصميمك و التي تناقش صمن المواضيع التالية :
1- إزالة الإعتمادت.
2- الخصائص و المناهج و الأحداث.
3- التغليف الرسومي.
4- التسجيل في لوحة العناصر.
إزالة الإعتمادات (Removing Dependencies) :
إن واحدة من الخاصيات التي تجعل العنصر صالح للإستعمال عند غياب القيود هو ما الذي يمكن أن يفعله عند كل نقطة في كوده.
بطبيعه العناصر أنها تندمج و تتحد مع التطبيق بإتحاد متغير من حيث الأوامر و السياق. يمكنك تصميم عنصر لتوظيفه في أي حالة دون شروط مسبقة عليك.
كمثال ممتاز عن إزالو الإعتمادات هو خاصية الهاندل (Handle Property) في الصنف TwinControl. إذا كتبت تطبيق ويندوز يجب أن تعلم أن واحد من معظم الصعوبات و الأخطاء التي تحصل في وقت التشغيل هو أنه لا يمكنك الوصول إلى النافذة أو العناصر التي عليها حتى يتم إنشاء أو خلق النافذة بإستدعاء تابع Api و هو CreateWindow .
إن دلفي تخفف على مستخدميها فيما يتعلق بهذا الشأن بضمان الهاندل للنافذة الفعالة دوما متاح عندما نحتاج إليه, حيث تفحص النافذة هل هي منشئة أم لا و ذلك بفحص الهاندل إذا كان موجود أم لا فإذا كان غير موجود يتم إنشاء النافذة و توليد الهاندل .
و بإزالة مهمات خلفية مثل إنشاء النافذة عن عاتق المستخدم , أصبحت كتابة العناصر تسمح للمطورين بالتركيز على وظيفة العنصر بالضبط و توفر عليهم الوقت أيضا من حيث التكرار و المشاق .
الخصائص و المناهج و الأحداث :
الخصائص :
تعطي الخصائص إمكانية لمطوري البرامج بتعديل و قراءة قيم المتحولات فقط , بينما لكاتبي العناصر تسمح لهم بإخفاء مقطع البيانات أو تنفيذ معالجة خاصة عندما يتم الولوج للقيم.
هناك عدة ميزات للإستخدام الخصائص :
1- الخصائص متاحة في وقت التصميم , مطوري البرامج يمكن يغيروا في الخصائص دون كتابة كود.
2- يمكن للخصائص أن تفحص القيم أو شكل أو طريق الإدخال التي يدخلها مطوري البرامج فتجعل بذلك الإدخال شرعي أو غير شرعي في وقت التصمبم و بهذا تمنع الأخطاء في وقت التصميم.
3- العنصر يمكن إنشاء القيم المناسبة عند الحاجة إليها و بهذا يقلل من أخطاء المبرمجين مثل إسناد قيم لمتحول لم يتم خلقه بعد.
4- الخصائص تسمح لك بإخفاء البيانات خلف واجهة بحيث يمكنك تعديل معلومات الخصائص دون أن يكون هذا التغيير مرئي لمطوري البرامج.
الأحداث :
الأحداث هي خصائص خاصة تتضمن كود يستجيب لفعاليات أخرى في وقت التشغيل , الأحداث تسمح لمطوري البرامج لربط كتلة معينة من الكود مع حدث معين في وقت التشغيل مثل أحداث الماوس و ضربات لوحة المفاتيح
إن الكود الذي يتم تنفيذه عند أي حدث يحصل يدعى محرض الحدث event handler.
إن الأحداث تسمح لمطوري البرامج لإستجابات خاصة عند أنواع مختلفة من الإدخال دون التصريح عن عنصر جديد.
المناهج :
و هي عبارة عن توابع و إجراءات تعمل على صنف معين على سبيل المثال إجراء الإنشاء Create لكل عنصر.
مطوري البرامج يستخدمون المناهج لتوجيه العنصر ليقوم بأعمال معينة أو ليرد قيم غير موجودة بالخصائص.
و بسبب أنها تحتاج كود ليتم تنفيذه فهي لا تعمل إلا في وقت التشغيل.
و المناهج مفيدة لعدة أسباب و هي :
1-المناهج تغلف وظائف العنصر في نفس الكائن الذي يحتوي على البيانات.
2-يمكن للمناهج أن تخفي إجراءات معقدة تحت واجهة منسقة مبسطة . فمطوري البرامج على سبيل المثال يستخدمون المنهج AlignControl دون أن يعرفوا كيف يعمل هذا المنهج و إختلافه مع إختلاف العناصر.
3- المناهج تسمح بتعديل عدد من الخصائص بستدعاء واحد لها.
التغليف الرسومي :
إن دلفي تبسط رسوميات النوافذ بتغليف أدوات رسومية متنوعة مثل Canvas و التي يمكننا من خلالها الرسم على سطح أي نافذة أو عنصر .
هي تحتوي على أصناف أخرى مثل Pen و Brush و Font و هي تشبه النافذة .
فبدلفي لترسم على الفورم أو أي عنصر يمكنك الولوج إلى Canvas للعنصر و تخصيص ال pen و Brush بتعديل مثلا على ال Color أو Style .
فإستخدامك لل Canvas هو أبسط و أسرع .
تسجيل العنصر :
قبل أن تنصب عنصرك في دلفي IDE يجب تسجل عنصرك و ذلك بإخبار دلفي بمكان العنصر في لوحة المكونات.
naime
Aug 2 2005, 11:34 PM
اشاء الله أن نجد في عالمنا العربي من يقرء و يعالج مثل هده الامور
احب فقط تنبيه أخي العزيز الى اتباع منهج علمي في تقديم الدروس لأنك قلت كل شي في كلمات ربما الإخوة تختلط عليهم ...خاصة في Handle و مامعناه و متى نحتاج الى مكون يحتوي عليه
2- ليست كل المكونات المشتقة من TWINCONTROL لها مكون TCANVAS
مثل TBUTTON مثلا و ليست لها الدالة Paint و لا يكفي استقبال الخبر WM_Paint لاعادة رسمها
3- من أين نشتق المكون و من أي درجة اشتقاق نبدأ
أرجو أن يبدأ الإخوة من TgraphicControl لانها سهلة
ثم TCustumControlثانيا لانه يحتوي على Handle ; Paint ; TCanvas
و في الأخير اعادة اشتقاق TBUTTON وكيف ربطه ب CANVAS
و كيفية رسمه باعادة تحويل paintwindow DC---->Canvas.Handle
هده رسوم أقلام يمكن أخدها بعين الإعتبار في تطوير المكونات المرئية
أما غير الكرئية فهو شي اخر
naime
Aug 2 2005, 11:40 PM
بالنسبة لمن يريد تشغيل تطبيقه بدون ويندوز
ويندوز هو نظام تشغيل أي بدون نظام تشغيل لا نستطيغ تشغيل اي تطبيق
ادا كنت تريد تشغيل برنامجك في بيئة dos عليك باستعمال application consoleأو أي Compiler يشتغل تحت Dos ليس Windows مثلا Pascal 7.0 أو Borland C++ 4.5
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء
إضغط هنا.