بتاريخ: 2 مارس 201610 سنة comment_271963 السلام عليكم ورحمة الله وبركاته أنا أعمل حالياً على برنامج يتحكم بخصائص العناصر في الفورم بدون تدخل برمجي.. مثلاً يريد مدير النظام إخفاء عنصر معين أو تغيير نوعه أو تغيير اللون أو تكبير النص أو أي شي من الخصائص التي يمكن التحكم بها على العنصر ، فيتم ذلك عن طريق شاشة تسمى (خصائص العناصر) ولتنفيذ ذلك قمت بوضع ثلاثة جداول وهي . 1. جدول Forms ويتم فيه إدخال جميع الشاشات الموجودة. 2. جدول forms_items ويتم فيه إدخال جميع العناصر الموجودة ويتربتط بأسم الشاشة. 3. جدول forms_propartes ويتم فيه وضع خصائص العناصر المراد تغيير خصائصها. المطلوب ... كل شيء تمام حتى الآن ولكن .؟!!! أريد كود من خلاله أنفذ الأمر التالي : SET_ITEM_PROPERTY('UNMX',ENABLED,PROPERTY_TRUE); ولكن بهذه الطريقة SET_ITEM_PROPERTY(I.itm_name,I.itm_proty,I.itm_valu); والكود كما يلي ...... مع العلم أن النص باللون الأحمر لا يمكن تنفيذة لأنه خطأ ، وطلبي هو استعاضته بكود صحيح .... Declare CURSOR FN IS SELECT * FROM LIB.forms_ propartes WHERE FRM_NAME =:system.current.form; begin FOR I IN FN LOOP SET_ITEM_PROPERTY(I.ITMBLXK.I.itm_name,I.itm_proty,I.itm_valu); END LOOP; END; الهدف من ذلك هو عدم تحديد (خاصية معينة) ولكن يمكن للمستخدم إختيار نوع العنصر وتحديد خاصيته وقيمتها. فكيف وأين ومتى يتم تنفيذ الكود السابق...!!!!!!!! وإذا كان هناك أي مقترحات أو طرق غير معقدة أخرى للسماح للمستخدم بالتحكم في خصائص العنصر من الشاشة وبدون تدخل برمجي فأتمنى تزويدي بها ... جزاكم الله خير تقديم بلاغ
بتاريخ: 3 مارس 201610 سنة كاتب الموضوع comment_271978 تم تغيير الشاشة وتضمين الخصائص كما في المرفق تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة كاتب الموضوع comment_272060 أخواني الكرام ,,,, الرجاء دراسة الموضوع !!! مازلت في إنتظاركم ,,,,, تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة comment_272063 السلام عليكم يوجد عندي كود أتحكم من خلاله بالحقول .. ععبر الكود .. FOR I IN GET_CURRENT_USER_PRV(:SYSTEM.CURRENT_FORM )LOOP If I.open='1' then SET_MENU_ITEM_PROPERTY(I.sc_name,ENABLED,PROPERTY_TRUE); ELSE SET_MENU_ITEM_PROPERTY(I.sc_name,ENABLED,PROPERTY_fALSE); end if; END LOOP; طبعا قبلها يتك كتابه الكيرزر الخاص .. وبصراحة الفكرة رااائعة جدا جدا جدا.. آمل إفادتي .. تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة كاتب الموضوع comment_272064 مشكور أخي الكريم المبرمج الصاعد ولكني أطمح بأكبر من ذلك وهو إني اريد تحديد نوع الخاصية و قيمتها من خلال قاعدة البيانات وليس من الكود يعني أذا حدد المستخدم من الشاشة (أسم العنصر) وكذلك (نوع الخاصية) و (قيمتها) يتم كتابة كود مباشر هكذا ادخال المستخدم (العنصر = ITMS12 البلوك = BLCK01 الخاصية ENABLED القيمة TRUE) وأثناء عمل جملة اٌستعلام يتم كتابة الكود النهائي كما يلي ... set_item_property(I.ITM_BLOCK||'.'||I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); المطلوب هل تستطيع كتابة كود لوضع خصائص عنصر بهذا الشكل set_item_property(AnyItem ,'ENABLED','FALSE'); بدلاً من هذا الشكل set_item_property(AnyItme ,ENABLED,PROPERTY_FALSE); مع العلم أن هناك فرق بين الكودين فالأول تم وضع اسم الخاصية وقيمتها نصياً ('') أما الثاني فتم وضعها بالطريق المتعارف عليها ارجوا الافادة تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة comment_272065 ماشا الله علليك مهندس فيصل .. وأعتذر على سوء فهمي لمقصودك... لا أعلم ذلك ولكن بإذن الله المبدعين في المنتدى يتم إفداتنا بهذا الموضوع .. ولك تجياتي تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة كاتب الموضوع comment_272070 كما هو واضح من الصورة فقد تم تجربة كود طوووووووويل ونجحت الفكرة هو مش طويل جداً ، ولكنه أفضل من أي كود توصلت اليه حتى الآن ومازلت بحاجة الى الكود البسيط الذي يختصر كل شيى الشرح 1. بداية الكود للإستعلان عن الخصائص من الجدول كما يلي -------------------- SELECT PROPERTIES declare CURSOR FN IS select ITM_TYPE , SS.ITM_CODE ,ITM_PRTY, PRT_VALUE from LIB.FORMS_PROPERTIES PP ,LIB.FORMS_ITEMS SS where PP.ITM_ID in ( select ITM_ID from LIB.FORMS_ITEMS where FRM_ID =( select FRM_ID from LIB.FORMS where FRM_TYPE = 'FORM' and FRM_NAME = :system.current_form) ) and PP.ITM_ID = SS.ITM_ID and PRT_ENABLE =1; -------------------------- SET PROPERTIES begin FOR I IN FN LOOP 2. كود تفعيل او الغاء خصائص عنصر من نوع (ITEM) بعد جملة (FOR) كما يلي : if I.ITM_TYPE = 'ITEM' then -- IS ITEM ----------------- SET ONE PROPERTY if I.ITM_PRTY = 'ENABLED' then if I.PRT_VALUE = 'FALSE' then set_item_property(I.ITM_CODE ,ENABLED,PROPERTY_FALSE); else set_item_property(I.ITM_CODE ,ENABLED,PROPERTY_TRUE); end if; ----------------- SET ANOTHER PROPERTY elsif I.ITM_PRTY = 'VISABLED' then ..... ect الكود كامل declare CURSOR FN IS select ITM_TYPE , SS.ITM_CODE ,ITM_PRTY, PRT_VALUE from LIB.FORMS_PROPERTIES PP ,LIB.FORMS_ITEMS SS where PP.ITM_ID in ( select ITM_ID from LIB.FORMS_ITEMS where FRM_ID =( select FRM_ID from LIB.FORMS where FRM_TYPE = 'FORM' and FRM_NAME = :system.current_form) ) and PP.ITM_ID = SS.ITM_ID and PRT_ENABLE =1; -------------------------- SET PROPERTIES begin FOR I IN FN LOOP ------------------------------------------------------ if I.ITM_TYPE = 'ITEM' then -- IS ITEM if I.ITM_PRTY = 'ENABLED' then if I.PRT_VALUE = 'FALSE' then set_item_property(I.ITM_CODE ,ENABLED,PROPERTY_FALSE); else set_item_property(I.ITM_CODE ,ENABLED,PROPERTY_TRUE); end if; end if; ------------------------------------------------------ elsif I.ITM_TYPE = 'BLOCK' then -- IS BLOCK if I.ITM_PRTY = 'INSERT' then -- UPDATE_ALLOWED if I.PRT_VALUE = 'FALSE' then SET_BLOCK_PROPERTY(I.ITM_CODE ,INSERT_ALLOWED,PROPERTY_FALSE); -- set_item_property(I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); else SET_BLOCK_PROPERTY(I.ITM_CODE ,ENABLED,PROPERTY_TRUE); end if; elsif I.ITM_PRTY = 'UPDATE' then -- UPDATE_ALLOWED if I.PRT_VALUE = 'FALSE' then SET_BLOCK_PROPERTY(I.ITM_CODE ,UPDATE_ALLOWED,PROPERTY_FALSE); -- set_item_property(I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); else SET_BLOCK_PROPERTY(I.ITM_CODE ,ENABLED,PROPERTY_TRUE); end if; elsif I.ITM_PRTY = 'DELETE' then -- DELETE_ALLOWED if I.PRT_VALUE = 'FALSE' then SET_BLOCK_PROPERTY(I.ITM_CODE ,DELETE_ALLOWED,PROPERTY_FALSE); -- set_item_property(I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); else SET_BLOCK_PROPERTY(I.ITM_CODE ,ENABLED,PROPERTY_TRUE); end if; end if; ------------------------------------------------------ end if; END LOOP; end; وهكذا كلما أكتشفت خاصية جديدة يتم وضعها في الشاشة والكود يعمل 100% أنا على استعداد لأي اقتراح أو ملاحظة ولكني ما زلت أبحث عن الكود المختصر الذي سيريحنا من هذا الكود الطويل نوعاً ما... وهو كود سيكون كما يلي FOR I IN FN LOOP ------------------------------------------------------ if I.ITM_TYPE = 'ITEM' then -- IS ITEM set_item_property(I.ITM_CODE ,ENABLED,PROPERTY_FALSE); end if; ------------------------------------------------------ elsif I.ITM_TYPE = 'BLOCK' then -- IS BLOCK set_item_property(I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); end if; ------------------------------------------------------ elsif I.ITM_TYPE = 'WINDOWS' then -- IS WINDOWS set_WINDOWS_property(I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); end if; ------------------------------------------------------ elsif I.ITM_TYPE = 'WINDOWS' then -- IS ANYTHINK set_ANYTHINK_property(I.ITM_CODE ,I.ITM_PRTY,I.PRT_VALUE); end if; ------------------------------------------------------ end if; END LOOP; تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة comment_272073 الأخ / فيصل فكرة ممتازة جدا .... وسيتم المتابعه سؤال هل يمكن استخراج معلومات من ملفات الفورمز xxxx.fmb مطلوب مني اعداد توثيق شاشات النظام ( بطريقة آليه ) ومطلوب استخراج معلومات اسماء الجداول المستخدمة في الشاشة واسماء الإجراءات ومحتوياتها هل هذا ممكن ؟ أو هل توجد اداه أو برنامج يساعدني في ذلك ؟؟ شكرا لك تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة comment_272074 اخي الفاضل بامكانك ان تجعل كل الخصائص او الكائنات او البروسجرات والفانكشن وحتى خصائص الاحجام والالوان للكائنات في شاشة كقالب وتقوم بتوريث الخصائص وقت انشاء شاشة جديدة والجوانب التي تعتمد على تغيير قيمها فتنشيئ شاشات تقوم با ادخال قيمها مثلا انا اريد ان اجعل كائن عبارة عن مؤشر المقصود به انه كائن ليست ياخذ قيمتين او اكثر مثل مرحل او غير مرحل وممكن اجعل الكائن نفسه في شاشة ثانية ياخذ قيمة اخرة مؤكد او غير مؤكد ففي هذه الحالة ابني بعد بناء Template اروح وانش جزيئة المؤشارات وهي عبارة عن شاشة تدخل قيم المؤشر واسم الجدول والحقل بالجدول ويكون قد بنيت ال Template انه مكون من المؤشرات وفي الاجراءت البرمجية التي تجري العملية وعند انشائك لشاشة جديد يكون ماعليك الا ان تورث من كائن المؤشرات في البلوك الجديد لشاشة الجديدة دون تدخل برمجي منك ارجوا اني ما اكون عقدت عليك وادخلتك في دوامة لاني اريد ان اقول لك كل شي في 5 اسطر تقديم بلاغ
بتاريخ: 5 مارس 201610 سنة comment_272075 وهذا المثال يقرب ويوضح فكرة بسيطة عن التوريث http://www.araboug.org/ib/index.php?showtopic=45583&hl= تقديم بلاغ
بتاريخ: 21 مارس 201610 سنة comment_272720 الأخ / فيصل فكرة ممتازة جدا .... وسيتم المتابعه سؤال هل يمكن استخراج معلومات من ملفات الفورمز xxxx.fmb مطلوب مني اعداد توثيق شاشات النظام ( بطريقة آليه ) ومطلوب استخراج معلومات اسماء الجداول المستخدمة في الشاشة واسماء الإجراءات ومحتوياتها هل هذا ممكن ؟ أو هل توجد اداه أو برنامج يساعدني في ذلك ؟؟ شكرا لك تم تعديل 21 مارس 201610 سنة بواسطة خالد الجعفري تقديم بلاغ
بتاريخ: 22 مارس 201610 سنة comment_272757 مهندس خالد ممكن تشرح لنا كيف نستفيد من Data model ..؟ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.