تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقال- SplashScreen and Application Events
#1
كاتب الموضوع : silverlight

مقال: SplashScreen and Application Events

SplashScreen كما يعلم الجميع هي بداية أي برنامج حيث يستطيع المبرمج أن يضع أي بيانات بخصوص البرنامج أو يضيف لها أي بيانات طبقا لاحتياجات البرنامج أو المبرمج علي حد سواء.

المقال التالي لا يختص بشرح كيفية عمل أو إضافة SplashScreen الي البرنامج فالجميع يعلم كيف يفعل ذلك ولكن ما سوف نتحدث عنه هو العلاقة بين SplashScreen و Application Events وكيفية استخدام Application Events في تحديد الوقت المطلوب لعرض SplashScreen علي شاشة الكمبيوتر.

ما هي Application Events ؟

عندما تفتح أي مشروع جديد يقوم برنامج الفيجوال استوديو بإضافة بعض الملفات الي المشروع ولكي تري هذه الملفات يمكنك أن تضغط عي أيقونة Show All Files من نافذة Solution Explorer وهي الأيقونة Icon الثانية من جهة اليسار في نافذة Solution Explorer باستخدام الماوس تستطيع التنقل بين جميع الملفات و Folders الموجودة في مشروعك مثل References و Bin Folder , و Release Folder وMy Project Folder بالإضافة الي أشياء أخري

في الواقع إن ما بهمنا هنا هو My Project Folder وهناك ستجد بعض الملفات مثل ملف ِApplication وهو امتداده عبارة عن myapp وأيضا ستجد ملف أخر اسمه AssemblyInfo وامتداده vb وأيضا Resources العامة للبرنامج ويمكنك عزيزي القارئ أن تضيف لها إن أردت أي ملفات حيث يمكن استخدام هذه الملفات لاحقا من داخل البرنامج وأيضا ستجد ملف Settings وامتداده settings وتحت معظم هذه الملفات ستجد ملفات أخري يمكنك استعراضها وفتحها ورؤية ما بداخلها من أين جاءت هذه الملفات؟ كل هذه الملفات قام برنامج الفيجوال استوديو بإنشائها لك

في الواقع الفيجوال استوديو يستخدم Model أو نموذج جاهز صممته مايكروسوفت طبعا وهو المسئول عن إضافة كل هذه الملفات أوتوماتيكيا الي البرنامج وهنا يأتي السؤال هل من الممكن التعديل في هذه الملفات ؟ طبعا ممكن وهذا يتم غالبا عن طريق فتح نافذة Properties من قائمة Project أو إما بالوقوف علي اسم المشروع من نافذة Solution Explorer عن الطريق الضغط علي يمين الماوس واختيار Properties وهنا ستفتح لك نافذة عامه بها الكثير من الاختيارات التي تختص بأشياء كثيرة

إن ما بهمنا في هذه النافذة الاختيار Application وهو الاختيار الافتراضي عند فتح نافذة Properties التي تخص المشروع وهناك سوف تري Assembly Information Button و أيضا Startup Form و Icon و ِAssemblyName و RootNamespace الي أخره من الاختيارات التي يمكنك استخدامها والتغيير فيها

إن أي تغيير في هذه البيانات ينعكس علي الملفات الموجودة تحت برنامجك ولو نظرت في الأسف ستري SplashScreen وهناك يمكنك أن تحدد إذا ما كان البرنامج سيتم ربطه مع SplashScreen معين أم وعلي يمين هذا الاختيار ستجد Button مكتوب علي View Application Events وهذا Button هو ما بهمنا تحديدا

ولكن قبل الضغط علي هذا الباتون لنري ما يخفي خلفه لنضيف الي المشروع SplashScreen وكلنا يعلم كيف يفعل ذلك ولمن لا يعلم يمكن ذلك من نافذة Project واختيار Add New Item وهنا سوف تفتح نافذة يمكننا من خلالها أن نضيف SplashScreen الي المشروع ويمكن عمل نفس الشئ لو وقفنا بالماوس علي اسم المشروع من نافذة Solution Explorer ثم ضغطنا يمين الماوس واخترنا أيضا Add ثم اخترنا New Item المهم أن نضيف SplashScreen الي المشروع

الأن قم بربط SplashScreen الي المشروع وذلك يتم من نافذة Properties الخاصة بالمشروع عموما كما أسلفنا
الأن قم باستعراض الملفات الموجودة تحت نافذة Solution Explorer ستري وتحديدا من تحت الملف Application.myapp قم باختيار الملف Application.Designer.vb ستجد أنك بمجرد أن قمت بربط SplashScreen الي البرنامج قد تم إضافة الكود التالي الي ملف Application.Designer.vb


كود :
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateSplashScreen()
Me.SplashScreen = Global.WindowsApplication1.SplashScreen1
End Sub
قم بتعديل الكود وأضف له قيمة تختص بتحديد زمن عرض SplashScreen علي الشاشة وهي MinimumSplashScreenDisplayTime مثلا حدد الزمن بعشرة ثواني وبالتالي تكون القيمة عبارة عن 10000 وهنا سيصبح الكود كالتالي


كود :
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateSplashScreen()
Me.SplashScreen = Global.WindowsApplication1.SplashScreen1
Me.MinimumSplashScreenDisplayTime = 10000
End Sub
الأن قم بتشغيل البرنامج ستري أن الفتره الزمنية لظهور SplashScreen علي شاشة الكمبيوتر قد اصبحت أطول من المعتاد طبعا يمكن أن تزيد من القيمة مع الوضع في الاعتبار أن كل ثانية زمنية قيمتها تعادل 1000 أي لو أنك تريد أن تظهر SplashScreen علي الشاشة لمدة دقيقة مثلا حدد القيمة برقم 60000 طبعا حاول تختار قيمة تناسب البيانات المعروضه في SplashScree حتي يستطيع المستخدم أن يقرأ أو يري البيانات بشكل جيد

أعتقد الفكره نجحت ......... أنت الأن سعيد جدا لأن splashScreen تأخذ الوقت الذي أنت حددته لعرضها علي الشاشة انتظر الأمر لم ينتهي حقيقة إن الامر تاجح حتي الأن ولكنه غير مكتمل تماما

مثلا لو قمت بإيقاف أو بإلغاء ربط SplashScreen بالبرنامج سيختفي كل الكود المكتوب أعلاه إذن أنت تحتاج أن تقوم بتعديل الكود في كل مرة تقوم فيها بإلغاء ارتباط SplashScreen بالبرنامج ما هو احل غذن لتفادي ذلك

الحل في الباتون الموجود داخل نافذة Properties الخاصة بالبرنامج وهو المكتوب عليه View Application Events لو ضغطت علي هذا الباتون سيفتح لك نافذة ستجد بها الكود التالي


كود :
Namespace My

' The following events are available for MyApplication:
'
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication

End Class

End Namespace
مفاجأه.......... لايوجد أي كود غير الموجود أعلاه اذن لماذا هذا الجزء من الكود موجود لو قمت بقراءة المكتوب في الكود جيدا وتحديدا الاجزاء التي لن يقوم Compiler بتنفيذها ستجد أنها تتحدث عن عن بعض Events التي تخص MyApplication وهي StartUp و Shutdown و UnhandledException وأيضا StartupNextInstance وجميعها Events مهمه يمكن أن تقرأ عنها إن أردت فهي مرتبطة باضافة كود الي البرنامج ليقرأها فبل عمل Loading للفورم الرئيسي أو أثناء عمل البرنامج أوعند إغلاق البرنامج أيضا لكن هناك أشياء لا تراها للوهلة الأولي سوف تعتقد أن هذه هي الأحداث التي من الممكن أن تقوم بالتعديل بها لكن هناك أيضا أشياء أخري مثل Functions وأيضا يعض Subs يمكن الدخول اليها باستخدام Protected Overrides Sub….. واختيار ما تريد او Protected Overrides Function….. واختيار أو اضافة ما تريد

إن ما يهمنا تحديدا هو Function OnInitialize قم بعمل Overrides لهذه Function فيصبح الكود كالأتي


كود :
Namespace My

' The following events are available for MyApplication:
'
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication

Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean

Return MyBase.OnInitialize(commandLineArgs)

End Function


End Class

End Namespace
ثم قم باضافة شرط الوقت الذي تحدثنا عنه سابقا وهو MinimumSplashScreenDisplayTime وحدد قيمته مثلا 20 ثانية أي 20000 فيصبح الكود النهائي كالتالي


كود :
Namespace My

' The following events are available for MyApplication:
'
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication

Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean

Me.MinimumSplashScreenDisplayTime = 20000
Return MyBase.OnInitialize(commandLineArgs)

End Function


End Class

End Namespace
طبعا يجب عليك أن تلغي القيمة التي وضعتها في الملف Application.Designer.vb
الأن قم بتشغيل البرنامج ستجد ان SplashScreen قد أخذت المدة التي حددتها وهي 20 ثانية

الأن قم بايقاف ارتباط SplashScreen بالبرنامج وقم بتشغيله أكيد تتوقع حدوث خطا Error كلا لن يحدث أي خطا إذن تستطيع تحديد القيمة التي تريدها سواء قمت بربط SplashSCreen بالبرنامج أم لا.

أيضا إن تنفيذ كل ما تحدثنا عنه لا يأخذ الا ثواني معدوده لتنفيذه يعني الموضوع بسيط جدا جدا
شئ أخير لا تنسي أن SplashScreen ماهي إلا Form مثل أي Form أخر أي أنك يمكن أن تغير في شكله ومظهره وحتي تقوم برسم أي شئ داخله وحتي تقوم بإعطاء مستخدم البرنامج امكانية تحريكه أثناء عرضه علي الشاشه وفي المثال المرفق قمت ببعض التعديلات لإعطاء فكرة عن كيفية عمل ذلك

ملحوظة: أرجو أن لا تجعل قيمة عرض SplashScreen نصف ساعة مثلا ...........مش عايزين مستخدمي البرامج يزهقوا أو يهربوا مننا .......... رحمة بمستخدمي البرامج يا مبرمجين

ملحوظة أخري ولكن أهم كثيرا حاول أن تتعرف وتدرس كل ما هو موجود داخل البرنامج الذي تصممه

النسخة المستخدمة الفيجوال استوديو 2008
اللغة المستخدمة الفيجوال بيسك دوت نت

يمكنك انزال المثال من الرابط التالي

http://vb4arb.com/vb/uploaded/18_01349423627.zip

أتمني لكم النوفيق
وكل عام وأنتم بخير بمناسبة عيد الفطر المبارك
أخوكم عمر
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Rainbow Toolbox in VB.NET - Common Controls - Lesson Two - Button Control Events Genius Live 2 1,283 18-03-14, 05:46 AM
آخر رد: Genius Live
  معلومة ::: Enabling Application to Stored Procedure Debugging RaggiTech 0 316 06-10-12, 10:21 PM
آخر رد: RaggiTech
  مقال- كيفية الاستغناء عن الداتا بيز التقليدية في برامجنا – ألجزء الأول RaggiTech 1 1,247 06-10-12, 12:23 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Property Attributes الجزء الثالث RaggiTech 0 365 06-10-12, 12:20 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Skin Control RaggiTech 0 531 06-10-12, 12:08 AM
آخر رد: RaggiTech
  مقال- كيف تصنع ملفات المساعدة Help Files وتربطها مع برنامجك RaggiTech 0 728 05-10-12, 07:30 PM
آخر رد: RaggiTech
  مقال- تطوير الفورم رسم الفورم باستخدام +GDI وتحريكه Moving و تغيير أبعاده Resize RaggiTech 2 878 05-10-12, 07:00 PM
آخر رد: RaggiTech
  مقال- الكومبو بوكس ComboBox كيف تضيف أيقونات RaggiTech 0 770 05-10-12, 06:54 PM
آخر رد: RaggiTech
  مقال- أفكار في الدوت نت كبف تصنع ColorPicker RaggiTech 0 438 05-10-12, 06:53 PM
آخر رد: RaggiTech
  مقال- أفكار في الدوت نت Overrides DisplayRectangle Property RaggiTech 1 523 05-10-12, 06:50 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم