الدرس التاسع - القوائم
صفحة 1 من اصل 1
الدرس التاسع - القوائم
الدرس التاسع
القوائم:
نادراً ما نجد برنامجاً يخلوا من القوائم Menus ..
والقوائم تنقسم إلى ثلاث أنواع :
1 - قوائم ريسية , وهي القوائم التي تأتي عادة أعلى النوافذ
كقائمة "ملف" و "تحرير" في أي نا فذة من نوافذ وندوز
2 - قوائم فرعية Context Menu و هي القوائم التي تنبثق عادة عند النقر على زر الفأرة الأيمن
مثل قائمة التحرير في محررات النصوص
3- قوائم شريط المهام وهي القوائم التي تنبثق من أيقونات البرامج الي لها إختصارات في شريط المهام
كقائمة المسنجر
وطريقة التعامل مع القوائم بأنواعها المختلفة متشابهة جدا في معظم لغات البرمجة ومنها السي شارب
في درسنا اليوم سنضيف قائمة للتطبيق من النوع الثالث
حيث سنضيف إليها جميع وضائف الأزرار في النافذة الرئيسية
وسنضيف أيضاً خاصية إخفاء النافذة الرئيسية , وإضافة إيقونة للتطبيق في شريط المهام
إيقونة شريط المهام Notify Icon
وهي الإيقونات التي تظهر عادة في شريط المهام بجانب الساعة
مثل إيقونات المسنجر و الشبكة وغيرها
إفتح نافذة التطبيق الرئيسية , وإسحب كائن إيقونة التنبية من صندوق الأدوات من جزء Components
ستجد الإيقونة في الشريط الأصفر تحت النافذة , إخترها بالنقر عليها مرة واحدة بزر الفأرة الأيسر
ثم إذهب إلى جدول الخصائص ومن خاصية Icon إختر الإيقونة المناسبة
وغير خاصية Text إلى "مشغل الصوت والفيديو"
وعند تشغيل التطبيق ستلاحظ إيقونة التحذير التي إخترتها موجودة في شريط المهام
الآن سنضيف خاصية إخفاء النافذة للتطبيق وتعليمة إخفاء النافذة بسيطة جداً :
كود:
this.Hiade();
حيث أن this تمثل النافذة الحالية وهي النافذة الرئيسية
بقي أن نجد المكان المناسب لوضع تعليمة الإخفاء
وأفضل مكان لهذه التعليمة هي عند تصغير النافذة الرئيسية للبرنامج
حيث ستختفي النافذة من شريط المهام و لا يظهر منها سوى إيقوانة التنبية التي إخترناها
ولعمل ذلك يجب أن نكتب تعليمة الإخفاء في حدث Resize للنافذة , وهذا الحدث ينطلق عند تغيير حجم النافذة
ولكن هناك مشكلة , المفروض أن نخفي النافذة فقط عندما يتم تصغير النافذة , ولكن هذا الحدث ينطلف عند تصغير أو تكبير النافذة
وبالتالي فيجب أن نضيف جملة شرط if نختبر فيها حالة النافذة فإذا كانت النافذة مصغرة يتم تنفيذ كود الإخفاء
ونختبر حالة النافذة من خلال خاصية WindowsState من خصائص الكائن this والذي يمثل النافذة الرئيسية
فالتعليمة التالية ترجع قيمة تمثل حالة النافذة :
كود:
this.WindowState
ونتائج هذه الخاصية الشائعة هي ثلاث نتائج "حالات" :
1- الحالة العادية , وهي حالة تكون فيها النافذة بحجمها الأصلي كما في التصميم وترجع بقيمة :
كود:
FormWindowState.Normal
2- الحالة المكبرة , وهي حالة تكون فيها النافذة مكبرة ملئ الشاشة من زر التكبير في أعلى النافذة وترجع بقيمة :
كود:
FormWindowState.Maximized
3- الحالة المصغرة , وهي حالة تكون فيها النافذة مصغرة وموجودة فقط في شريط المهام وترجع بقيمة :
كود:
FormWindowState.Minimized
والحالة التي تهمنا هي آخر حالة , حيث سنختبر خاصية حالة النافذة WindowsState فإذا كانت Minimized فيتم تنفيذ كود الإخفاء
إذهب إلى نافذة التصميم , وإختر النافذة الرئيسية بالنقر مرة واحدة على مكان فارغ بالنافذة
ثم إذهب إلى جدول الخصائص جزء الأحداث , وأنقر مزدوجاً على حدث Resize
ستنتقل إلى الكود , لنكتب هناك كود الإخفاء مع جملة if :
كود:
if(this.WindowState == FormWindowState.Minimized)
{
this.Hide();
}
السطر الأول يمثل جملة شرطية تختبر حالة النافذة إذا كانت مصغرة Minimized أم لا
فإذا كانت مصغرة يتم تنفيذ الكود بين الحاصرتين وهو تعليمة الإخفاء
إنتهينا من خاصية الإخفاء , بقي أن نضيف خاصية إعادة الإظهار
وتعليمة الإظهار بسيطة أيضاً , وقد ذركناها في دروس سابقة :
كود:
this.Show();
حيث أن this يمثل النافذة الرئيسية
ولكن هذا الكود لا يكفي فهو يظهر النافذة على شريط المهام , ولا يقوم بتكبيرها
وبالتالي يجب إضافة كود تكبير النافذة , وهو تغيير لحالة النافذة WindowsState إلى Maximized
أي أن تعليمة تكبير النافذة كاملة هي :
كود:
this.WindowState = FormWindowState.Normal;
تعليمة الإظهار والتكبير سنضعها كما قلنا في حدث النقر المزدوج على إيقونة التنبية
إذهب إلى التصميم وأنقر مزدوجاً على إيقونة التحذير notifyIcon1 في الشريط الأصفر أسفل النافذة ستنتقل إلى الكود
أكتب هناك تعليمات الإظهار والتكبير :
كود:
this.Show();
this.WindowState = FormWindowState.Normal;
الآن شغل البرنامج وصغر النافذة , ستختفي النافذة من شريط المهام , وتبقى فقط إيقونة التحذير
وإذا نقرت عليها مزدوجاً ستظهر النافذة مرة أخرى .
القوائم الفرعية :
أحياناً نحتاج إلى التفاعل مع البرنامج وهو مخفي , كأن نوقف التشغيل مثلاً
في حالة البرنامج الحالية , يجب أولاً إظهار النافذة الرئيسية بالنقر مزدوجاً على إيقونة التحذير
ثم عندما تظهر النافذة نختر زر الإيقاف ..
يمكن إختصار هذا الإجراء بإضافة قائمة على إيقرنة التحذير , تحتوي على بند "إيقاف"
وبالتالي يمكن إيقاف التشغيل بدون إظهار النافذة الرئيسية
سنضيف إلى البرنامج كائن القائمة التي ستحتوي على جميع أوامر التطبيق
إذهب إلى التصميم , وإسحب كائن القائمة الفرعية من صندوق الأدوات :
ستجد كائن القائمة أضيف إلى الشريط الأصفر أسفل النافذة
إختر القائمة بالنقر عليها مرة واحدة , ستلاحظ أن شكل النافذة الرئيسية تغير و أضيفت إليها قائمة تحت شريط العنوان
هنا ستقوم بتحرير عناصر القائمة , ولإضافة عنصر جديد للقائمة أنقر مزدوجاً على المربع الأبيض الكتوب عليه Type Here
وأكتب هناك " إيقاف التشغيل "
بهذا تكون قد أضفت عنصر جديد للقائمة وهو عنصر إيقاف التشغيل
أضف عنصر جديد تحت العنصر السابق وليكن " إنهاء البرنامج "
الآن انقر في أي مكان فارغ في النافذة , ثم إخرت مرة أخري كائن القائمة من الشريط الأصفر في الأسفل
ولكن هذه المرة سنقوم بإضافة كود إلى كل عنصر من عناصر القائمة , إنقر مزدوجاً على عنصر " إيقاف التشغيل"
ستنتقل إلى الكود , لتكتب هناك تعليمة إيقاف التشغيل وهي نفس التعليمة في زر إيقاف التشغيل في النافذة الرئيسية من الدروس السابق :
كود:
StopFile();
ثم إذهب إلى التصميم مرة أخرى و أنقر مزدوجاً على عنصر " إنهاء البرنامج"
وأكتب هناك كود إغلاق البرنامج الذي عرفناه من الدروس السابقة :
كود:
System.Environment.Exit(0);
بقي أن نربط القائمة بإقونة التحذير , إذهب إلى التصميم و إختر إيقونة التحذير notifyIcon1 من الشريط الأصفر بالأسفل
ومن خاصية ContextMenuStrip إختر contextMenuStrip1
الآن جرب تشغيل البرنامج , و صغر النافذة الرئيسية و أنقر بزر الفارة الأيمن على زر التحذير
ستظهر لك القائمة الفرعية
الواجب
أضف عناصر أخري للقائمة تحتوي على جميع خصائص البرنامج
تشغيل , إيقاف مؤقت , تقديم , تأخير , فتح ملفات , التحكم بالألبومات , ملئ الشاشة, ....
.نهاية الدرس الخامس عشر .
مواضيع مماثلة
» الدرس الثالث - الجمل الشرطية:
» الدرس الخامس - تشغيل ملف فيديو
» الدرس الثاني - المتغيرات
» الدرس الرابع - الإجراءات
» الدرس الثامن - المصفوفات:
» الدرس الخامس - تشغيل ملف فيديو
» الدرس الثاني - المتغيرات
» الدرس الرابع - الإجراءات
» الدرس الثامن - المصفوفات:
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى