الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

التحكم في خصائص العنصر من الشاشة وبدون تدخل برمجي

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته

 

أنا أعمل حالياً على برنامج يتحكم بخصائص العناصر في الفورم بدون تدخل برمجي..

مثلاً يريد مدير النظام إخفاء عنصر معين أو تغيير نوعه أو تغيير اللون أو تكبير النص أو أي شي من الخصائص التي يمكن التحكم بها على العنصر ، فيتم ذلك عن طريق شاشة تسمى (خصائص العناصر)

 

ولتنفيذ ذلك قمت بوضع ثلاثة جداول وهي .

 

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;

 

الهدف من ذلك هو عدم تحديد (خاصية معينة) ولكن يمكن للمستخدم إختيار نوع العنصر وتحديد خاصيته وقيمتها.

 

فكيف وأين ومتى يتم تنفيذ الكود السابق...!!!!!!!!

 

 

وإذا كان هناك أي مقترحات أو طرق غير معقدة أخرى للسماح للمستخدم بالتحكم في خصائص العنصر من الشاشة وبدون تدخل برمجي فأتمنى تزويدي بها ...

 

جزاكم الله خير

 

 

post-139007-0-92392300-1456925507_thumb.jpg

بتاريخ:
  • كاتب الموضوع

تم تغيير الشاشة وتضمين الخصائص كما في المرفق 

post-139007-0-70694600-1456991198_thumb.jpg

بتاريخ:
  • كاتب الموضوع

أخواني الكرام ,,,, الرجاء دراسة الموضوع !!! 

مازلت في إنتظاركم ,,,,,  :(  :(  :( 

بتاريخ:

السلام عليكم 

 

يوجد عندي كود أتحكم من خلاله بالحقول ..

ععبر الكود ..

	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; 

طبعا قبلها يتك كتابه الكيرزر الخاص ..

 

وبصراحة الفكرة رااائعة جدا جدا جدا..

 

آمل إفادتي ..

بتاريخ:
  • كاتب الموضوع

مشكور أخي الكريم المبرمج الصاعد ولكني أطمح بأكبر من ذلك

وهو 

إني اريد تحديد نوع الخاصية و قيمتها من خلال قاعدة البيانات وليس من الكود

 

يعني أذا حدد المستخدم من الشاشة (أسم العنصر) وكذلك (نوع الخاصية) و (قيمتها)

يتم كتابة كود مباشر هكذا 

 

ادخال المستخدم (العنصر = 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);

مع العلم أن هناك فرق بين الكودين 

فالأول تم وضع اسم الخاصية وقيمتها نصياً ('')

أما الثاني فتم وضعها بالطريق المتعارف عليها 

 

 

ارجوا الافادة 

بتاريخ:

ماشا الله علليك مهندس فيصل ..

وأعتذر على سوء فهمي لمقصودك...

 

لا أعلم ذلك ولكن بإذن الله المبدعين في المنتدى يتم إفداتنا بهذا الموضوع ..

 

ولك تجياتي 

بتاريخ:
  • كاتب الموضوع

كما هو واضح من الصورة فقد تم تجربة كود طوووووووويل ونجحت الفكرة 

هو مش طويل جداً ، ولكنه أفضل من أي كود توصلت اليه حتى  الآن 

 

ومازلت بحاجة الى الكود البسيط الذي يختصر كل شيى 

 

الشرح 

 

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;
 

 

 

 

 

 

post-139007-0-89708500-1457167934_thumb.jpg

بتاريخ:

الأخ / فيصل 

 

فكرة ممتازة جدا .... وسيتم المتابعه 

 

سؤال 

 

هل يمكن استخراج معلومات من ملفات الفورمز xxxx.fmb 

 

مطلوب مني اعداد توثيق شاشات النظام ( بطريقة آليه )  ومطلوب استخراج معلومات اسماء الجداول المستخدمة في الشاشة  واسماء الإجراءات ومحتوياتها 

 

هل هذا ممكن ؟

 

أو هل توجد اداه أو برنامج يساعدني في ذلك ؟؟

 

شكرا لك 

بتاريخ:

اخي الفاضل بامكانك ان تجعل كل الخصائص او الكائنات او البروسجرات والفانكشن وحتى خصائص الاحجام والالوان للكائنات في شاشة كقالب وتقوم بتوريث الخصائص وقت انشاء شاشة جديدة والجوانب التي تعتمد على تغيير قيمها فتنشيئ شاشات تقوم با ادخال قيمها مثلا انا اريد ان اجعل كائن عبارة عن مؤشر المقصود به انه كائن ليست ياخذ قيمتين او اكثر مثل مرحل او غير مرحل وممكن اجعل الكائن نفسه في شاشة ثانية ياخذ قيمة اخرة مؤكد او غير مؤكد ففي هذه الحالة ابني بعد بناء Template اروح وانش جزيئة المؤشارات وهي عبارة عن شاشة تدخل قيم المؤشر واسم الجدول والحقل بالجدول ويكون قد بنيت ال Template انه مكون من المؤشرات وفي الاجراءت البرمجية التي تجري العملية وعند انشائك لشاشة جديد يكون ماعليك الا ان تورث من كائن المؤشرات في البلوك الجديد لشاشة الجديدة دون تدخل برمجي منك ارجوا اني ما اكون عقدت عليك وادخلتك في دوامة لاني اريد ان اقول لك كل شي في 5 اسطر

بتاريخ:

وهذا المثال يقرب ويوضح فكرة بسيطة عن التوريث
http://www.araboug.org/ib/index.php?showtopic=45583&hl=

  • بعد 3 أسابيع...
بتاريخ:

الأخ / فيصل 

 

فكرة ممتازة جدا .... وسيتم المتابعه 

 

سؤال 

 

هل يمكن استخراج معلومات من ملفات الفورمز xxxx.fmb 

 

مطلوب مني اعداد توثيق شاشات النظام ( بطريقة آليه )  ومطلوب استخراج معلومات اسماء الجداول المستخدمة في الشاشة  واسماء الإجراءات ومحتوياتها 

 

هل هذا ممكن ؟

 

أو هل توجد اداه أو برنامج يساعدني في ذلك ؟؟

 

شكرا لك 

تم تعديل بواسطة خالد الجعفري

بتاريخ:

استخدام data model برنامج مخصص من  اوراكل

بتاريخ:

مهندس خالد  ممكن تشرح لنا كيف نستفيد من Data model ..؟

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.