الدرس السابع عشر : تغيير الواجهة الرسومية - دورة CSharp 2005
الدرس السابع عشر تغيير الواجهات الرسومية في هذا الدرس سنستخدم برنامج خاص بإنشاء واجهات رسومية للتطبيق قم بتحميل البرنامج من هنا : برنامج صنع الواجهات واجهة هذا البرنامج مبسطة وواضحة , حيث تقوم من خلالها بتحديد ألوان وخلفيات عناصر التطبيق كتحديد خلفية النوافذ و ألوان الخطوط وغيرها http://www.7oma.com/csharp/images/image17-1.JPG يعتمد هذا البرنامج على تسجيل القيم المدخلة له في ملف Xml على أن برنامج مشغل الميديا سيقرأ القيم من هذا الملف والبرنامج يقوم بإنشاء مجلد جديد بإسم الستايل ويضع داخله ملف XML الذي يحتوي على الألوان وأسماء الصور و يضع داخلة أيضاً الصور المختارة للستايل http://www.7oma.com/csharp/images/image17-2.JPG بعد إنشاء الستايل نقوم بنسخ المجلد كاملاً إلى مجلد جديد سنقوم بإنشاءه في مسار البرنامج بإسم Styles حيث سيحتوي هذا المجلد على جميع الستايلات الناتجة من برنامج صنع الواجهات : http://www.7oma.com/csharp/images/image17-3.JPG للتعامل مع الواجهات المتعددة , نحتاج إلى قائمة منسدلة جديدة تحتوي على جميع الستايلات إعداد النوافذة لتقبل الستايلات سنحتاج لتغيير أسماء معظم الكائنات وذلك لكي يسهل علينا التعامل معها بواسطة أسمائها : إفتح تصميم النافذة الرئيسية وإختر زر التشغيل وغير إسمه من الخاصية Name إلى btnPlay وغير إسم زر الإيقاف إلى btnStop زر التسجيل - btnRecord زر إيقاف التسجيل - btnStopRecord زر التقديم - btnForward زر التأخير - btnBackWard زر ملئ الشاشة - btnFullScreen زر الإيقاف المؤقت - btnPause زر فتح الملفات - btnOpen زر التحكم بالألومات - btnAlbumes شريط التنقل عبر الملف - barMove شريط التحكم بالصوت - barVol صندوق طريقة التشغيل - boxMthd ملاحظة عند إختيار صندوق طريقة التشغيل تأكد أنك إختر الصندوق وليس أحد مكوناته حتى تظر المربعات حول الصندوق http://www.7oma.com/csharp/images/image17-5.JPG ومن نافذة الألبومات قم بتغيير إسماء الكائنات أيضاً : زر ألبوم جديد - btnNew زر حفظ الألبوم - btnSave زر حذف الألبوم - btnDelete زر إضافة ملفات - btnAdd زر حذف ملف - btnRemove زر نقل الملف للأعلى - btnUp زر نقل الملف للأسفل - btnDown زر موافق - btnOk زر إلغاء الأمر - btnCancel تأكد عند نسخ الأسماء أنك نسخت الكلمة فقط دون فراغات في البداية أو النهاية تغيير الأسماء سيساعدنا كثيرا في التعامل مع الكائنات بواسطة أسمائها مثلاً للتعامل مع كائن زر التشغيل من الكود نستدعيه بإسمه btnPlay و للتعامل مع زر الإيقاف btnStop وهكذا .. الآن إفتح تصميم النافذة الرئيسية و أختر كائن التشغيل التتابعي و غير الخاصية BackColor إلى Trasparent : http://www.7oma.com/csharp/images/image7-7.jpg طبق نفس الخطوة السابقة لكل من كائن التشغيل العشوائي , لافتة طول الملف والوقت الحالي للتشغيل, صندوق طريقة التشغيل , جميع أزرار التحكم - تشغيل , إيقاف , تقديم .... إختر زر التشغيل وغير خاصية size إلى 40;40 وكذلك لجميع أزرار التحكم وغير خاصية BackgroundImageLayout إلى Streatch لجميع أزرار التحكم ثم أحذف القيمة الموجودة أمام خاصية Image وخاصية BackgroundImage لجميع أزرار التتحكم : http://www.7oma.com/csharp/images/image17-4.JPG ليصبح شكل النافذة هكذا : http://www.7oma.com/csharp/images/image17-6.JPG إفتح تصميم نافذة الألبومات وكرر نفس الخطوة على جميع أزرار التحكم هناك إذا أردت إضافة صور لها أما إذا أردت أن تبقى أزرار نافذة الألبومات عادية فلا تغير شيئ من خصائصها إختر كائن حاضن الفيديو وغير خاصية BackgroundImageLayuot إلى Streatch الآن إفتح المجلد Debug الموجود داخل المجلد bin داخل مجلد المشروع وأضف مجلد جديد بهذا الإسم : كود PHP:
http://www.7oma.com/csharp/images/image17-3.JPG إفتح تصميم النافذة الرئيسية وإضف كائن القائمة المنسدلة : http://www.7oma.com/csharp/images/image11-3.jpg غير خاصية Name فيه إلى sc وخاصية Text إلى "إختر الستايل" تحميل أسماء الستايلات نحتاج إلى طريقة لتحميل أسماء الستايلات إلى قائمة إختيار الستايل sc وكما قلنا سابقاً فإن كل ستايل هو عبارة عن مجلد داخل مجلد Styles وبالتالي فإن الستايلات المتوفرة هي جميع المجلدات داخل مجلد Style وهنا سنستخدم دالة لإيجاد المجلدات الفرعية دلخل مجلد رئيسي الدالة هي : System.IO.Directory.GetDirectories وهذه الدالة تستقبل مدخل واحد من نوع نص يمثل مسار المجلد الذي نريد إستخراج مجلداته الفرعية ولأنها دالة وليست إجراء فإنها ترجع بقيمة هذه القيمة من نوع مصفوفة نصوص تمثل مسارات المجلدات الفرعية مثلاً : كود PHP:
والتي تحمل عناصر من نوع نصوص كل عنصر يمثل مجلد موجود داخل القرص المحلي c التعامل مع المصفوفات شرحناه مسبقاً في الدرس الثامن الكود السابق ينتج المجلدات في القرص c ولكن لا نريد الحصول على المجلدات في القرص c بل نريد المجلدات في مجلد Style ونعلم أن هذا المجلد موجود في مسار ملف البرنامج , ومن الخطأ أن نكتب التعليمة هكذا : كود PHP:
لذلك سنستخدم متغير جديدApplication.StartupPath يرجع قيمة من نوع نص تمثل مسار البرنامج , وعند الحصول على مسار البرنامج نضيف إليه إسم مجلد Style وبالتالي نحصل على مسار مجلد الستايلات مهما تغير مكان البرنامج : كود PHP:
نحتاج الآن إلى دوارة for لتمر على جميع عناصر المصفوفة subfld وتضيف كل عنصر إلى قائمة إختيار الستايل لكن هناك مشكلة المصفوفة subfld تحتوي على نصوص تمثل المسار الكامل لمجلد الستايل مثل : كود PHP:
كود PHP:
التعليمة هي Replace وتوجد في أي متغير من نوع نص مثلاً : كود PHP:
وتصبح الجملة داخل متغير wrd : كود PHP:
مثلاً لو كانت قيمة العنصر الأول من المصفوفة هي : كود PHP:
كود PHP:
نلاحظ أن الجزء المحذوف من المسار هو نفسه المسار الناتج من تعليمة : كود PHP:
كود PHP:
كود PHP:
بقي أن نجمع كود إجراء قراءة الستايلات . إجراء قراءة الستايلات إذهب إلى كود التطبيق وإنسخ هذا الكود وتأكد أن يكون خارج أي إجراء آخر : كود PHP:
السطر الثاني لتعبئة المصفوفة subfld بجميع المجلدات الفرعية لمجلد الستايلات والسطر داخل دوارة for لإضافة إسم مجلد الستايل إلى قائمة إختيار الستايلات sc بعد أن نحذف منه المسار الغير ضروري بقي أن نجد المكان المناسب لإستدعاء الإجراء السابق , وأفضل مكان هو عند تحميل النافذة الرئيسية إذهب إلى تصمصم النافذة الرئيسية و أنقر مزدوجاً على أي مكان فارغ فيها ستنتقل إلى إجراء حدث تحميل النافذة : كود PHP:
كود PHP:
عند إختيار أحد عناصر قائمة إختيار الستايلات المفروض أن يقوم البرنامج بتحميل ألوان وصور الستايل المختار ويجب أن يتذكر البرنامج الستايل المحدد حتى لو أغلقنا البرنامج و أعدنا تشغيل الكمبيوتر لذلك يجب أن نجد طريقة لخزن الستايل المختار بحيث يعرف البرنامج ما هو الستايل الذي إستخدمناه حتى لو أعدنا تشغيل الكمبيوتر لذلك يجب أن نكون ملف نصي في مجلد Styles نكتب بداخله المجلد المختار وعند تشغيل البرنامج مرة أخرى نقرأ الملف المختار من هذا الملف , لنسمي هذا الملف : CurrentStyle.txt ولكتابة ملفات نصية سنستخدم إجراء جديد System.IO.File*******AllText يستقبل هذا الإجراء مدخلين من نوع نص الأول يمثل مسار الملف المراد كتابتة والمدخل الثاني يمثل النص المراد كتابته في الملف , مثلاً : كود PHP:
بنفس الطريقة سنقوم بإنشاء ملف نصي بإسم CurrentStyle.txt لخزن الستايل المختار لكن المسار هنا سيكون مجلد الستايلات Styles , ونستدعي إجراء خزن الستايل المختار عند إختيار عنصر من عناصر قائمة إختيار الستايلات إفتح تصميم النافذة الرئيسية وأنقر مزدوجاً على قائمة إختيار الستايلات وفي الكود أكتب تعليمة خزن الملف المختار : كود PHP:
إجراء تحميل الستايل المختار كما قلنا فإن لكل ستايل ملف XML بإسم Style.XML موجود داخل مجلد الستايل , وعند إختيار ستايل من القائمة sc المفروض أن يقوم البرنامج بقراءة ملف XML الموجود داخل مجلد الستايل وتحميل قيم الألوان والصور من داخله أولاً يجب أن نقرأ قيمة الستايل المختار المخزنة في الملف النصي CurrentStyle.txt حتى نعرف أي ستايل يجب تحميله وللقراءة من الملف النصي سنستخدم إجراء جديد يستقبل مدخل واحد يمثل مسار الملف المراد قراءته وينتج قيمة من نوع نص تمثل محتويات الملف : كود PHP:
وبنفس الطريقه سنقوم بقراءة الستايل المخزن في الملف CurrentStyle.txt : كود PHP:
بمعرفة إسم الستايل المختار يمكن معرفة مكان ملف XML الذي يجب تحميله : كود PHP:
لقراءة القيم من الملف نحتاج لتعريف كائن من نوع XMLDocument كما فعلنا في الدرس الحادي عشر ولنسمه StyleDoc: كود PHP:
كود PHP:
وتسمى الكلمات المفتاحية بالمفاتيح لأنها تعمل كدليل على القيمة , مثلاً المفتاح MainBackColor هو دليل قيمة تمثل لون خلفية النافذة الرئيسية , ولا يمكن قراءة القمية من ملف XML إلا بمعرفة مفتاح القيمة وهو MainBackColor وهذه هي جميع مفاتيح القيم ودلالاتها : لون خلفية النافذة الرئيسية - MainBackColor لون خلفية قائمة التشغيل - PlayListBackColor لون الخط في قائمة التشغيل - PlayListFontColor لون خلفية قائمة إختيار الألبوم في النا فذة الرئيسية - MainSelectAlbumeBackColor لون الخط في قائمة إختيار الألبوم في النا فذة الرئيسية - MainSelectAlbumeFontColor لون خلفية قائمة إختيار الستايل - MainSelectStyleBackColor لون الخط في قائمة إختيار الستايل - MainSelectStyleFontColor لون الخط في لافتة طول الملف والوقت الحالي للتشغيل - TimeFontColor لون الخط في صندوق طريقة التشغيل - MethodFontColor لون خلفية شريط التنقل - MoveBarColor لون خلفية شريط التحكم بالصوت - SoundBarColor لون الخط في مربع كتم الصوت - MuteFontColor خلفية النافذة الرئيسية - MainBackGroundImage خلفية زر الإيقاف - StopImage خلفية زر التشغيل - PlayImage خلفية زر التسجيل - RecordImage خلفية زر التقديم - ForwardImage خلفية زر التأخير - BackwardImage خلفية زر إيقاف التسجيل - StopRecordingImage خلفية زر فتح الملفات - OpenImage خلفية زر الإيقاف المؤقت - PauseImage خلفية زر ملئ الشاشة - FullScreenImage خلفية حاضن الفيديو - VedioImage لون خلفية نافذة الألبومات - AlbumesBackColor لون الخط في قائمة الملفات في نافذة الألبومات - FilesFontColor لون خلفية قائمة إختيار الألبوم في نافذة الألبومات - AlbumesSelectAlbumeBackColor لون الخط في قائمة إختيار الألبوم في نافذة الأبومات - AlbumesSelectAlbumeFontColor خلفية نافذة الألبومات - AlbumesBackGroundImage خلفية زر الإضافة في نافذة الألبومات - AddImage خلفية زر حذف الملفات - DeleteImage خلفية زر نقل الملف إلى أعلى - UpImage خلفية زر نقل الملف إلى أسفل - DownImage خلفية زر ألبوم جديد - NewAlbumeImage خلفية زر حفظ الألبوم - SaveAlbumeImage خلفية زر حذف الألبوم - DeleteAlbumeImage خلفية زر موافق - OkImage خلفية زر إلغاء الأمر - CancelImage خلفية قائمة الملفات - FilesImage وهذه القيم كلها مخزنة في عقدة رئيسية إسمها Style وبالتالي لقراءة هذه القيم يجب تعريف متغير من نوع عقدة XMLNode لخزن العقدة الرئيسية : كود PHP:
كود PHP:
كود PHP:
لكن في التعليمة السابقة فإن القيمة من ملف XML هي من نوع نص يمثل رقم اللون وبالتالي يجب تغيير هذا النص إلى لون كيف ؟ لدينا دالة لتغيير رقم اللون إلى كائن لون : كود PHP:
كود PHP:
وبالتالي يجب أيضاً تحويلها إلى رقم بواسطة كائن التحويل Convert.ToInt32 وتصبح التعليمة الصحيحة : كود PHP:
نرجع لجدول الكلمات المفتاحية ومدلولاتها ونبحث عن مفتاح خلفية قائمة التشغيل , سنجده PlayListBackColor كود PHP:
ولتغيير خلفيات الأزرار أو الكائنات سنستخدم الخاصية Image.FromFile والتي تنتج متغير من نوع صورة وتستقبل مدخل واحد يمثل مسار ملف الصورة مثلاً لتغيير خلفية حاضن الفيديو نتعامل معه بإسمه وهو p1 : كود PHP:
ولتحميل القيمة الموجوده داخل ملف XML يجب أن نعرف المسار الكامل لملفات الصور حيث أن ملف XML يحتوي فقط على إسم الصورة ولا يحتوي على مسارها كاملاً , ونعلم أن مسارها هو نفس مسار مجلد الستايل وبالتالي يجب إنشاء متغير من نوع نص لخزن مسار الستايل الحالي الذي يحتوي على الصور : كود PHP:
بقي أن نجد إسم الصورة من ملف XML نبحث عن الكلمة المفتاحية لقيمة خلفية كائن الفيديو وهي VedioImage كود PHP:
لذلك يجب وضع التعليمة السابقة ضمن جملة Try Catch : كود PHP:
كود PHP:
نبحث عن مفتاح خلفية زر التشغيل في جدول المفاتيح سنجده PlayImage : كود PHP:
كود PHP:
إفتح كود النافذة الرئيسية وأنسخ هذا الإجراء وتأكد أنه خارج أي إجراء آخر كود PHP:
وإنشاء كاءن XMLDocument وتحميل ملف XML للستايل المختار والجزء الثاني لتحميل ألوان الكائنات كما شرحنا سابقاً والجزء الثالث لتحميل الصور للكائنات كما شرحنا أيضاً لاحظ أن خاصية الخلفية للكائنات هي : كود PHP:
كود PHP:
كود PHP:
أذهب إلى تصميم النافذة الرئيسية و أنقر مزدوجا على قائمة إختيار الستايلات لتذهب إلى كود إجراء الحدث : كود PHP:
كود PHP:
إذهب إلى الكود وأنقر مزدوجا في أي مكان فراغ من النفاذة الرئيسية لتذهب إلى الكود , أضف تعليمة الإستدعاء في نهاية الإجراء ليصبح هكذا : كود PHP:
إفتح كود نافذة الألبومات وإنسخ الكود التالي وتأكد أنه خارج أي إجراء آخر : كود PHP:
هنا أيضاً يجب أن نجد مكان مناسب لإستدعاء الإجراء وهو عند تحميل نافذة الألبومات إذهب إلى تصميم نافذة الألبومات وأنقر مزدوجاً على أي مكان فارغ فيها وأضف إلى الكود تعليمة إستدعاء الإجراء ليصبح هكذا : كود PHP:
صمم ستايل جديد بواسطة برنامج صنع الستايلات وطبقة في البرنامج ملاحظة : برنامج مصمم الستايلات ينتج مجلد بنفس إسم الستايل الذي إخترته قم بنسخ المجلد كامل إلى مجلد Styles في مسار البرنامج , وعند تشغيل البرنامج سيضاف الستايل إلى القائمة المنسدله أرسل التطبيق . .نهاية الدرس السابع عشر. .. |
الساعة الآن 04:21 PM. |
Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By
Almuhajir
النسخة الفضية