05-10-12, 11:54 AM
كاتب الموضوع : 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
كود :
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateSplashScreen()
Me.SplashScreen = Global.WindowsApplication1.SplashScreen1
Me.MinimumSplashScreenDisplayTime = 10000
End Sub
أعتقد الفكره نجحت ......... أنت الأن سعيد جدا لأن 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
إن ما يهمنا تحديدا هو 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
كود :
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
الأن قم بتشغيل البرنامج ستجد ان SplashScreen قد أخذت المدة التي حددتها وهي 20 ثانية
الأن قم بايقاف ارتباط SplashScreen بالبرنامج وقم بتشغيله أكيد تتوقع حدوث خطا Error كلا لن يحدث أي خطا إذن تستطيع تحديد القيمة التي تريدها سواء قمت بربط SplashSCreen بالبرنامج أم لا.
أيضا إن تنفيذ كل ما تحدثنا عنه لا يأخذ الا ثواني معدوده لتنفيذه يعني الموضوع بسيط جدا جدا
شئ أخير لا تنسي أن SplashScreen ماهي إلا Form مثل أي Form أخر أي أنك يمكن أن تغير في شكله ومظهره وحتي تقوم برسم أي شئ داخله وحتي تقوم بإعطاء مستخدم البرنامج امكانية تحريكه أثناء عرضه علي الشاشه وفي المثال المرفق قمت ببعض التعديلات لإعطاء فكرة عن كيفية عمل ذلك
ملحوظة: أرجو أن لا تجعل قيمة عرض SplashScreen نصف ساعة مثلا ...........مش عايزين مستخدمي البرامج يزهقوا أو يهربوا مننا .......... رحمة بمستخدمي البرامج يا مبرمجين
ملحوظة أخري ولكن أهم كثيرا حاول أن تتعرف وتدرس كل ما هو موجود داخل البرنامج الذي تصممه
النسخة المستخدمة الفيجوال استوديو 2008
اللغة المستخدمة الفيجوال بيسك دوت نت
يمكنك انزال المثال من الرابط التالي
http://vb4arb.com/vb/uploaded/18_01349423627.zip
أتمني لكم النوفيق
وكل عام وأنتم بخير بمناسبة عيد الفطر المبارك
أخوكم عمر