السلام عليكم
ما هو Actionlist وكيف استفيد منه و كيف اتعامل معه وشكرا :rolleyes:
السلام عليكم
ما هو Actionlist وكيف استفيد منه و كيف اتعامل معه وشكرا :rolleyes:
{ربى زدنى علما}
TactionList قائمة المهام. :
طريقة ديلفي في التعامل مع الأحداث Events تعد مفتوحة. يمكنك كتابة إجرائية واحدة ثم تلحقها لحدث OnClick لزر من toolbar ولعنصر من القائمة menu.
و يمكنك أيضا أن تلحق نفس هذه الإجرائية بحدث Onclick لمجموعة أخرى من الأزرار أو عناصر من القائمة , أو لكل مكون من VCl ما دامت إجرائية الحدث التابعة له تقبل نفس الباراميترات أي Sender: Tobject, هذا لأن Event Handler يستعمل باراميتر sender للإشارة إلى المكون Object الذي أطلق الحدث.
سيكون من الصعب المزامنة بين وضع الزر و بين حالة عنصر القائمة.
إذا كان لدينا مثلا عنصر من القائمة و زر في toolbar يغيرون خاصية ما من "فاعلة " إلى "غير فاعلة", بعد ذلك كل مرة نغير فيها هذه الخاصية يجب علين أن نعدل وضعية الزرحتى يظهر مضغوطا وتغير حالة عنصر القائمة ليظهر علامة بجانبه.
للتَغَلُّب على هذه المشكلة , يَتضمّنُ ديلفي ما يسمى ب event-handling architecture يستند في ذلك على على Actions: و هو عنصر لامرئي TactionList.
Action (أَو command) كلاهما يُشيرُ إلى المهمة التي يجب أن تنفذ عندما تقوم بالنقر علىعنصر القائمةِ أَوعلى زرِّ Button . و تقوم بتحديثِ وضعية كُلّ العناصرالمتصلة بنفس هذه action.
سنعطي مثالا تطبيقيا تظهر فيه كل مزايا هذا المكون TactionList الذي يجب أن لا يستهان بقدراته.
يحتوي النطبيق على زر button1 , checkBox1 و على عنصر قائمة رئيسية: mainmenu1 و كذلك على Tactionlist .
قم بالنقر مرتين غلى العنصر Tactionlist1 ستظهر لك نافذة, قم بالضغط في لوحة المفاتيح على <Insert> لنقوم بإحداث عنصر جديد Action1.
أنقر عليه مرتين لتحصل على هذه الإجرائية في المحرر:
procedure TForm1.Action1Execute(Sender: TObject); begin end;
في نافذة object inspector حدد في خاصية Action لكل من Button1 و زر القائمة: Action1 .
قم بكتابة uncheked في خاصية Caption التابعة لهذه action, في نافذة object inspector.
ستلحظ ان الكابشين لكل واحدة منهم قد تغير و قد كتب فيه: Uncheked;
إذا ما نفذت التطبيق من هذه النقطة فسترى العناصر كلها غير فعالة لأننا لم نحدد ما الذي يجب أن تفعله Action التي أحدثناها.
جميل.
نعود لللأجرائية Action1Execute التا حررها لها ديلفي, يجب أن نملأها بالكود المناسب حتى نكمل العمل الذي ستقوم به الأكشن.
procedure TForm1.Action1Execute(Sender: TObject); begin // do some thing and then initialize all components // handling the same action CheckBox1.Checked:= not CheckBox1.Checked; if CheckBox1.Checked then Action1.Caption:= 'Checked' else Action1.Caption:= 'Unchecked'; end;
يا سلام!! الآن عند التنفيذ نرى أهمية TactionList التي قمنا بإنشائها.
الأكشن تقوم بتحديث كل من الزر و عنصر القائمة في نفس الوقت.
هذا المثال طبعا لا يقوم بأي شيئ يذكر له أهمية غير انه ساعد في معرفة أهمية استخدام Tactionlist.
ديلفي تحتوي على مجموعة من الأكشن توفرها للمبرمج: The standard Actions مثل Cut, Coppy, Paste, delete, undo...etc

ستجد في الديلفي مثالا قويا يبرز مزايا هذا المكون: Windows2000 Client Application . قم بالنقر على
<file> ,<New>,<Other..>,<Windows2000 Logo Application>...
(h)
سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين
يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.
اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.
الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.
إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.
و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله
أخوكم مراد
هذا مثال رائع يجمع كل Srtandard Actions في تطبيق واحد..
المثال أظن أنه موجود في مجلد Demo الموجود في مجلد delphi المثبت على حاسوبك.
لقد أرفقته مع الموضوع في حالة ما لم يكن موجودا.
(h)
تم تعديل هذه المشاركة بواسطة ikossan في 26 يناير 2005 في 01:58
سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين
يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.
اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.
الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.
إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.
و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله
أخوكم مراد
:rolleyes:
المثال الاول فى مشكلة
CheckBox1.Checked:= not CheckBox1.Checked;
شكرا على المساعدة والتوضيح
{ربى زدنى علما}
سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين
يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.
اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.
الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.
إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.
و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله
أخوكم مراد
والله يا أخي لا أعلم ما هو الإشكال في هذا السطر :unsure: .
الحقل CheckBox1.Checked كما هو معروف تعبر عن حالة المركب CheckBox1 هل عليه علامة أم لا. يعني أنه من صنف المنطقي boolean.
يعني إذا أردنا قلب الحالة المنطقية لهذا الحقل من: True إلى False , أو من false إلى true.
يكفي أن ندخل عليه not فهي ستقوم بقلب حالته المنطقية. make a toggle.
حمل آخر مثال فقد استبدلت CheckBox1 بمكون آخر Tpanel1.
أنتظر منك توضح أكثر ما تقصد :blink:
سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين
يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.
اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.
الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.
إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.
و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله
أخوكم مراد
عندما قمت باستخدامه وشغلت البرنامج الCheckbox ظل يتغير حلته من checkect الى not checkedt وبالعكس الى ان يتوقف البرنامج عن العمل
{ربى زدنى علما}
يجب أن لا تربط خاصية Action للمركب CheckBox1 باللأكشن التي أنشأتها action1.
أظن أن هذا هو السبب في ذلك.
سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين
يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.
اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.
الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.
إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.
و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله
أخوكم مراد
هذا الموضوع مغلق.