تحدثنا فى الموضوع السابق عن مراحل تكوين الشاشة الافتتاحية للتحزيم
وكذلك شاشة الحقوق والشروط للبرنامج اثناء التثبيت
مع الاكواد التى تم استخدامها فى تلك الشاشات
حيث ان كلاً من الشاشة الافتتاحية والحقوق
لا تحتوى على مراحل او خطوات مهمة قدر ما هو شكلياً وروتينى ليس اكثر
وتوقفنا عند مرحلة الشاشة الثالثة التى تخص تحديد المسار والاختصارات مع المعلومات اثناء التثبيت
فاليوم بامر الله نستكمل هذه الشاشة والتى ستخص هذا الموضوع كاملاً
صورة الشاشة فى هذه المرحلة
الادوات التى تم استخدامها فى هذه الشاشة:
1- عدد 8 من اداء CheckBox.
2- عدد 18 من اداء Label.
3- عدد 8 من اداء Panel.
4- عدد 1 من اداء PictureBox.
5- عدد 4 من اداء TableLayoutPanel.
6- عدد 1 من اداء TextBox.
طيب فى هذه الشاشة ما هى النقاط المترتبة
والتى سيتم التركيز عليها كاشياء اساسية سيتم العمل بها
سنقوم باستخدام الـ Settings بشكل اساسة من بداية هذه المرحلة
ومتطلبات الاضافة التى سيتم اضافتها فى Settings ستكون كالتالي
1- SetPath من نوع String بقيمة فارغة
2- Desktop من نوع Boolean بقيمة False
3- Menu من نوع Boolean بقيمة False
خطوات اضافة الحقول فى Settings من خلال التالي
الضغط المزدوج بالمؤشر على كلمة (My Project)
من ثم تطبيق كما هو موجود بالصورة
بعد اتمام هذه المرحلة ناتى للخطوات التالية لاستكمال عمل الشاشة
فى البداية كود تحريك الشاشة
طبعاً انا شرحت الفكرة من الكود ووظائفها وكيفية التعامل معها فى الدرس السابق
لذلك سيتم وضع الكود هنا فقط حتى يتم تسهيل نسخ الكود للاستخدام من نفس الموضوع
دون الحاجة الى الرجوع الى الدرس السابق الا اذا كنت لم تعلم كيفية الاستخدام والتعامل مع الكود
فعليك بالعودة للدرس السابق مجدداً لتتمكن من معرفة كيفية استخدام الكود وكيف التعامل معه
الكود المستخدم يتم اضافة كلاً من
كود :
Private MoveForm As Boolean
Private MoveForm_MousePosition As Point
ومن ثم وضع الاكواد التالية كما هو مشار لكل حدث
كود :
Private Sub MoveForm_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel2.MouseDown
If e.Button = MouseButtons.Left Then
MoveForm = True
Me.Cursor = Cursors.SizeAll
MoveForm_MousePosition = e.Location
End If
End Sub
Private Sub MoveForm_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel2.MouseMove
If MoveForm Then
Me.Location = Me.Location + (e.Location - MoveForm_MousePosition)
End If
End Sub
Private Sub MoveForm_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel2.MouseUp
If e.Button = MouseButtons.Left Then
MoveForm = False
Me.Cursor = Cursors.Default
End If
End Sub
بعد الانتهاء لكود تحريك الشاشة
ناتى الان الى الكود الاغلاق لزر X الموجود باعلى الشاشة
كود :
Application.Exit()
الخطوة التالية وهو كود جلب بيانات الدرايف
من حيث المساحة الكلية والمساحة الفارغة وطريقة عرضها فى الشاشة
فى البداية يتم اضافة السطر التالى
كود :
Private DrivePath As String = "C:"
ناتى بعد ذلك باضافة هذا Function
كود :
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" _
(ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToMe As Long,
ByRef lpTotalNumberOfBytes As Long, ByRef lpTotalNumberOfFreeBytes As Long) As Integer
ومن ثم ادراج الـ Sub التالى
كود :
Private Sub GetSizePath(Optional DrivC As String = "C:")
' Get a information
Dim DriveOrFolder As String = DrivC
Dim FreeBytesAvailableToMe As Long
Dim TotalBytes As Long
Dim FreeBytes As Long
Dim FetchResult As Integer
FetchResult = GetDiskFreeSpaceEx(DriveOrFolder, FreeBytesAvailableToMe, TotalBytes, FreeBytes)
If FetchResult <> 0 Then
Dim TotlSp, FreeSp As Double
FreeSp = FreeBytes / 1024 / 1024 / 1024
TotlSp = TotalBytes / 1024 / 1024 / 1024
Label16.Text = FormatNumber(FreeSp, 2) & " GB free of " & FormatNumber(TotlSp, 2) & " GB"
Label17.Text = "1 GB"
Label18.Text = "124 MB"
Label16.ForeColor = IIf(FormatNumber(FreeSp, 2) >= 1, Color.Green, Color.Goldenrod)
Label17.ForeColor = IIf(FormatNumber(FreeSp, 2) >= 1, Color.Green, Color.Goldenrod)
Label18.ForeColor = IIf(Label17.ForeColor = Color.Green, Color.Green, Color.Goldenrod)
Else
Label16.Text = "??? GB free of ???"
Label16.ForeColor = Color.Red
End If
End Sub
الان ناتى لطريقة الاستخدام الكود السابق
مرة بداخل حدث تحديد المسار والمرة الثانية بداخل كود اللود الخاص بالفورم
كود حدث الزر لتحديد المسار
كود :
' Select path folder
Using FBD = New FolderBrowserDialog()
FBD.Description = "Select Location Folder"
If FBD.ShowDialog() = DialogResult.OK Then
DrivePath = FBD.SelectedPath.Split("\")(0)
TextBox1.Text = FBD.SelectedPath & "\"
End If
End Using
' Save path in setting
My.Settings.SetPath = TextBox1.Text
My.Settings.Save()
' Get a information
GetSizePath(DrivePath)
كود حدث لود الفورم
كود :
' Set path drive
Dim NameFolder As String = "My Test Project"
TextBox1.Text = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\" & NameFolder & "\"
' Save path in setting
My.Settings.SetPath = TextBox1.Text
My.Settings.Save()
' Get a information
GetSizePath()
التعديل الوحيد فى هذا الكود هو على تغيير اسم المجلد لاسم البرنامج الافتراضى
الذى سيستخدم فى حالة لم يقوم المستخدم تحديد مجلد محدد له
والتعديل سيكون على هذا السطر
كود :
Dim NameFolder As String = "My Test Project"
بعد اتمام كل ما سبق كل ما سنحتاج اليه
هو كود لحدث زر السابق / Back
وكود لحدث زر التالى / Next
ولاتمام الامر لحدث زر السابق / Back
كل ما عليك وضع الكود التالى بداخل حدث الزر
كود :
Form2.Show()
Close()
طبعاً كلمة Form2 تشير الى اسم الفورم للشاشة
الخاصة بالحقوق / الشروط / الرخصة.
الان ناتى الى كود حدث زر التالى / Next
كود :
If CheckBox8.Checked Then
If CheckBox6.Checked Then
My.Settings.Desktop = True
My.Settings.Save()
Else
My.Settings.Desktop = False
My.Settings.Save()
End If
If CheckBox7.Checked Then
My.Settings.Menu = True
My.Settings.Save()
Else
My.Settings.Menu = False
My.Settings.Save()
End If
' skip form
Else
' next form
End If
احنا ممكن نقوم اننا لدينا مشكلة هنا
انا عشان اعمل تحقق اذا كان يوجد اختصار على Desktop او فى Menu
ساقوم بعمل كود تحقق مرتين وكلاهما يحمل الحفظ باجمالى 4 مرات ايه الغلبة بهذا الكود
والطريقة اه بدائية ولكن حتى على المبتداء ان يتعلم التجنب من الامر
فهنا انا بتحدث عن هذا الجزء فى الكود الاخير بالاعلى
كود :
If CheckBox6.Checked Then
My.Settings.Desktop = True
My.Settings.Save()
Else
My.Settings.Desktop = False
My.Settings.Save()
End If
If CheckBox7.Checked Then
My.Settings.Menu = True
My.Settings.Save()
Else
My.Settings.Menu = False
My.Settings.Save()
End If
تعال نشوف بعد عمل هذا التحقق بصورة ايجابية
وبمظهر يليق به وتقليل عدد الاسطر وكذلك المظهر العام للكود
فقط بتغير التحقق السابق بهذا الكود
كود :
My.Settings.Desktop = IIf(CheckBox6.Checked, True, False)
My.Settings.Menu = IIf(CheckBox7.Checked, True, False)
My.Settings.Save()
بات الامر كله فى 3 اسطر فقط وكذلك يحمل سطر الحفظ واحدة فقط بدلاً من 4
الان اصبح افضل واشيك اليس كذلك
ليصبح كود حدث الزر كاملاً بهذا الشكل
كود :
If CheckBox8.Checked Then
My.Settings.Desktop = IIf(CheckBox6.Checked, True, False)
My.Settings.Menu = IIf(CheckBox7.Checked, True, False)
My.Settings.Save()
' skip form
Else
' next form
End If
الى هنا نتوقف عند هذا الموضوع الى استكمال فى درس التالي بامر الله
وسيتم البداء فى الدرس القادم من بداية كود حدث زر Next من هذه الشاشة
للتحدث عن الكود الذى يستخدم عند كلاً من
PHP كود :
' skip form
و
' next form
والى درس قادم استودعكم الله الذى لا اله الا هو
واتمنى من الجميع ان يسامحنى اذا قصرت فى الشرح
وليسامحنى الجميع لكون اضافة هذا الموضوع اتى فى وقت متاخر
وانا لدي عمل بالصباح وعلى ان انام لاستيقظ عند اذان الفجر بامر الله
فاى تقصير فى الشرح او نقص فى توضيح اى جزء
الرجاء ذكره وساقوم بتوضيح اى نقطة واى جزء غير مفهوم بامر الله
وكما وضحت لكم اى اضافة او اقتراحات وكذلك استفسارات عن اى شئ يخص هذه الدورة
الرجاء وضعها فى الرد لاتمام العمل عليها طبقاً لنوع الرد وساقوم بالرد عليها اول باول بامر الله
ملحوظة: مرفق بهذا الموضوع السورس الكود للمشروع الذى تم شرحه حتى اخر جزء من هذا الشرح
مع نسخة من البرنامج ليعطى تجربة لكيفية المظهر والاداء عند فتح البرنامج وعمل اخر شاشة تم شرحها
كما سيتم ارفاق الصور المستخدمة بهذا الموضوع
مع نسخة من البرنامج ليعطى تجربة لكيفية المظهر والاداء عند فتح البرنامج وعمل اخر شاشة تم شرحها
كما سيتم ارفاق الصور المستخدمة بهذا الموضوع
سؤال : ما وظيفية كلاً من الاسطر الثلاثة التى تشير الى المساحة ؟
جواب : السطر الاول يشير الى مساحة الدرايف المستخدم لتثبيت البرنامج عليه
فهو يععطى المساحة الفارغة من المساحة الكلية ...
اما السطر الثاني فهو يشير الى المساحة التى يتطلب ان تكون لا تقل عن 1 جيجا كمثال
فهنا انت من تقوم بكتابة هذه المساحة ..
السطر الثالث هو المساحة الفعلية لمجلد البرنامج بعد التثبيت على الكمبيوتر
فهنا سيتم شرحها مع الدرس القادم اكثر لتوضيح هذه النقطة.
سؤال : لماذا تم تحديد 1 جيجا بينما انت ذكرت بان المساحة الفعلية للمجلد البرنامج هو 124 ميجا؟
جواب : الفكرة التى تذكرتها كمثال ليس اكثر ولكن لماذا كتب الرقم اكبر من المساحة الفعلية لمجلد البرنامج
احياناً نقوم بعمل برامج تعتمد على حفظ البيانات اذا كان بداخل الملفات او كحفظ ملفات او كا قواعد البيانات
فمثل هذه الامر مع مرور الوقت تزيد من مساحة المجلد مع كل استخدام وحتى اعطاء اكبر مدة تناسب عمل البرنامج بدون توقف
او تسبب مشكلة بسبب لم يعد الدريف يحتوى على المساحة فيتطلب وضع المساحة التخمينية التى من المفتراض انت على علم بها
بان البرنامج سيعمل على عدد شخص او اكثر ومعدل ادخال الشخص للبيانات فى ما يعادل كذا ميجا مثلاً فى الشهر
فمتطلب البرنامج عمل سنة او اكثر بما يعادل تقريباً مساحة خالية تقدر كذا جيجا ليبقا البرنامج يعمل دون ادني مشكلة بامر الله.
صورة متحركة توضح عمل البرنامج ابدتاء من شاشة الرخصة حتى شاشة هذا الدرس ( صورة غير مرفقة )
تحياتى لكم جميعاً
وتمنياتى لكم التوفيق الدائم
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية