من الممكن أن يخطر للبعض منكم فكرة استخدام نموذج واحد لأكثر من مرة في نفس التطبيق وبنفس الوقت، أو حتى استخدام أكثر من نموذج في نفس الوقت،
قد تكون هذه النماذج مرتبطة بذات الجداول، الهدف من بعضها إجراء التغيير في البيانات سواء بالإضافة أو الحذف أو التعديل، والهدف من البعض الآخر استعراض البيانات فقط، أو لأي غرض آخر...
فمثلا قد تكون الفكرة:
استخدام نموذج كشف الحساب لأكثر من زبون في وقت واحد
استخدام نموذج فاتورة ونموذج سند قبض في نفس الوقت
استخدام نموذج كشف حساب لزبون معين أثناء القيام بإصدار فاتورة له
الوصول لفاتورة معينة بالضغط على حركتها الظاهرة في كشف الحساب
والأفكار كثيرة، وجميعها تقودنا لفكرة واحدة وهي تصميم برنامج فيه من الدقة ما يمنع التداخل بين النماذج، وفيه من المرونة ما يرضى الزبون ويجنبنا تثاقله من استخدام البرنامج ومقارنته بالبرامج الأخرى، ويرحمنا من البدء بتعديل ما قمنا بتصميمه سابقا.
بداية يلزمنا هنا أن تكون نوعية النماذج المعنية بالموضوع Modless أي قابلة لأن نتخطاها لنماذج أخرى، وطبعا هذا يعتمد على الغاية من النموذج، فلا داعي مثلا لأن يكون نموذج الدخول للبرنامج Modless بل على العكس لا بد وأن يكون Modal فكيف نعطي المستخدم صلاحية الوصول للبرنامج دون أن يضع اسم المستخدم وكلمة المرور بشكل صحيح !! وهذا ينطبق على نماذج أخرى غالباً ما تكون ذات استخدام غير مباشر في البرنامج، مثل نموذج تغيير كلمة المرور، نموذج عمل نسخ احتياطية أو صيانة الجداول....
بعد أن نكون قد حددنا النماذج المرنة يلزمنا عمل شيء واحد الا وهو تحديد الـ Data Session للنموذج بجعله Private Data Session بدلا من Default Data Session
ما المقصود بــ Data Session ؟؟؟
من عمل بالفوكس برو فلا بد أنه قد رأى هذه الشاشة الصغيرة وعرف أهميتها، ولمن هو جديد فلا بد أن يعلم بأنها أحد أهم شاشات الفوكس برو، وببساطة شديدة أنها شاشة فتح واستعراض الجداول، حيث نتمكن من خلالها من إضافة السجلات، تعديل السجلات ، حذف السجلات، تكوين العلاقات المؤقتةRelations بين الجداول.... وعمل كافة ما يلزم من عمليات تخصها... بشكل مباشر
لإظهار الشاشة توجه إلى القائمة الرئيسية وأختر منها Window ثم Data Session، أو أكتب في الــ Command Window الأمر Set لتظهر لك.
النقطة المهمة هنا بالنسبة لنا هي Current Session وهي تظهر هنا بوضعها الافتراضي Default1،
وكل Session يعبر عن منطقة خاصة ومعزولة نهائياً عن الأخريات، وهنا زبدة الموضوع
جرب معي التالي :
قم بانشاء أي جدول بسيط تريده يكفي أن يكون فيه حقل واحد فقط
قم بانشاء نموذج واستخدم من خلاله هذا الجدول
غير الـ DataSession للنموذج ليصبح Private Data Session
احفظ النموذج واغلق كل شيء
أظهر شاشة الـ DataSession واستخدم الجدول من الـ Command Window
Use MyTable Shared
ستلاحظ أن الجدول قد ظهر لك في Default Session
قم بتشغيل النموذج الذي صممته وتوجه الى الـ Current Session واضغط على الـقائمة الخاصة بـه، ستلاحظ بأن لديك منطقة جديدة معنونة باسم جديد يدل على هذا النموذج، كما يظهر في الصورة التالية:
بهذا نكون وبشكل جزئي قد فصلنا بين النماذج المستخدمة تماما..كما لو أنك تستخدم جهازين على أحدهما نموذج الفاتورة وعلى الآخر نموذج كشف الحساب،
ولا أثر لأي نموذج على الأخر إلا عند إعادة استدعاء البيانات - Refresh -
ملاحظات :
- لا يمكن للنموذج أن يتعامل مع غير منطقة البيانات الخاصة به
- يمكن معرفة رقم منطقة البيانات الخاصة بكل نموذج بواسطة DataSessionID
- يمكن تفعيل منطقة البيانات بواسطة الأمر Set DataSession To
- عند اقفال النموذج فان منطقة البيانات الخاصة به تقفل تلقائياً
- عند اطلاق نموذج فرعي ذو منطقة عامة من نموذج ذو منطقة خاصة فان النموذج الفرعي يتعامل مع نفس منطقة النموذج الرئيسي
- بعض الأوامر تكون خاصة بمنطقة العمل ولا بد من إعادة تحديدها لكل منطقة مثل Deleted, Century, Exclusive, Talk, Database
( وغيرها تجدها في ملف المساعدة )
- لا يمكن اظهار غير منطقة العمل الرئيسية من خلال Command Window
وأخيرا...قد يكون موضوعها مملا في بداية الأمر ولكن ما أن تعتاد عليه حتى تجد ان برامجك أصبحت أكثر مرونة وقوة
مرفق مثال بسيط للتجربة.
مع التحية،


