منتصر الانسي قام بنشر الثلاثاء at 17:40 قام بنشر الثلاثاء at 17:40 اعرض الملف أداة إنشاء مجموعات الخيارات المخصصة {سلسلة الأدوات المساعدة المخصصة} من منا لم يواجه عند تصميم تطبيق ما لحالات تتوقف على إستجابة المستخدم لتوجيه سير العمل بإتجاه مختلف عن الآخر وأغلب هذه الحالات نستخدم فيها مربع الحوار MsgBox فنطلب منه مثلاً الرد بنعم أو لا أو موافق أو إلغاء الأمر .... إلخ حسناً ماذا لو واجهت حالات تتطلب أكثر من ثلاثة خيارات مثلاً وأريد أن تكون هذه الخيارات مكتوبة بشكل صريح فسيكون من الصعب إستخدام MsgBox فنحن سنكون محكومين بمسميات الأزرار الإفتراضية والتي قد لا تعبر عن المطلوب بطريقة صحيحة صحيح أنه يمكننا إستخدام أداة مربع حوار المهام TaskDialog لنحصل على النتيجة المطلوبة وأحسن ولكن قد يرى البعض أنه ليس بحاجة لإستخدامها لأي سبب من الأسباب وسيفضل أن يقوم بإنشاء نموذج مخصص لهذه الحالة فقط ... حسناً وماذا إذا إحتاج إلى قائمة خيارات أخرى؟ عندها سيضطر إلى إنشاء نموذج ثاني وثالث ... وهكذا لكل ما سبق أقدم لكم اليوم أداة أعتبرها من الأدوات المثيرة للإعجاب وذلك لأنها رغم بساطتها إلا أنها تقدم خدمة لاغنى عنها بل وتوفر علينا الكثير من الوقت والجهد ولبساطتها لم أحتاج إلى كتابة أي تعليمات لشرح طريقة عملها فكل ماهو مطلوب هو تعبئة بعض مربعات النص فقط ويمكن مشاهدة النتيجة مباشرة وعند الإنتهاء يتم النقر على زر النسخ ولصق الكود في أي حدث تريد ... هذا كل شيء ماعليك إلى أن تكمل التعليمات البرمجية المترتبة على نتيجة التحديد وكما تعودنا ستجدون في المرفقات ملفي أكسس الأول بإسم القالب ويحتوي على نموذجين ووحدة نمطية والحقيقة أنك لست بحاجة إلا إلى نموذج واحد إلى جانب الوحدة النمطية في النسخ النهائية (وهما ماستجدونهما في النسخة التوضيحية) أما نموذج منشئ صيغة أمر الإستدعاء فلن تحتاجه إلا خلال التطوير وهنا يجب علي أن أتقدم بألشكر للأخ العزيز @Foksh والذي دائماً ما يتحفنا بهدايا تقدم في ظاهرها وظائف رئيسية وفي باطنها تقدم وظائف أخرى فرعية أو مخفية لاتقل في أهميتها عن الوظيفة الأساسية التي تقدمها الأداة ومن ضمن هذه الهدايا المخفية كانت وظيفة تحويل أي تطبيق إلى وظيفة إضافية Add-in لذا فقد قمت بإستخدام الكود الخاص به لمنح إمكانية حفظ الأداة كوظيفة إضافية ليمكن للجميع الإستفادة من الإداة في جميع تطبيقات أكسس دون الحاجة إلى إستيراد نموذج منشئ صيغة أمر الإستدعاء ملف أكسس الآخر فهو بإسم (النسخة التوضيحية) وستجدون فيه بعض الأمثلة لطريقة الإستفادة من الأداة (أحد الأمثلة أعتبره هدية بحد ذاته) ملاحظة مهمة : أرجو قراءة التعليقات المرفقة بالكود الخاص بكل زر أمر لكل مثال فستجدون فيها توضيح لكل إجراء في الأخير أرجو أن تنال الأداة إعجابكم وأن تجدو فيها الفائدة في أعمالكم وإذا كان لدى أي أحد أي إستفسار أو ملاحظة فلا يبخل علينا بها تحياتي صاحب الملف منتصر الانسي تمت الاضافه 09/01/26 الاقسام قسم الأكسيس 1 1
Moosak قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات شكرا لك أخي منتصر 🙂 وهذه رائعة جديد من روائعك .. 👍 جربتها .. وما عندي أي ملاحظة .. عمل متقن ماشاء الله .. وفقك الله وأحسن الله إليك .. في ميزان حسناتك .. 🌹 1
منتصر الانسي قام بنشر منذ 3 ساعات الكاتب قام بنشر منذ 3 ساعات 5 ساعات مضت, Moosak said: شكرا لك أخي منتصر 🙂 وهذه رائعة جديد من روائعك .. 👍 جربتها .. وما عندي أي ملاحظة .. عمل متقن ماشاء الله .. وفقك الله وأحسن الله إليك .. في ميزان حسناتك .. 🌹 شكراً أستاذ موسى دائماً ترفع مغنوياتي أولاً بتثبيتك لكل أداة أقوم برفعها وثانياً لردودك التي تجعلني أطمئن بأنها تعمل بنجاح أتمنى أن تكون وجدت إستخداماتها ذات فائدة لإستخدامها ضمن تطبيقاتك 1
Moosak قام بنشر منذ 2 ساعات قام بنشر منذ 2 ساعات 21 دقائق مضت, منتصر الانسي said: أتمنى أن تكون وجدت إستخداماتها ذات فائدة لإستخدامها ضمن تطبيقاتك نعم أخي منتصر ، في بالي عدة مواضع لاستخدام هذه الأداة في تطبيقاتي 🙂 .. هي أقرب للرسائل الخاصة بحيث يمكنك تخصيص الأزرار بشكل أوسع بدل الأزرار المحددة [نعم - لا - إلغاء الأمر] .. والأمثلة التي وضعتها أنت تفتح الكثير من الأفكار 😎👌 1
منتصر الانسي قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه كان عندي نقطة واحدة لم أحسم قراري فيها ووددت لو تشاركني أنت وبقية الأعضاء في إتخاذ القرار بشأنها هل تعتقد أن عشرة خيارات كافية كحد أقصى أم تفضل لو كانت أكثر؟ وإذا كان كنت تفضل زيادتها فكم تقترح أن يكون؟
Foksh قام بنشر منذ 51 دقائق قام بنشر منذ 51 دقائق بدايةً ، ما شاء الله على الأفكار الجميلات النيرات هذه أخي @منتصر الانسي عمل جميل ومفيد جداً ما تقدمت به ، ودائماً تتحفني بأفكارك التي أعتبرها هي الكون خارج الصندوق . خطر ببالي نقطة قد تكون ذات وضوح أكثر إن تمت . وهي :- في القالب والذي سيعتبر كأداة Adds-in مدمج ، عند انشاء الأكواد ونسخها ، تنتج بهذا الشكل كمثال :- Call OpenCustomOptions("خيارات المستخدم" _ , "الخيار الأول" _ , "الخيار الثاني" _ , "الخيار الثالث" _ , "الخيار الرابع") والمستخدم العادي - مع احترامي للجميع طبعاً - قد يضطر للرجوع الى أمثلة كي يتعرف على آلية ربط الحدث مع كل خيار تم انشاؤه . وهنا سيلاحظ أن الأحداث هي - كمثال مقتبس من ملفات المشروع :- Select Case intResult Case Is = 1 DoCmd.OpenForm "frm01" Case Is = 2 DoCmd.OpenForm "frm02" Case Is = 3 DoCmd.OpenForm "frm03" Case Is = 4 DoCmd.OpenForm "frm04" End Select فكانت فكرتي لك إن كانت ممكنة هي بإضافة التوضيح لكيفية الإستدعاء إلى الكود الذي يتم انشاؤه من الزر cmdCopy . أرجوأن أكون قد وُفقت في توضيح الفكرة التي تدور في رأسي . 1
Moosak قام بنشر منذ 25 دقائق قام بنشر منذ 25 دقائق منذ ساعه, منتصر الانسي said: هل تعتقد أن عشرة خيارات كافية كحد أقصى أم تفضل لو كانت أكثر؟ مبدئيا أراها كافية 🙂🖐 26 دقائق مضت, Foksh said: كانت فكرتي لك إن كانت ممكنة هي بإضافة التوضيح لكيفية الإستدعاء إلى الكود الذي يتم انشاؤه من الزر cmdCopy . فعلا أتفق مع هذا الرأي وقد خطر على بالي أيضا .. 🙂 ومن الأفكار التي خطرت في بالي أيضا هو تحويل الإجرائية OpenCustomOptions إلى دالة Function ترجع القيمة المختارة مباشرة هكذا مثلا : Public Function OpenCustomOptions(ParamArray strOptions()) As Integer Dim DocName As String, OpArg As Variant Dim strCode As String strCode = strOptions(0) Dim i As Integer For i = 1 To UBound(strOptions()) If strOptions(i) <> vbNullString Then strCode = strCode & "," & strOptions(i) Next i OpArg = strCode DocName = "frmCustomOptions" DoCmd.OpenForm DocName, , , , , acDialog, OpArg OpenCustomOptions = intResult End Function وبهذا يمكن إسناد القيمة الراجعة مباشرة إلى الكود أو إلى متغير (أراها أسهل هكذا .. حالها حال الدالة MSGBOx المدمجة) : Private Sub cmd01_Click() Dim Result As Integer Result = OpenCustomOptions("حدد النموذج الذي تريد فتحه" _ , "نموذج إدخال البيانات" _ , "نموذج تعديل البيانات" _ , "نموذج إستعراض البيانات" _ , "نموذج تحديد معايير تصفية التقارير") 'سنستخدم قيمة المتغير الذي سيحتفظ برقم الخيار المطلوب Select Case Result Case Is = 1 DoCmd.OpenForm "frm01" Case Is = 2 DoCmd.OpenForm "frm02" Case Is = 3 DoCmd.OpenForm "frm03" Case Is = 4 DoCmd.OpenForm "frm04" End Select End Sub ولكن انتبهت لاحقا أن النموذج يرجع قيمتين intResult و strResult .. فتراجعت عن الإفصاح عن الفكرة 😅
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان