أبو هادي قام بنشر يوليو 8, 2003 قام بنشر يوليو 8, 2003 السلام عليكم على سبيل المثال الكود التالي يحتوي على مجموعة أوامر وفي منتصفها أمر فتح نموذج ثم تتتابع الأوامر حتى النهاية . المطلوب : بعد أمر فتح النموذج أن يقف تنفيذ الأوامر حتى يتم إغلاق النموذج بمعنى أن لا تظهر رسالة "Hello" حتى يتم غلق نموذج1 . Sub test() ' ' DoCmd.OpenForm "نموذج1" '-- المطلوب توقف الكود حتى يتم غلق النموذج المفتوح أعلاه نموذج1 MsgBox "Hello" ' ' ' End Sub تحياتي . 1
محمد طاهر عرفه قام بنشر يوليو 8, 2003 قام بنشر يوليو 8, 2003 السلام عليكم مؤقتا أحد الحلول ،و ان كان لا يبدو جيدا :SHY: هو الاعلان عن متغير عام من نوع نعم لا و فى بداية الروتين الفرعي نكتب اذا كان امتغير = نعم اذهب الي ما بعد فتح الفورم و فى حدث فتح النموذج نجعل قيمة المتغير = نعم و عند غلقه نستدعي الروتين الاصلي مع الاعلان عن Myvar كمتغير عام Sub test() If Myvar= True then go to xxx ' DoCmd.OpenForm "Form1" xxx: Myvar = False MsgBox "Hello" ' ' ' End Sub Private Sub Form1_close(Cancel As Integer) Myvar = True ' ' ' Call test End Sub مع تحياتي
أبو هادي قام بنشر يوليو 9, 2003 الكاتب قام بنشر يوليو 9, 2003 السلام عليكم شكرا أخي محمد طاهر .. الفكرة جميلة وتحل المشكلة لو كان الأمر بشكله الموضح ثابت لا يتبدل ولكن لن تكون فعالة معي لرغبتي في فتح النموذج بشكل متعدد ومن مواقع متعددة فمثلا قد احتاج في الكود أعلاه أن أطلب نموذج1 أكثر من مرة في إجراء test وقد أطلبه كذلك من modules أخرى . تحياتي .
محمد طاهر عرفه قام بنشر يوليو 9, 2003 قام بنشر يوليو 9, 2003 قد يصلح فى هذه الحالة أن يكون المتغير من نوع Byte و تختلف نقطة الاعادة بحسب قيمته بمعني انه حينما أفتح النموذج من موديول رقم 1 ، يتم تعيين قيمة = 5 مثلا للمتغير و بذلك عند غلق النموذج ، أعرف من اين استدعيته بناء علي قيمة المتغير و عند استدعاء النموذذج من موديول رقم 2 تكون القيمة 6 ، و هكذا ... Sub test() If Myvar<> 0 then go to xxx Myvar = 5 DoCmd.OpenForm "Form1" xxx: Myvar = 0 MsgBox "Hello" ' ' ' End Sub Private Sub Form1_close(Cancel As Integer) ' ' ' if Myvar = 5 then Call test if Myvar = 6 then Call test1 if Myvar = 7 then Call test2 if Myvar = 8 then Call test3 End Sub مع تحياتي
أبو هادي قام بنشر يوليو 9, 2003 الكاتب قام بنشر يوليو 9, 2003 السلام عليكم الأخ محمد طاهر .. الحقيقة سر الموضوع كله والذي كنت لا أرغب البوح به حاليا هو عمل صندوق رسائل عربي من تصميمي كاملا ولكن يبدو أن الأمور تتحسن بالنسبة لموضوع صندوق الرسائل العربي ArbMsgBox السابق وعليه سوف أتوقف عن هذا المشروع حاليا . لقد كانت الفكرة هي كصندوق الرسائل بعد مناداته فهو يحتكر النظام حتى يقفل ويرجع قيمة الزر . تحياتي .
أبو هادي قام بنشر أغسطس 15, 2003 الكاتب قام بنشر أغسطس 15, 2003 (معدل) السلام عليكم الأخ الكريم محمد طاهر والأخوة الكرام .. لقد توصلت للحل وكان الحل أمامنا ولكن لم ننتبه له وكان هناك إصرار داخلي أن الحل موجود حيث أنه من غير المنطقي أن لا تكن هذه الميزة موجودة مع كل التقدم الهائل في عالم البرمجة ، وهذا ما جعلني أن أواصل البحث والتجارب حتى وقعت على الحل كما هو موضح أدناه : DoCmd.OpenForm "Form1", , , , , acDialog والحل هو اختيار الـ WindowMode إلى acDialog . طبعا هذا سوف يكون حافزا كبيرا لي لمواصلة عمل صندوق رسائل عربي مميز بإذن الله تعالى . ولكم تحياتي جميعا . تم تعديل أغسطس 15, 2003 بواسطه أبو هادي
محمد طاهر عرفه قام بنشر أغسطس 16, 2003 قام بنشر أغسطس 16, 2003 بصراحة ، مفاجأة و لم أتصور أن الكود سيكمل بعد اغلاق الفورم الثاني :yess: جزاك الله خيرا علي المعلومة المفيدة :d
الردود الموصى بها