مدونة منذر اسامة

العودة   منتديات جريت بلينز العربية Great Plains For Arab > منتدى مطوري جريت بلينز > مواضيع المطورين الأخرى

مواضيع المطورين الأخرى مواضيع المطورين التي لا تنتمي الى أي من التصنيفات السابقة
مثل لغة الديكستريتي (Dexterity) والأدوات التطويرية الأخرى (eConnect , Integration Maneger ,VS2005 for GP...etc.)

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 26-Jul-2011, 10:34 AM   #11
humam
مشرف منتدى المطورين
افتراضي

الان هناك نقطة اخرى وهي في نافذة GP الاصلية اي اقصد Customer Maintenance بعد ادخال Customer ID وعمل TAB out من هذا الحقل سوف يقوم GP بأقفال الحقل عند ذلك لايمكن للمستخدم ان يقوم بتغيير محتوى هذا الحقل الا بحذف الحقل او الضغط على زر Clear . لفعل ذلك سوف نختار الحقل ARBCUSTID في النافذة ثم نذهب الى الخصائص ونختار Script ومنها نختار Post ونعمل نقر مزدوج فتفتح نافذة Script Editor وسوف يكون اسم الشفرة هو ARB_Customer_MSTR ARBCUSTID_POST وهذا الحدث ينفذ عندما ينتقل التركيز من هذا الحقل الى الحقل التالي وهنا سوف نضع هذه العبارة البسيطة:

;lock field ARBCUSTID

وتعمل على اغلاق هذا الحقل بعد الانتقال الى الحقل الذي يليه وبتالي اصبح عمل النافذة قريب من اسلوب عمل GP.
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Jul-2011, 02:18 PM   #12
humam
مشرف منتدى المطورين
افتراضي الشفرة البرمجية للزر Clear:

الشفرة البرمجية للزر Clear:

انقر نقرا مزدوجا على الزرClearلفتح Script Editor واكتب العبارت التالية :

;restart form


تعمل هذه العبارة على مسح كل المعلومات الظاهرة على كل نوافذ النموذج وكذلك تعديد المتغيرات الى القيم الاولية اذا كنت قد اعددت قيم اولية.
طبعا ان تنفيذ هذه العبارة سوف يؤدي ايضا الى وضع التركيز Focus عند اول حقل في النافذة طبعا هناك طريقة خاصة لاعداد Tab Sequence في الدكسترتي سوف نذكرها لاحقا بعد اكمال كتابة الكود.
هنا يجب ان يكون حاضر في الذهن ان تنفيذ العبارة السابقة سوف يؤدي كذلك الى اطلاق سلسلة من الاحداث وهي :
Pre Form
Pre Window
Pre First Field in the window
لذا اذا كنت قد وضعت كود في احد هذه الاحداث سوف يؤدي تنفيذ العبارة السابقة الى تنفيذ الحدث وبتالي تنفيذ الكود الذي وضعته.
__________________
GP Techno-Functional Consultant

آخر تعديل بواسطة humam ، 28-Jul-2007 الساعة 03:06 PM.
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Jul-2011, 03:25 PM   #13
humam
مشرف منتدى المطورين
Thumbs up الشفرة البرمجية للزر Top of File Button:

الشفرة البرمجية للزر Top of File Button:

انقر نقرا مزدوجا على الزر Top of File Button لفتح Script Editor واكتب العبارت التالية :
;range clear table ARB_Customer_MSTR
;clear window ARB_Customer_MSTR
;get first table ARB_Customer_MSTR
if err()=OKAY then

;copy from table ARB_Customer_MSTR to window ARB_Customer_MSTR
;lock field ARBCUSTID
elseif err()<> OKAY then
;"!warning "This record missing
;end if

هنا سوف نحتاج الى شرح بعض العبارت التي تظهر لأول مرة في الشفرة البرمجية وعمل كل منها:
نلاحظ في بداية الكود كانت العبارة Range Clear Table وهي تكون مسبوقة باسم الجدول تستخدم هذه العبارة لتفريغ Table Buffer من اي Record قد يكون موجود فيه لانه نحن في الواقع لانتعامل مع جدول SQL بشكل مباشر بل من خلال Table Buffer والذي سوف نتعلم لاحقا ما هي العبارت التي تؤدي الى ملئ هذا ال Buffer لذا من الضروري وهي تعتبر من اهم اساسيات الدكسترتي قبل استدعاء اي جدول لأي غرض من الاغراض من المهم جدا تفريغ Buffer لان عدم القيام بذلك سوف يؤدي الى اخطاء منطقية في عمل ال Module الذي تصممه وهذا ما توصلت اليه من خبرتي المتواضعة.
العبارة الثانية Clear Window وهي تأخذ اسم النافذة وهي تعمل على محو المحتويات من Window Field وهنا قد يسأل احد ما لماذا لانستخدم العبارة restart window ؟ سوف اجاوب عن هذا السؤال لاحقا ولكن اود ان اعطي للاخوان فرصة لكي يجدوا بأنفسهم اجابة لهذا السؤال؟
العبارة المهمة الاخرى وهي get first table متبوعة باسم الجدول وهي من العبارت الاساسية في الدكسترتي وهي من العبارت التي تؤدي الى ملئ Table Buffer وهي سوف تعمل على نقل اول سجل من الجدول الى Table Buffer .
العبارة التالية وهي Copy from table --- to window --- من العبارت الاساسية ايضا وهي معاكسة للعبارة التي استخدمناها في الزر حفظ وهي تعمل على نسخ البيانات من Table Buffer الى النافذة المعينة .
وبعدها عبارة Lock field وقد شرحنا سابقا عمل هذه العبارة.
العبارة الاخرى وهي warning وهي تستخدم لاظهار رسالة توضيحية للمستخدم وهنا نحاول اعطاء معلومة للمستخدم اذا لم نجد السجل المطلوب .

الان بقي العبارة الاساسية If Then Else واتوقع ان الجميع قد استخدم هذه التركيبة المنطقية سابقا وللذين لم يستخدمون هذه العبارة يمكن ايجاز عملها كما يلي :
If Condition then
;Statements
Else
;Statements

;End if
او

If Condition1 then
;Statements
Elseif Condition2 then
;Statements
End if


ببساطة عند تحقق الشرط المنطقي Condition سوف يتم تنفيذ العبارت التي تقع بعد Then واذا لم يتحقق سوف يتم تنفيذ العبارت التي تقع بعد Else . في التركيب الثاني نلاحظ وجود شرط منطقي مع عبارة Else وهنا نفس الشيء الشرط المنطقي1 Condition سوف يتم تنفيذ العبارت التي تقع بعد Then واذا لم يتحقق سوف يتم تنفيذ العبارت التي تقع بعد Elseif اذا تحقق الشرط المنطقي Codition2 واذا لم يتحقق هذا الشرط ايضا يتم مغادرة عبارة if endif بدون تنفيذ اي من العبارات المحصورة بينهما .

الان بقي ان نشرح عبارة الشرط المنطقي التي استخدمت وهي :
Err () = OKAY وعكسها Err () <> OKAY
ان هذه العبارة err() تعيد نتيجة اخر عملية تم تنفيذا على الجدول وهنا العملية التي نفذت على الجدول هي get first فأذا كان التنفيذ سليم سوف تعيد هذه الدالة الثابت OKAY للدلالة على ان السجل المطلوب موجود وتعيد قيم اخرى سوف نذكرها لاحقا و من الممكن معرفة هذه القيم من Help .

عمل هذا الزر بشكل مختصر هو الانتقال الى السجل الاول في الجدول .
عذرا من الاخوان ان الفارزة المنقوطة يجب ان تأتي في نهاية الجمل البرمجة ولكن محرر النص هنا يضعها بالعكس ارجو الانتباه الى هذه الحالة لذا سوف ارفق صورة للكود.
الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر الاســـم:	Fig7.JPG‏ المشاهدات:	183 الحجـــم:	38.7 كيلوبايت الرقم:	95  
__________________
GP Techno-Functional Consultant

آخر تعديل بواسطة humam ، 28-Jul-2007 الساعة 05:50 PM.
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Jul-2011, 04:11 PM   #14
humam
مشرف منتدى المطورين
افتراضي

الشفرة البرمجية للزر End of File Button:

انقر نقرا مزدوجا على الزر End of File Button لفتح Script Editor واكتب العبارت التالية :

;range clear table ARB_Customer_MSTR
;clear window ARB_Customer_MSTR
;get last table ARB_Customer_MSTR
if err()=OKAY then
;copy from table ARB_Customer_MSTR to window ARB_Customer_MSTR
;lock field ARBCUSTID
elseif err()<> OKAY then
;"warning "This record missing
;end if

الان ان الاختلاف الوحيد في هذه الشفرة هو العبارة get last table والتي تعمل على ملئ Table Buffer ولكن هذه المرة بالسجل الاخير في الجدول اما باقي العبارت فهي تعمل بنفس النسق السابق
__________________
GP Techno-Functional Consultant

آخر تعديل بواسطة humam ، 28-Jul-2007 الساعة 05:51 PM.
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Jul-2011, 05:08 PM   #15
humam
مشرف منتدى المطورين
Thumbs up الشفرة البرمجية للزر Next Button - Toolbar:

الشفرة البرمجية للزر Next Button - Toolbar:

انقر نقرا مزدوجا على الزر Next Button – Toolbar لفتح Script Editor واكتب العبارت التالية :


clear window ARB_Customer_MSTR;
range clear table ARB_Customer_MSTR;
get next table ARB_Customer_MSTR;
if err() <> OKAY then
range clear table ARB_Customer_MSTR;
get last table ARB_Customer_MSTR;
end if;
if err()= OKAY then
copy from table ARB_Customer_MSTR to window ARB_Customer_MSTR;
lock field ARBCUSTID;
end if;

هنا نستخدم نفس العبارت السابقة ولكن المنطق مختلف قليلا فبعد عبارت تهيئة الجدول والنافذة Clear window & Clear range استخدمنا عبارة جديدة وهي get next table وهي تعمل على ملئ ال Table Buffer بالسجل التالي للسجل الحالي وهنا بعد هذه العملية نفحص نتيجة العملية بواسطة الدالة err() فأذا لم يكن هناك سجل تالي سوف ننتقل الى السجل ا لاخير وهذا ما تقوم به عبارة If then الاولى اما اذا كان هناك سجل تالي سوف ننتقل الى عبارة if then الثانية والتي تعمل على نسخ السجل التالي او السجل الاخير الى النافذة وثم نقوم بأقفال الحقل Customer ID .
الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر الاســـم:	Fig8.JPG‏ المشاهدات:	209 الحجـــم:	49.2 كيلوبايت الرقم:	96  
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Jul-2011, 05:19 PM   #16
humam
مشرف منتدى المطورين
Thumbs up الشفرة البرمجية للزر Previous Button - Toolbar:

[overline]الشفرة البرمجية للزر Previous Button - Toolbar:[/overline]

انقر نقرا مزدوجا على الزر Previous Button - Toolbar لفتح Script Editor واكتب العبارت التالية :


clear window ARB_Customer_MSTR;
range clear table ARB_Customer_MSTR;
get prev table ARB_Customer_MSTR;
if err() <> OKAY then
range clear table ARB_Customer_MSTR;
get first table ARB_Customer_MSTR;
end if;
if err()= OKAY then
copy from table ARB_Customer_MSTR to window ARB_Customer_MSTR;
lock field ARBCUSTID;
end if;

هنا استخدمنا نفس المنطق السابق مع اختلافات بسيطة وتتلخص في استخدام العبارة get prev table لاستعادة السجل السابق فأذا لم يكن هناك سجل سابق سوف تعمل عبارة if then الاولى على الانتقال الى السجل الاول ثم بعد ذلك تعمل عبارة If then الثانية على التأكد من ان هناك سجل سابق او سجل اول فأذا كا ن كذلك سوف ننسخ المعلومات الى النافذة ونقفل الحقل Customer ID .
الى هذه النقطة يمكن استخدام Test Mode (CTRL + T ) لفحص عمل ازرار التنقل Navigation Button .
بقي لنا ان نضع الكود التي تعمل على استرجاع السجل المحدد عندما يقوم المستخدم بطباعة Customer ID ثم الانتقال خارج هذا الحقل.
الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر الاســـم:	Fig9.JPG‏ المشاهدات:	182 الحجـــم:	43.2 كيلوبايت الرقم:	97  
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 29-Jul-2011, 11:20 AM   #17
Monzer Osama
مدير عام منتديات جريت بلينز العربية
افتراضي

جهود مباركة أخي همام ... أسأل الله لك التوفيق
__________________
Monzer Osama
Saudia Arabia - Jeddah
00966501826235
Microsoft Certified Business Management Solutions Professional
Microsoft Certified Trainer
Monzer Osama غير متواجد حالياً   رد مع اقتباس
قديم 02-Aug-2011, 09:08 AM   #18
humam
مشرف منتدى المطورين
افتراضي الشفرة البرمجية للزر Delete :

الشفرة البرمجية للزر DELETE :

هذه الشفرة نوعا ما اعقد قليلا من الشفرات السابقة وتحتوي على تركيبات برمجية جديدة ومهمة في البداية سوف نشرح منطقيا كيفية القيام بعملية حذف سجل معين من جدول الخطوة الاولى في هذه العملية هي تحديد االسجل المراد حذفه حيث ان المستخدم عندما يشاهد Record معروض امامه في النافذة ويريد القيام بحذفه فان ما يلاحظه هو عملية مسح المعلومات المعروضة من النافذة بعد الحذف ولكن ما يجب ان نقوم به كمبرمجين هو حذف السجل من قاعدة البيانات وهنا سوف نحتاج الى اولا تحديد السجل الذي يجب حذفه ثم بعد ذلك نقوم بعملية تنبيه المستخدم مع اعطائه القابلية عن التراجع عن الحذف ثم نقوم بعملية الحذف ولكن هناك نقاط تفصلية اخرى تم اخذها بنظر الاعتبار وسوف نوضحها تباعا.

العبارات الثلاثة الاولى وهي Range Clear , range table ,get first تعمل مجتمعة على القيام بتحديد السجل الحالي المعروض على المستخدم في النافذة العبارة الجديدة بين هذه العبارت هي Range Table وهي تعتبر من اهم عبارت التعامل مع الجداول والاكثر استخداما وهي تعمل على ملئ Table Buffer بالسجل او السجلات المطلوبة اعتمادا على الشرط الذي يلي العبارة Where وهي تشابه تماما العبارة SELECT في SQL وفي الواقع سوف تترجم لاحقا من قبل Compiler الى عبارة SELECT عند تنفيذها بعد العبارة range table سوف يأتي اسم الجدول ثم بعد ذلك العبارة where ثم الدالة physicalname والتي تأخذ اسم الحقل (Table Field ) العائد للجدول كمحدد وتعيد Physical Name للحقل اي اسم الحقل المستخدم في جدول SQL ثم بعد ذلك نمرر قيمه الحقل والتي تأتي من Window Field المكافىء لل Table Field وهنا في هذه الحالة ان مربع النص المسمى ARBCUSTID هو ال Window Field المكافيء .ثم بعد ذلك تعمل العبارة get first على استرجاع السجل الاول في Table Buffer وفي حالتنا هذه يوجد سجل واحد فقط في Table Buffer .

المرحلة التالية هي التعرف على حالة هذا السجل لان هناك احتمالات عديدة يجب ان تأخذ بنظر الاعتبار لذا وكما قلنا انه بعد تنفيذ عبارة get first يمكن التحقق من حالة السجل على طريق فحص رسالة الخطأ التي سوف تعاد بعد تنفيذ عبارات الاسترجاع وهنا نستخدم العبارة err(table table_Name) وهي نفس العبارة المستخدمة سابقا ولكن كتبتها بصيغة اخرى وذلك لزيادة المعرفة حيث مررت Table Name كمحدد لعبارة err والتي يمكن استدعائها مباشرة مثل err() وبدون تمرير اي محدد ولكن في اي حالة يكون من الضروري تمرير المحدد ؟ هنا في حالتنا كان الامر اختياري ولكن استخدمته لتوضيح هذه النقطة وهي في حالة تنفيذك اكثر من عبارة استرجاع على جداول متعددة عند ذلك يجب ان تمرر اسم الجدول مع العبارة err() لتحدد اي جدول تريد فحص نتيجة العملية عليه واذا لم تمرر اسم الجدول واستخدمت العبارة err() سوف تقوم باعادة نتيجة العملية على اخر جدول فقط.

النقطة الجديدة الاخرى في الشفرات السابقة استخدمنا العبارة If Then لفحص حالة السجل ولكن هنا سوف نستخدم العبارة Case لاننا نريد ان نأخذ اكثر من احتمال والتركيب البرمجي للعبارة هو كما يلي :

Case Field or Expiration
In [value]
Statment1
In [value]
Statment2
Else
Stetment3
;End case

تأخذ العبارة case اسم حقل او تعبير ثم تقارن القيمة المعادة من الحقل او التعبير مع القيم الموجودة في عبارة In فأذا توافقت سوف يتم تنفيذ العبارة التي تقع بعد عبارة in مثلا اذا كان قيمة التعبير موافقة للقيمة في عبارة in الاولى سوف يتم تنفيذ العبارة Statmnet1 وهكذا واذا لم توجد قيمة موافقة للقيم المحددة في عبارت in سوف يتم تنفيذ العبارة التي تقع بعد else وهكذا ويجب ان ينتهي هذا التركيب بالعبارة end case .
الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر الاســـم:	Fig10.JPG‏ المشاهدات:	189 الحجـــم:	89.6 كيلوبايت الرقم:	109  
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 02-Aug-2011, 09:30 AM   #19
humam
مشرف منتدى المطورين
Arrow

في مثالنا التعبير هو العبارة err(table table_name) والتي تعيد عدد من القيم اعتمادا على حالة السجل الذي تم تنفيذ عبارة get عليه فمثلا تعيد القيمة MISSING اذا كان هذا السجل غير موجود ؟طبعا هذا السيناريو يكون غريب قد يقول قائل كيف انا اعرض السجل في النافذة امام عيني ثم بعد ذلك يكون السجل محذوف ؟ نعم هذا يحصل في الحالة التالية عندما يكون البرنامج غير معد للتعامل مع بيئة متعددة المستخدمين Multiuser environment فيحصل ما يلي عندما تقوم باستعراض هذا السجل قد يقوم مستخدم ثاني باستعراضه بنفس الوقت وقد يقوم بحذفه وانت لا تزال تشاهد السجل معروض امامك في النافذة ثم تحاول حذفه فتكون النتيجة ان هذا السجل محذوف لذا تعيد العبارة القيمة MISSING القيمة المحتملة الاخرى وهي LOCK وهذه القيمة تعاد في عدد من الحالات اولا اذا كان Module مصمم للعمل مع Multiuser Environment عندما تحاول ان تستعرض سجل يستعرض حاليا من قبل مستخدم اخر سوف تعاد هذه القيمة للدلالة على ان السجل الحالي مقفل ولذا اصلا لاتستطيع مشاهدة هذا السجل اما في حالة كون البرنامج غير معد للتعامل مع اكثر من مستخدم وعندما يعرض مستخدمان او اكثر نفس السجل واذا ضغط كلاهما على زر الحذف سوف يكون فارق زمني قليل بين المستخدمين لذا سوف يقوم المستخدم الذي جهازه اسرع بالوصول اولا الى السجل ثم يقفله (لأن عملية الحذف تتطلب اقفال السجل اولا حتى اذا كان البرنامج لايدعم ال Multiuser Environment ) وبتالي سوف يظهر للمستخدم الاخر ان السجل مقفل وتعيد العبارة err القيمة LOCK . اما اذا اعادت العبارة القيمة OKAY فهي للدلة على ان السجل موجود ويمكن حذفه واخيرا اذا لم تعاد اي من القيم الثلاثة السابقة فهذا يدل على ان السجل لم يحفظ اصلا والسناريو المحتمل هو ان المستخدم ادخل السجل في النافذة والآن يريد حذفه هنا اذا كان الزر حذف مفعل وغير مغلق قد يضغط المستخدم على الزر لحذف السجل قبل حفظه اصلا في الجدول لذا وضعنا عبارة else في نهاية العبارة case لأصطياد هذه الحالة .
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 02-Aug-2011, 10:10 AM   #20
humam
مشرف منتدى المطورين
افتراضي

الان كيف تعمل العبارة case :
اولا. اذا كان السجل محذوف من قبل مستخدم اخر نظهر رسالة توضيحية بذلك.
ثانيا.اذا كان السجل مقفل من قبل مستخدم اخر نظهر ايضا رسالة توضيحية بذلك.
ثالثا.اذا كان السجل متوفر الان نستخدم العبارة الجديد ask وتعمل هذه العبارة على اضهار رسالة للمستخدم وتعيد الزر الذي قام المستخدم بالضغط عليه والتركيب لهذه العبارة كما يلي :
ask (prompt, button1, button2, button3,helpindex)

هنا ان prompt سوف تأخذ النص الذي سوف يعرض على المستخدم و button يتم التعويض عنها بعبارت نصية لاسماء الازرار وعندما تريد ان تمرر زرين فقط عليك التعويض عن الزر الثالث بسلسلة نصية فارغة كما في مثالنا . القيمة المعادة من هذه العبارة قد تكون احدى القيم التالية اعتمادا الى الزر الذي ضغطه المستخدم :
ASKBUTTON1 للزر الاول
ASKBUTTON2 للزر الثاني
ASKBUTTON3 للزر الثالث
الان بعد التأكد من ان السجل موجود سوف نسأل المستخدم هل تريد الحذف ام لا فأذا كانت الاجابة بنعم سوف تعيد الدالة ask القيمة ASKBUTTON1 وهنا تعمل عبارة if then على فحص هذا الشرط فأذا كان متطابق سوف يتم تنفيذ العبارت الثلاثة وهي Range Clear , range table ,get first تعمل مجتمعة على القيام بتحديد السجل الحالي المعروض على المستخدم ثم نفحص مجددا اذا كان السجل متوفر ام لا طبعا يمكن اهمال هذا الفحص لان السجل فحص سابقا لكن لا مانع من فعل ذلك مجددا .
ثم تبدأ عملية الحذف بتنفيذ العبارة change والتي تعمل على اقفال السجل لكي لا يستطيع اي مستخدم اخر الوصول اليه ثم بعد ذلك تأتي عبارة remove table التي تعمل على حذف السجل الذي تم اختياره بواسطة العبارة range table .
ثم بعد ذلك تأتي عبارة range clear لتنظيف ال Table Buffer وهذا ضروري بعد كل استخدام لل Table Buffer ثم تأتي العبارة window restart لمسح محتويات النافذة ولاعطاء المستخدم صورة تفاعلية بأن السجل تم حذفه.
بقي هناك الكود التي تلي العبارة else للتركيب case والتي تعمل وفق المنطق التالي الذي ذكرناه سابقا (اما اذا اعادت العبارة القيمة OKAY فهي للدلة على ان السجل موجود ويمكن حذفه واخيرا اذا لم تعاد اي من القيم الثلاثة السابقة فهذا يدل على ان السجل لم يحفظ اصلا والسناريو المحتمل هو ان المستخدم ادخل السجل في النافذة والآن يريد حذفه هنا اذا كان الزر حذف مفعل وغير مغلق قد يضغط المستخدم على الزر لحذف السجل قبل حفظه اصلا في الجدول لذا وضعنا عبارة else في نهاية العبارة case لأصطياد هذه الحالة) هنا قمنا بأظهار رسالة اولا لاخبار المستخدم بأن هذا السجل لم يحفظ لذا عليه استخدام الزر clear لمسح محتويات النافذة ثم استخدمنا العبارة focus والتي تعمل علة نقل التركيز الى الزر clear لكي يكون من السهل على المستخدم الضغط عليه واخيرا تأتي عبارة range clear لتنظيف ال Table Buffer وهذا ضروري بعد كل استخدام لل Table Buffer.
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
إضافة رد


يتصفح الموضوع حالياً : 2 (0 عضو و 2 ضيف)
 
أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
تعلم لغة الدكسترتي humam مواضيع المطورين الأخرى 59 20-May-2013 11:00 AM
تعلم كيفية بناء وتطوير مشاريع تستخدم eConnect humam مواضيع المطورين الأخرى 39 30-Mar-2013 12:00 PM
كيفية تعلم جريت بلينز نادر احمد ماهر حزمة التشغيل (جزيئ المبيعات - المشتريات - المستودعات ) 1 23-Oct-2011 01:08 PM


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


Powered by vBulletin® Version 3.8.3

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

Copyright © 2000-2010 Jelsoft Enterprises Limited.
الموقع لا يمثل أي جهة رسمية بل هو جهد شخصي يرمي الى تجميع القدرات في برنامج جريت بلينز