نبهني أحد الزملاء الأعزاء لنقطة تخص النماذج Forms قد أكون غفلت عنها ولم أتطرق لها، وقد لا يعلم بها المبتدئين أو لم يتمكنوا منها، لذا سنتكلم عنها قبل المضي في التحدث
عن الــ Class كون الالمام بها من ضروريات الاستفادة من الـ Class على أحسن وجه.
كما تعلمون فان لكل نموذج جديد مجموعة ثابتة من الخصائص Properties ومجموعة من الاجراءات Methods طبعا يتم الاستفادة منها حسب ما هو مطلوب من النموذج ان
يقدم لنا لذا لن نتكلم عنها هنا بشكل مباشر.
وطبيعي ان يتطلب منا أي برنامج استدعاء اجراء معين او تخزين قيمة معينة للرجوع لها لاحقا، فكيف نتصرف مع هذا الموقف وخاصة اذا كان هذا الاجراء او القيمة المطلوبة لن
تستخدم سوى في هذا النموذج، هنا لا بأس أن اقوم بانشاء برنامج صغير لحل المشكلة فهذا تصرف صحيح.
ولو كان لدي 10 نماذج لكل نموذج اجراءات مختلفة وقيم واجبة التخزين للرجوع اليها، بامكاني ايضا حل المشكلة بانشاء برنامج مرتبط بكل نموذج، أو انشاء برنامج واحد
أخزن فيه كافة الاجراءات أستدعي منه ما أريد وقتما أريد وهذا التصرف صحيح ايضا.
اذن كيفما تصرفت المهم صحة النتيجة.
ولكن ماذا لو تطلب كل نموذج من اجراء واحد الى عدد لا محدود من الاجراءات، بالتأكيد سنبدأ بشد شعرنا للمتاهة التي سندخل فيها..ان لم يكن عاجلا فلا بد أن يكون آجلا...خاصة عند محاولة
تعديل شيء في نموذج معين قمت بتصميمه قبل سنة او سنتين وله 5 اجراءات مرتبطة أو أكثر، وتعال نتذكر وقتها الية العمل ومكان التخزين وووووووو قصة حزينة.
اذا ما هوالبديل الافضل؟؟؟
انه استخدام نفس النموذج لتخزين ما اريد من اجراءات او قيم، حيث يوفر الفوكس برو هذه الامكانية فلماذا لا استغلها افضل استغلال،،
وكمثال بسيط على ذلك دعونا نفترض بان علينا انشاء Procedure معين يقوم بتخزين عدد المرات التي قمنا بها بالضغط على CommandButton معين:
يلزمنا هنا انشاء Method جديد ولنسميه ClickCount
ويلزما انشاء Property جديد ولنسميه lnCount
نبدأ بانشاء نموذج جديد، ثم نتوجه للقائمة الرئيسية ونختارمنها Form ومنها نختار Edit Property/Method
ستظهر لنا شاشة تحتوي على كل ال Methods و الـ Properties المضافة للنموذج
نختار منها New Method ونحدد اسمها المطلوب وهو هنا ClickCount
ثم نختار New Property ونحدد اسمها المطلوب وهو هنا lnCount، ونحدد قيمتها بالصفر كما هو ظاهر بالصورة
الان نضع Commandbutton في النموذج، ونكتب في اجراء Click الامر التالي:
thisform.ClickCount()
ثم نختار من النموذج الاجراء ClickCount بنفس طريقة اختيار أي اجراء عادي ونكتب فيه الكود التالي :
thisform.lnCount=thisform.lnCount+1 thisform.Command1.Caption=ALLTRIM(STR(thisform.lnCount))
وهكذا فكل ضغطة على CommandButton ستستدعي الاجراءClickCount والذي سيقوم بدوره بزيادة قيمة lnCount بمقدار 1 وتغيير
CommandButton.caption حسب القيمة الجديدة
جرب الان ولاحظ النتيجة،
طبعا هذه الاوامر بسيطة وقد نضعها مباشرة في اجراء الـ CommandButton وننهي
الموضع، ولكنها مثال توضيحي فقط،
حيث تتجلى فائدة كل ما سبق في عدة امور منها:
- كتابة الاجراء مرة واحد فقط وامكانية استدعاؤه من حيثما شئنا
- حصر كافة مستلزمات النموذج من اجراءات وخصائص ضمن نطاق النموذج نفسه
- ان استدعاء الـ Method يتم بأمر واحد، فبدلا من ان اعدل مجموعة من الاوامر المكررة في اكثر من مكان، فكل ما يلزمني هنا هو تعديل الـ Method نفسها ولمرة واحدة فقط
- ان استخدام خاصية Properties تقلل من اضطرارنا لاستخدام المتغيرات، بالاضافة الى قوة فاعليتها بشكل عام
وللمزيد حول النماذج اطلع على باب النماذج للاخ عبدالمنعم محمد عبدالخالق ففيها الكثير من الفائدة
والعفو ان اطلت ولكن لتوضيح الصورة.
مع التحية
