الانتقال إلى المحتوى
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

بتاريخ:

كيف يتم تنشيط و عدم تنشيط لزر حسب احتواء حقل معين على بيانات فعندما يكتب المستخدم شيء في هذا الحقل يتم تفعيل لزر فورا و اذا تم تفريغ هذا الحقل من كل البيانات يتم عمل عدم تنشيط لهذا الزر - ياريت من غير استخدام الجافا

بتاريخ:

DECLARE
  ID_FLD  <DATA_TYPE>;
BEGIN
SELECT <FIELD_NAME>
INTO  ID_FLD
FROM <TABLE_NAME>
WHERE <FILD_OTHER = VALUE>;

IF(ID_FLD = <VALUE>)THEN
	SET_ITEM_PROPERTY('ITEM_NAME',ENABLED,PROPERTY_FALSE);
ELSE
	 SET_ITEM_PROPERTY('ITEM_NAME',ENABLED,PROPERTY_TRUE);
END IF;
END;

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

شكرا على الاجابة .. بس ايه هو التريجر اللي اكتب فيه هذا الكويد
تريجر يتتبع هذا الحقل لحظة حدوث تغير فيه يقوم باجراء معين
مثلا لو كتبت حرف يعمل Enable و لو فرغته يعمل Disable
يعني مش عاوز استنى المستخدم لما ينتقل لحقل تاني و يعمل Validation

بتاريخ:

Simply,

u can use the following code.....

IF :TEXT_ITEM IS NULL THEN 
         SET_ITEM_PROPERTY('button_name',ENABLED,PROPERTY_FALSE);
   ELSE
        SET_ITEM_PROPERTY('button_name',ENABLED,PROPERTY_TRUE);
   END IF;




Put it in (when-validate-item trigger) on the text_item
or
(key-next-item trigger) on the text_item.

Good Luck

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

Thank you rose


But you did use a validation trigger which requries user to press enter or move to next or previous field to fire that trigger
which is not the case i'm talking about
I wonder if there is a trigger respond to the user input sponteously to do an action without waiting for a validation trigger
it would work like send button in yahoo messanger for example .. if you type anything , the send button enabled at once

بتاريخ:
شكرا على الاجابة .. بس ايه هو التريجر اللي اكتب فيه هذا الكويد
تريجر يتتبع هذا الحقل لحظة حدوث تغير فيه يقوم باجراء معين
مثلا لو كتبت حرف يعمل Enable و لو فرغته يعمل Disable
يعني مش عاوز استنى المستخدم لما ينتقل لحقل تاني و يعمل Validation


كما ذكر لك الأخ ( rose_4_pretty )... يمكنك في نفس العنصر إدراج When-Validate-Item Trigger ، بحيث قبل الخروج عنها يتم تنفيذ الأمر


بس أعزرني أنا رديت في الصباح وكنت مستعجل ، فنسيت أقل لك شيء !!!

عندما تجعل خاصية Enable الي القيمة Property_False يؤدي الي إلغاء تمكين المستخدم من إستخدام زر أمر Tab مع زر الأمر المحدد ... وذلك لأنه يقم بتغيير خاصية Keyboard Navigable الي القيمة False ... فهنا يعتبر مشكلة!!!

عموماً يمكنك تغيير الكود السابق ليصبح كما يلي :

DECLARE
  ID_FLD  <DATA_TYPE>;
BEGIN
SELECT <FIELD_NAME>
INTO  ID_FLD
FROM <TABLE_NAME>
WHERE <FILD_OTHER = VALUE>;

IF(ID_FLD = <VALUE>)THEN
	SET_ITEM_PROPERTY('ITEM_NAME',ENABLED,PROPERTY_FALSE);
ELSE
	 SET_ITEM_PROPERTY('ITEM_NAME',ENABLED,PROPERTY_TRUE);
	 SET_ITEM_PROPERTY('ITEM_NAME',NAVIGABLE,PROPERTY_TRUE);
END IF;
END;





بالتوفيق

بتاريخ:
شكرا على الاجابة .. بس ايه هو التريجر اللي اكتب فيه هذا الكويد
تريجر يتتبع هذا الحقل لحظة حدوث تغير فيه يقوم باجراء معين
مثلا لو كتبت حرف يعمل Enable و لو فرغته يعمل Disable
يعني مش عاوز استنى المستخدم لما ينتقل لحقل تاني و يعمل Validation



فهمت عليك

على مستوى الفورم when_new_form_instance
وعلى مستوى نفس البلوك when-new_block_instance

اضف الكود بالاضافة الى خاصية navigation اللي حدثنا عنها مشكور الاخ MMA.
بتاريخ:
  • كاتب الموضوع

المشكلة بردو موجودة و هي الكود بيتنفذ مره واحدة في حالة when-new-form-instance و when-new-block-instance
هل يوجد TRIGGER على مستوى الـ ITEM يتنفذ كل ما المستخدم يضغط على زرار على الـ Keyboard
هذا فقط ما اسأل عنه .. ياريت اسم الـ TRIGGER دا لو موجود
و شكرا لكل من حاول التفكير و الرد :rolleyes:

بتاريخ:

اخي الكريم لاتحذف الكود الموجود على when validate item

احتفظ فيه على ال text item كمان

بتاريخ:

السلام عليكم و رحمة الله و بركاته
أعتقد اخى الحبيب انك لابد من كتابة هذا الكود فى التريجر و الذى يتم اطلاقة بعد الانتهاء من الكتابة فى text_item
و اسم هذا التريجر ----- Post_text_item
و حتى يتم تطبيق ما تريد على البيانات المطبقة فى قاعدة البيانات فلابد من اعادة كتابة الكود فى الحدث Post_query

بتاريخ:

مين قال ان فى قصور فى الاوراكل

القصور فينا احنا


انا اخيرا والحمد لله وبعد استعارة فكرة الاخ وليد الذى اشكره كل الشكر على هذه الفكرة


عملت الفورمة اللى تعبتنى قوى دى لكن بعد انجازها أسعدتنى جدا جدا جدا

وهذه هى الخطوات

1-أنشئ فورمة جديدة بكنترول بلوك وسميه BLOCK3 وكنفس جديد

2-اعمل عليها TEXT_ITEM وسميه T_X واعمل BUSH_BUTTON وسميه P_B

3-اعمل تريجر WHEN_NEW_FORM_INSTANCE واكتب فيه الكود التالى

:GLOBAL.SEC:='1';
DECLARE
TIM TIMER;
BEGIN
TIM:=FIND_TIMER('TIMER1');
IF NOT ID_NULL(TIM) THEN 
	DELETE_TIMER('TIMER1');
END IF;
TIM:=CREATE_TIMER('TIMER1',300,REPEAT);
END;



وعلى مستوى الفورمة ايضا اعمل تريجر WHEN_TIMER_EXPIRED واكتب فيه الكود التالى

DECLARE
X NUMBER;
T_X ITEM;
P_STATUS VARCHAR2(20);
BEGIN
X:=:GLOBAL.SEC;
IF X>1 THEN
	T_X:=FIND_ITEM('BLOCK3.T_X');
	IF :T_X IS NULL THEN
	SET_ITEM_PROPERTY('P_B',VISIBLE,PROPERTY_FALSE);
	ELSIF :T_X IS NOT NULL THEN
	P_STATUS:=GET_ITEM_PROPERTY('P_B',VISIBLE);
	IF P_STATUS='FALSE' THEN
	SET_ITEM_PROPERTY('P_B',VISIBLE,PROPERTY_TRUE);
	SET_ITEM_PROPERTY('P_B',ENABLED,PROPERTY_TRUE);
	SET_ITEM_PROPERTY('P_B',NAVIGABLE,PROPERTY_TRUE);
  END IF;
	END IF;
	END IF;
X:=X+1;	
:GLOBAL.SEC:=X;
END;



وبعد كده اعمل COMPILE وRUN

وسامحونى على كلامى لانى لسة مبتدئ وسعدت جدا لما عملت الفورمة دى

وشكرى للمنتدى الجميل ده واعضاؤه


النموذج فى المرفقات

New_Folder.zip

تم تعديل بواسطة محمد فتحى باشا

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

الأخ محمد فتحي
فكرتك كويسة طبعاً ... انما استخدام الـ TIMER بيقلل اداء الفورم لأنه بيزود ما يطلق عليه Network Round Trip
لأنه كل ثانية او حسب الوقت اللي انت عاملة بـ Fire الـ Trigger حتى لو المستخدم ما عملش اي حاجة
في حاجة بسيطة بعيدة شوية عن الموضوع ... ابقى غيّر خاصية الـ ENABLE للزر بدلاً من تغير خاصية الـ VISIBLE
المطلوب طريقة تعمل Fire لـ Trigger بمجرد كتابة اي شيء في Item لحظياً يعني يعمل Fire لكل حرف
و شكراً للسادة الأعضاء اللي شاركوا معانا

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

باين كدا الموضوع مالهوش حل و لا في ردود جديدة في اليومين اللي فاتوا :P

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

خلاص يا جماعة ... أنا حليت المشكلة
أنظر الملف المرفق

|
|
|
V

sample.zip

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

مشكور اخي الفاضل على هذه الفكره العبقريه ... حيث انه لايوجد فعلا ترجرز تعمل على الرن تايم ولاثيما يمكننا استخدام التايمر ولكنها تستهلك جزء كبير من النتورك ... ففعلا هذه فكره وان كانت غريبه فهى ممكنه وكما نقول افتكاسه

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

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

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

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

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

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.