منتديات جريت بلينز العربية Great Plains For Arab

منتديات جريت بلينز العربية Great Plains For Arab (http://www.gp4arab.com/forum/index.php)
-   مواضيع المطورين الأخرى (http://www.gp4arab.com/forum/forumdisplay.php?f=8)
-   -   كيفية تصميم القوائم لبرنامج الجريت بلينز (http://www.gp4arab.com/forum/showthread.php?t=640)

humam 14-Nov-2011 05:44 PM

في نهاية هذا الموضوع اود ان اوضح بعض الملاحظات حول الشفرة السابقة لازالة الغموض عن بعض اجزائها :

في البداية نلاحظ وجود برامترين للادخال وهما LoadMode والثاني Show Progress وهو من النوع الاختياري اي يمكن امرار قيمته او اغفالها وهو غير مستخدم داخل الشفرة بالنسبة للبرامتر الاول وهو المهم لحسن الحظ سوف لن تكون مسؤول عن امرار تلك القيمة كما هو الجال مع معظم
برامترات الادخال لأن الجريت بلينز سوف يمرر تلك القيمة وهنا توجد قيمتين هما :

MENULOAD_TOTABLE
MENULOAD_TOMEMORY

لو لاحظت ان نوع هذا البارامتر هو Integer فكيف سوف تكون القيم هي MENULOAD_TOTABLE,MENULOAD_TOMEMORY في الحقيقة ان هاتين القمتين هما Integer وهما عبارة عن ثوابت القيمة الاولى يتم امرارها للدلالة على ان الجريت بلينز قد كون القوائم الخاصة به من الجدول SY017710 وهذا يحصل اذا كانت هناك تعديلات جرت غلى قوائم الجريت بلينز اما القيمة الثانية تشير الى ان الجريت بلينز قد استخدم Dictionary لتكوين القوائم.

humam 18-Nov-2011 06:59 PM

اضافة الى ذلك تم تعريف ثلاث متغيرات هي :

local CmdSequence Seq
local integer Status
local boolean AddMenuItems

الاول سوف يستخدم لخزن الموقع للامر الجديد الذي سوف يضاف اما الثاني يستخدم لخزن القيمة التي تعود بها الدالة AddCommandToMenu اما الثالث وهو الاهم وهو متغير منطقي نستخدمه للتحقق من الفقرات التالية:
اولا نعطي قيمة اولية له هي True .

ثانيا.نستخدم برامتر الادخال Load Mode للتحقق من الطريقة التي يستخدمها الجريت بيلنز للقيام بعملية بناء القوائم وهذا ما تفعله عبارة IF THEN الاولى فأذا كان الجريت بلينز يكون هذه القوائم من الجدول فأذا كان كذلك علينا التأكد من ان قوائم المنتج الجديد قد اضيفت الى الجدول او لا وهنا نستخدم الدالة MenusExistForProduct(3333) of form syMenuObj للقيام بذلك فأذا كانت القوائم مضافة الى الجدول سوف نغير قيمة المتغير AddMenuItems الى false وبتالي لا يوجد داع لاضافة هذه القوائم الى الجدول مرة اخرى لان هذه العملية سوف تأخذ وقت طويل وهنا كما ذكرت سابقا (حدثت عندنا حالة في مشروع سابق قامت الشركة بتطويره وهي ان المستخدمين يعانون من البطىء الشديد اثناء محاولة الدخول الى الجريت بلينز وطلبوا مني ايجاد السبب وبعد البحث في الوثائق وجدت السبب الذي ذكرته في اعلاه حيث اغفل المطور السابق وضع عبارة if then للتاكد من الطريقة التي يستخدمها الجريت بلينز لتكوين القوائم فأدى هذا الى البطئ في محاولة الولوج الى الجريت بلينز وسوف اوضح موقع هذه العبارة في الجزء التالي من الشفرة البرمجية) هنا المطور السابق اغفل وضع عبارة If then السابقة للتحقق من ان القوائم موجودة في الجدول او لا وبتالي في كل مرة يحاول فيها المستخدم الولوج الى الجريت بلينز تتم عملية اضافة هذه القوائم للجدول وكان هذا السبب ببطىء عملية الولوج الى الجريت بلينز لذا عبارة الشرط السابقة في غاية الاهمية.

humam 18-Nov-2011 07:11 PM

اخير الجزء التالي من الشفرة :

{Add a separator, which is a built-in command}
Seq = 0
Status = AddCommandToMenu(DYNAMICS
resourceid(form Command_Sales
resourceid(command CL_Sales_Cards of form Command_Sales)
Seq
CMD_BUILTINCMD_DICTID
CMD_BUILTINCMD_FORMID
resourceid(command cmdSeparator)
true
LoadMode)

هو في الحقيقة يستخدم لاضافة command من نوع خاص وهو separator وهو يمثل الخط الفاصل بين الامر الذي تضيفه وباقي اوامر الجريت بيلنز وهنا وثائق الدكسترتي تقترح دائما اضافة هذا الفاصل وهنا نلاحظ استخدام نفس الدالة AddCommandToMenu لاضافة هذا الفاصل مع وجود اختلاف صغير وهو ان هذا الفاصل سوف يكون موجود في Dictionary خاص اسمه CMD_BUILTINCMD_DICTID وكذلك النموذج الذي يحتوي هذا Command واسمه CMD_BUILTINCMD_FORMID اما بالنسبة لباقي البارمتر في كما وضحت في شرح الدالة AddCommandToMenu.
وفي نهاية الشفرة سوف تجد الجزء الخاص بعملية اضافة الفقرة الجديدة الى القوائم واتصور الشفرة واضحة لاني شرحت العبارة AddCommandToMenu بشكل مفصل تحتاج فقط الى مقارنة هذه الشفرة مع الشرح لبارامترات العبارة AddCommandToMenu .

صقر حديثه 23-Dec-2011 07:38 AM

شكرا اخي على هذا الشرح

humam 23-Dec-2011 05:15 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة صقر حديثه (المشاركة 4640)
شكرا اخي على هذا الشرح

الشكر لله اخوي العزيز هله والله بصقر حديثة

amrmaroooo 07-Jul-2012 02:24 AM

جزاك الله خير وفقك
وانتظار المزيد بأمر الله


جميع الأوقات بتوقيت GMT +3. الساعة الآن 03:01 AM.

Powered by vBulletin® Version 3.8.3

الموقع والمنتدى من تطوير » شركة المنذر للاستضافة والتصميم


الموقع لا يمثل أي جهة رسمية بل هو جهد شخصي يرمي الى تجميع القدرات في برنامج جريت بلينز