شريط الأدوات وسطر الحاله Toolbars and Status Bars

فى هذا الفصل نشرح كيفيه تصميم أدوات شريط الأدوات وكيفيه إضافتها إلى شريط الأدوات وكذلك نشرح الحاله وكيفيه إظهار الرسائل فيه.

معنى شريط الأدوات وسطر الحاله

* شريط الأدوات : هو ذلك الشريط الموجود تحت شريط قائمه الاختيارات والذى يحتوى على مجموعه من الأدوات تحقيق كل منها وظيفه مقابلة لإختيار من اختيارات القائمه ، فمثلاً الأداة التى تحتوى على صورة الأسطوانه (Disk) تستخدم لحفظ الملف الحالى وهذا ما يقابل الاختيار Save وهكذا. وعند استخدام VC++ لتخليق برنامج يتم تخليق مجموعه الأدوات الأساسيه تلقائياً كما حدث فى جميع البرامج السابقه من نوع SDI ، ولكن كيف يمكن حذف أحد هذه الأدوات أو إضافة أدوات جديدة وكيفيه توظيفها هذا ما سوف نراه فى هذا الفصل.

* سطر الحاله : هو ذلك السطر الموجود فى نهاية شاشه البرنامج ، ويقوم بعرض حاله البرنامج ، حيث يعرض هذا السطر رسالة عن الموقف الحالى فإذا أشار المستخدم بالفأرة على اختيار ما يقوم سطر الحاله بإظهار رساله عن استخدام هذا الاختيار ، كما يقوم سطر الحاله بإظهار حاله المفاتيح المشهوره (Caps , Num , SCROLL) ، ويقوم برنامج VC++ بتخليق رسائل للإختيارات الأساسيه للبرنامج. ولكن كيف يمكن إضافه رسائل للإختيارات الجديدة هذا ما سوف نراه.

فصائل شريط الأدوات وسطر الحاله

يمثل شريط الأدوات (Toolbar) الفصيله CToolBar ويمثل سطر الحاله بالفصيلة CStatusBar وكلاً الفصيلتان مشتقة من الفصيلة CcontrolBar التى تشتق من الفصيلة Cwnd.

ويقوم معالج برنامج (App Wizard) VC++ بتخليق هذه الفصائل تلقائياً عند اختيارك ذلك فى خطوات تخليق البرنامج ويضعها فى الملفان MainFram.h و MainFram.cpp.

ويتم تعديل شريط الأدوات عن طريق برنامج فرعى داخل VC++ يسمى Graphic Editor ، وفيما يلى نشرح كيفيه تعديل شريط الأدوات وسطر الحالة.

أولاً : شريط الأدوات ToolBars

يتكون شريط الأدوات من مجموعه من الأدوات المتجاورة أفقياً أو رأسياً ويمكن أن تقسم إلى مجموعات ، وتخزن الصور الموجودة على الأدوات فى ملف خاص تأخذ الامتداد rc ، وعند الضغط (النقر) على الأداة ترسل الأداة رساله إلى البرنامج كما يحدث مع اختيارات قائمه الاختيارات (Command) ويأخذ شريط الأدوات مكان أداة واحدة بالاسم IDR-MAIN Frame ولكن يقسم إلى وحدات (الأدوات) بمساحه 15×16 نقطه (Pixel) وهذا ما سوف نراه أثناء تصميم أدوات شريط الأدوات.

حالات أدوات شريط الأدوات

تأخذ الأدوات فى شريط الأدوات حالات مختلفه ، فيمكن أن تكون الأداة فى الوضع الطبيعى أو تم اختيارها أو تم النقر عليها أو غير ذلك ، نوضح هذه الحالات ومعنى كل حال فى الجدول 13-1.

الحاله

المعنى

0

(Normal) وهو الوضع الطبيعى للأداة.

TBBS - CHECKED

الأداة معلمه بالعلامه (ü) ، أى أن وظيفتها فعالة.

TBBS - PRESSED

الأداة تم اختيارها أى تم النقر عليها مرة.

TBBS-DISAOTED

الأداة فى وضع غير فعال أى لا تعمل أى أن النقر عليها لا يؤدى إلى شئ.

TBBS- INDETER MIN

الأداة فعاله ولكن وضعها غير محدد.

TBBS - CHECKED

TBBS - DISABLED

الأداة معلمة بالعلامه (ü) ولكنها غير فعاله أى لا يمكن تغييرها.

جدول 13-1 حالات أدوات شريط الأدوات

من جدول 13-1 يتضح أن الأداة لها أكثر من إستعمال ، فيمكن أن تستعمل استعمال زر الأوامر بمعنى أن النقر عليها يؤدى إلى تحقيق وظيفة ما مثل أداة حفظ الملف وأداة فتح الملف وغيرهما ، وفى هذه الحاله تسمى Push button.

- ويمكن أن تستعمل بأن يكون لها وضعان الوضع الأول عندما تكون الأداة بارزه فهذا يعنى أن وظيفتها غير محققه والوضع الثانى عندما تكون غير بارزه وهذا يعنى أن وظيفتها محققه ، وهذا ما يحدث مع أدوات طبيعيه خطوط الكتابه مثل الأداة Bold ، فعندما تكون الأداة بارزة فهذا يعنى أن خاصيه Bold غير محققه والعكس صحيح.

- ويمكن أن تقوم الأداة بعمل آخر وهو أن تأخذ العلامه (ü) أو لا تأخذها وفى كل مرة تحقق وظيفه مختلفه.

كيفيه عمل الأداة

كما أشرنا غالباً ما تأخذ الأداة وظيفه أحد اختيارات القائمه ، ولتحقيق ذلك نعطى الأداة نفس اسم متغير اختيار القائمه ، فمثلاً الاختيار Save من القائمه الفرعيه File يأخذ الاسم ID-FILE-SAVE وبالتالى تأخذ الأداة نفس الاسم ، وتنشأ داله بهذا الاسم.

- وعند النقر على الأداة تصدر الأداة رسالتان هما Command و MI Command الرساله Command لتحقيق عمل الأداة ، والرساله MI Command لتغيير حاله الأداة ، فمثلاً إذا كانت الأداة تأخذ العلامة (ü) يتم استدعاء الداله Set Check ( ) ، وإذا كانت تأخذ طبيعه فعالة أم لا يتم استدعاء الداله Enable ( ) وهكذا المتغير حالة الأداة.

ويضيف برنامج (App Wizard) VC++ سطور تعريف أدوات شريط الأدوات فى ملف الموارد (Resurce -File) المصاحب للبرنامج ، ولمشاهدة هذه السطور إفتح أحد الملفات ذات الامتداد rc فى البرامج السابقه وتابع سطوره تجد السطور التاليه :

IDR-MAINFRAME TOOLBAR DISCARDABLE 16 , 15

BEGIN

BUTTON ID-FILE-NEW

BUTTON ID-FILE-OPEN

BUTTON ID-FILE-SAVE

SEPARATOR

BUTTON ID-EDIT-CUT

BUTTON ID-EDIT-COPY

BUTTON ID-EDIT-PASTE

SEPARATOR

BUTTON ID-FILE-PRINT

BUTTON ID-APP-ABOUT

END

فى هذه السطور يتم تعريف أسماء متغيرات لأدوات شريط الأدوات وهى نفس أسماء المتغيرات المصاحبه لإختيارات القائمه لأنهما ينفذان نفس الدوال ، فتجد مثلاً المتغير ID-File-NEW مصاحب لأداة فتح ملف جديد فى شريط الأدوات لذلك سبق بالتعريف BUTTON ، ونفس المتغير مصاحب لإختيار القائمه NEW.

مثال : شريط الأدوات

فى هذا المثال نقوم بإضافة أدوات جديدة إلى شريط الأدوات مع حذف بعض الأدوات الموجودة وتوظيف الأدوات الجديدة ، وقبل متابعة خطوات تصميم البرنامج افتح ملف البرنامج Vcex 24 من الفهرس Chpt 13 ونفذه تحصل على نتيجه التنفيذ كما بالشكل 13-2.

والشكل 13-2 عبارة عن برنامج من نوع SDI ولكن يحتوى شريط الأدوات على أدوات جديدة ، جرب النقر على هذه الأدوات ولاحظ النتيجه ، فعند النقر على أداة الدائرة تلاحظ رسم دائره ، وعند النقر على أداة المربع تلاحظ رسم مربع وهكذا مع ملاحظه ظهور مربع صغير به اسم الأداة عند الوقوف بمؤشر الفأرة فوق الأداة.

clip_image002

خطوات تصميم البرنامج

1. ابدأ تطبيق جديد وذلك بإختيار NEW ثم Project Workspace ثم اكتب اسم للتطبيق وليكن Vcex 24 ثم Create.

2. حدد البرنامج من نوع Single document ثم تابع خطوات البرنامج بالنقر على NEXT أو إنهى الخطوات بالنقر على الاختيار Finsh فيتم تخليق برنامج بهذه المواصفات.

3. تعديل قائمه الاختيارات.

ابدأ بتعديل قائمه اختيارات البرنامج بحذف القائمه الفرعيه Edit وإضافه قائمه فرعيه جديدة وذلك كما يلى :

- من صندوق ملفات البرنامج اختار MENU ثم اختار IDR-MAINFRAME تحصل على قائمه الاختيارات الأساسيه للبرنامج.

- انقر مرة على القائمه الفرعيه Edit ثم اضغط مفتاح DEL على لوحه المفاتيح فيتم حذف قائمه Edit.

- فى نهاية القائمه اضف قائمه فرعيه باسم DRAW ثم اضف الاختيارات LINE , RECT , Circle كأختيارات فرعيه للقائمه DRAW.

n مع الاختيار CIrcle اكتب فى صندوق الخصائص فى الخانه Prompt الرسالة DRAW Circle\n Circle كما فى الشكل 13-3.

clip_image004

وهذا معناه أن الرساله DRAW Circle تظهر أسفل الشاشه عند الوقوف على هذا الاختيار وأن الكلمه Circle تظهر عند الوقوف بالفأرة على شريط الأداوت على الأداة Circle التى يتم تصميمها فى الفقرة التاليه ، وكلمه Circle تظهر فى مربع صغير وذلك لكتابتها بعد علامه \n أى أنه لإظهار كلمه أو جمله فى مربع صغير كملحوظه تكتب هذه الكلمه بعد العلامه \n.

- كرر الخطوة السابقه مع الاختيارات LINE , RECT بحيث تكتب معها رسائل فى خانة Prompt لتظهر فى سطر الحاله (Status Bar) مع كتابه الاختيار فى نهاية الرساله بعد العلامه \n ليظهر فى مربع صغير عند الوقوف بالمؤشر على هذه الأداة.

4. تعديل شريط الأدوات

- ابدأ بتعديل شريط الأدوات وذلك بحذف أدوات القص والنسخ واللصق إضافة أدوات جديدة وذلك كما يلى :

- من صندوق ملفات البرنامج إنقر رمز موارد البرنامج ثم إنقر Toolbar ثم إنقر IDR-MANFRAME مرتين تحصل على شاشه تعديل الرسومات (graphic Editor) وبه أدوات شريط الأدوات كما فى الشكل 13-4.

clip_image006

- احذف أدوات القص والنسخ واللصق وذلك بالنقر مرة واحدة فوق الأداة ثم الضغط على مفتاح Del على لوحه المفاتيح.

- يمكن لك أن تترك الأدوات الجديدة الفارغة مكانها أو تسحبها فى أى مكان شريط الأدوات وذلك بإستخدام الفأرة (جرب ذلك).

n استخدام لوحه الأدوات الموجودة على يمين الشكل لوضع رسومات على الأدوات الجديدة وذلك بوضع دائرة على الأداة الأولى ، ووضع مربع على الأداة الثانيه ووضع خط على الأداة الثالثه ، وبهذا ننتهى من تعديل أدوات شريط الأدوات كما فى الشكل 13-5.

clip_image008

- غير أسماء متغيرات الأدوات بحيث تأخذ كل أداة نفس المتغير الذى يأخذه اختيار القائمه المقابل لها وذلك بالنقر مرتين على الأداة فيظهر صندوق خصائص الأداة.

ثم من صندوق الخصائص من الاختيار ID ابحث عن المتغير ID-DRAW-Circle كما فى الشكل 13-6 ، فيصبح هذا المتغير هو نفس المتغير المصاحب لأداة رسم الدائرة.

clip_image009

5. كرر الخطوة السابقه بحيث تأخذ الأداة الثانيه المتغير ID-DRAW-RECT وتأخذ الأداة الثالثه المتغير ID-DRAW-LINE ، بهذا تم تصميم شريط الأداوت ويبقى توظيفها احفظ التغيرات.

6. توظيف اختيارات القائمه وأدوات شريط الأدوات

بعد تعديل قائمه الاختيارات وإضافه الاختيارات الجديدة ، وبعد تصميم أدوات شريط الأدوات يبقى كتابة الدوال التى تحقق الاختيارات والأدوات ويتم ذلك كما يلى :

- من صندوق ملفات البرنامج اختار MENU ثم IDR-MAINFRAME تحصل على قائمه اختيارات البرنامج.

- اضغط المفتاحين Ctrl + W للوصول إلى شاشه Class Wizard.

- من صندوق العناصر (Objects IDS) اختار ID-DRAW-CIRCLE من صندوق الرسائل (Messages) اختار Command ثم انقر زر Add Function ثم Ok ليتم إضافه داله بالاسم On- DRAW- Circle.

- كرر نفس الخطوة السابقه مع ID-DRAW-RECT و ID-DRAW-LINE ليتم إضافه دالتين بالأسماء On Draw Rect ( ) و On Draw Circle ( ).

- من صندوق الدوال اختار الداله On ID-DRAW-Circle ثم انقر زر Edit Code لكتابة سطور داله اختيار Circle واكتب السطور التاليه :

1 : int i ;

2 : CDC * PDC = GetDC ( ) ;

3 : for (i = 0 ; i < 1000 , i + = 10) {

4 : PDC ® Ellipse (50 , 150 , 400 , i + 100) ; }

فى هذه السطور

فى السطر رقم 2 يتم الاعلان عن المتغير PDC مؤشر من نوع الفصيله CDC التى تمثل مواصفات شاشه الرسم ، واستدعاء الداله GetDC ( ) التى تعيد مواصفات شاشه الرسم والاشارة إلى هذه المواصفات بالمتغير PDC.

فى السطر رقم 3 دوارة for للتكرار من 0 إلى 1000 والزيادة بمقدار 10.

فى السطر رقم 4 استدعاء للداله Ellipse ( ) التى تقوم برسم دوائر مختلفه طبقاً لتغيير قيمه المتغير i التى يتعين من الدوارة for فى السطر 3.

* داله الاختيار RECT

اكتب السطور التاليه :

1 : int I ;

2 : CDC * PDC = GetDC ( ) ;

3 : For (i = 0 ; i < 1000 , i + = 10) {

4 : PDC ® Rectangle (50 , 150 , 400 , I + 100) ; }

هى نفس السطور السابقه مع تغيير السطر رقم 4 من الداله Ellipse ( ) التى ترسم دائره إلى الداله Rectangle( ) التى ترسم مستطيل فنحصل على مجموعة مستطيلات متداخلة.

* داله الاختيار Line

1 : int i ;

2 : CDC * PDC = GetDC ( ) ;

3 : For (i = 0 ; i < 100 ; i + = 10) {

4 : PDC ® Move To (0 , 200) ;

5 : PDC ® Line To (500 , i) ;

6 : }

هى نفس السطور السابقه مع استبدال داله الرسم بداله رسم الخط وهى Line To ( ) فنحصل على مجموعه خطوط.

- ترجمة وتنفيذ البرنامج

ترجم ونفذ البرنامج بالضغط على المفتاحين Ctrl + F5 تحصل على نتيجه التنفيذ السابقه.

جرب استعمال البرنامج كما يلى :

n حرك مؤشر الفأرة فوق الأدوات الجديدة مثلاً فوق الأداة Circle تلاحظ خروج مربع صغير أسفل الأداة مكتوب فيه كلمه Circle وفى نفس الوقت تظهر رساله Draw Circle فى سطر الحاله. كما فى الشكل 13-7.

clip_image011

- كرر الخطوة السابقه مع الأدوات الآخرى وشاهد النتيجه.

- جرب استعمال الأدوات الجديدة فى شريط الأدوات ، انقر مثلاً الأداة Circle تلاحظ رسم مجموعه من الدوائر ، والنقر على أداة مستطيل يعطى مستطيلات وهكذا.

ثانياً : سطر الحاله Status Bar

كما أشرنا يقوم سطر الحاله بعرض رسائل عن موقف البرنامج الحالى.

وينقسم سطر الحاله إلى جزئين ، الجزء الأول يسمى Message Line Pane وهو المسئول عن عرض الرسالة المطلوبه ، والجزء الثانى يسمى Indicator Pane وهو المسئول عن عرض حالة بعض المفاتيح مثل Scroll , Num , Caps ، ولتغيير الشكل المبدئى لسطر واستخدامه بشكل منفصل يجب أولاً إلغاء الوضع المبدئى الذى يخلق بواسطة برنامج VC++ (App Wizard). ويتم تخليق الوضع المبدئى بإضافه مصفوفه إلى الملف MainFrame.cpp تمثل هذه المصفوفه سطر الحالة ولمشاهدة هذه المصفوفة إفتح الملف MainFrame.cpp وتابع سطوره تلاحظ وجود السطور التالية :

1 : Static UINT BASED-COPE indicators [ ] =

2 : {

3 : ID-SEPARATOR ,

4 : ID-INDICATOR-CAPS ,

5 : ID-INDICATOR-NUM ,

6 : ID-INDICATOR-SCRL ,

7 : } ;

فى هذه السطور

فى السطر رقم 1 يتم الاعلان عن مصفوفه بالاسم Indicators .

فى السطر رقم 3 المتغير ID-SEPARATOR للإشارة إلى مكان كتابه الرسالة.

السطور 4 ، 5 ، 6 متغيرات تعبر عن المفاتيح SCRoll , Num , Caps.

ويتم استدعاء الداله SetIndictors ( ) التى تقوم بتهيئه سطر الحالة حسب عناصر مصفوفه سطر الحاله indicators [ ].

ويتم استدعاء الداله SetPaneText ( ) لوضع الرساله المطلوب إظهارها فى سطر الحالة.

كل هذه العمليات تلقائياً عند تخليق برنامج بواسطه معالج (App Wizard) VC++.

تعديل رسائل سطر الحاله

لمعرفة أو تعديل رسائل سطر الحاله نعرض متغيرات البرنامج والرسائل المصاحبه لها ويتم ذلك كما يلى :

- افتح ملف البرنامج السابق Vcex24 (إذا كنت أغلقته).

- من صندوق ملفات البرنامج اختار رمز موارد البرنامج ثم انقر مرتين على String Table تحصل على جدول بالمتغيرات الموجودة فى البرنامج والرسائل المصاحبه لها كما فى الشكل 13-8.

clip_image013

شكل 13-8

فى الشكل 13-8 توجد خانه بالاسم ID وهى خانه متغيرات البرنامج وتوجد خانه بالاسم Caption وتحتوى على الرسائل المصاحبه لهذه المتغيرات.

- انقر مرتين على المتغير ID-APP-ABout تحصل على صندوق التعديل فى بيانات المتغير.

- فى خانه Caption استبدل الرسالة الموجودة بالرسالة التاليه :

this Program display how you can Change and Create Toobar and Status Bar \n About.

بهذا تحصل على الشكل 13-9.

clip_image014

- أعد ترجمة وتنفيذ البرنامج ثم جرب إستعمال البرنامج وذلك بتحريك مؤشر الفأرة فوق أداة (?) About تلاحظ ظهور الرسالة الجديدة فى سطر الحالة.

ملحوظة

جدول المتغيرات (String table) عبارة عن جدول مصاحب للبرنامج يحتوى على مجموعة من المتغيرات ويقابل كل متغير رسالة (String) وعند الرغبه فى استعمال الرسالة المصاحبه للمتغير يتم التعامل مع المتغير ويمكن إنشاء اكثر من جدول للمتغيرات (String table).

التسميات: