تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية تهيئة وتحديد مسار التثبيت وكذلك خيارت الاختصارات مع المعلومات [ الدرس الثاني ]
#1


تحدثنا فى الموضوع السابق عن مراحل تكوين الشاشة الافتتاحية للتحزيم
وكذلك شاشة الحقوق والشروط للبرنامج اثناء التثبيت

مع الاكواد التى تم استخدامها فى تلك الشاشات 
حيث ان كلاً من الشاشة الافتتاحية والحقوق
لا تحتوى على مراحل او خطوات مهمة قدر ما هو شكلياً وروتينى ليس اكثر


وتوقفنا عند مرحلة الشاشة الثالثة التى تخص تحديد المسار والاختصارات مع المعلومات اثناء التثبيت
فاليوم بامر الله نستكمل هذه الشاشة والتى ستخص هذا الموضوع كاملاً 

صورة الشاشة فى هذه المرحلة


الادوات التى تم استخدامها فى هذه الشاشة:

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 ميجا؟
جواب : الفكرة التى تذكرتها كمثال ليس اكثر ولكن لماذا كتب الرقم اكبر من المساحة الفعلية لمجلد البرنامج
احياناً نقوم بعمل برامج تعتمد على حفظ البيانات اذا كان بداخل الملفات او كحفظ ملفات او كا قواعد البيانات
فمثل هذه الامر مع مرور الوقت تزيد من مساحة المجلد مع كل استخدام وحتى اعطاء اكبر مدة تناسب عمل البرنامج بدون توقف
او تسبب مشكلة بسبب لم يعد الدريف يحتوى على المساحة فيتطلب وضع المساحة التخمينية التى من المفتراض انت على علم بها
بان البرنامج سيعمل على عدد شخص او اكثر ومعدل ادخال الشخص للبيانات فى ما يعادل كذا ميجا مثلاً فى الشهر 
فمتطلب البرنامج عمل سنة او اكثر بما يعادل تقريباً مساحة خالية تقدر كذا جيجا ليبقا البرنامج يعمل دون ادني مشكلة بامر الله.



صورة متحركة توضح عمل البرنامج ابدتاء من شاشة الرخصة حتى شاشة هذا الدرس ( صورة غير مرفقة )





تحياتى لكم جميعاً
وتمنياتى لكم التوفيق الدائم


الملفات المرفقة
.zip   IMG.zip (الحجم : 35.07 ك ب / التحميلات : 64)
.zip   Pro.zip (الحجم : 179.86 ك ب / التحميلات : 86)
.zip   SetupMyProject.zip (الحجم : 214.59 ك ب / التحميلات : 148)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#2
شرح رائع و ممتاز الله يجزيك كل خير عما تقدم .

بالنسبة لموضوع الاختصار :

PHP كود :
My.Settings.Desktop CheckBox6.Checked
My
.Settings.Menu CheckBox7.Checked
My
.Settings.Save() 

هذا مختصر أيضا .
الرد }}}
تم الشكر بواسطة: elgokr , حريف برمجة
#3
(22-06-19, 03:20 AM)asemshahen5 كتب : شرح رائع و ممتاز الله يجزيك كل خير عما تقدم .

بالنسبة لموضوع الاختصار :

PHP كود :
My.Settings.Desktop CheckBox6.Checked
My
.Settings.Menu CheckBox7.Checked
My
.Settings.Save() 

هذا مختصر أيضا .

بكل تاكيد هو مختصر ولكن الفكرة من شرح الامر

هو توضيح كيفية التعامل مع if و iif فى كتابة الاكواد

وكذلك فى الخطوات القادمة من استكمال الدورة سيكون هناك دور
تجعل الامر تدخل فى قيم واساليب لا تعتمد على كلمة True و False

وحتى لحظة هذا الشرح فى التعامل مع if و iif بصورة اكبر
لا احتاج وقتها ان اوضح كيف التعامل معها
او الفريق وعمل امثلة بسيطة توضح الامور اكثر

فهنا تخطيت هذه المرحلة
فكما تعلم انا اريد ان تصل الشرح بقدر الامكان للمبتداء
الذى بداء بانهاء اول مشروع له الى شخص اصبح الكود كتابته كما لو كان يذكر اسمه

فالبساطة والتواضح مفتاه كل تعليم

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: asemshahen5 , حريف برمجة , حريف برمجة
#4
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }

[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

بارك الله لك فيما تقدم بالفعل شرح مبسط .
الرد }}}
تم الشكر بواسطة: elgokr , حريف برمجة
#5
الحمد لله دائماً وابداً على نعمة

وعلى ما علمنا به بامره وفضله

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: asemshahen5 , حريف برمجة
#6
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: elgokr , حريف برمجة , asemshahen5
#7
(22-06-19, 01:35 PM)عبد العزيز البسكري كتب :

لى ولك وللجميع بامر الله


تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: حريف برمجة , asemshahen5
#8
Heart 
دائماً تبهرنا بمواضيعك و إفادتك للأعضاء Heart
الرد }}}
تم الشكر بواسطة: حريف برمجة , elgokr , asemshahen5
#9
(26-06-19, 02:50 PM)YousefOkasha كتب : دائماً تبهرنا بمواضيعك و إفادتك للأعضاء  Heart

هذا من اصلك الطيب اخى يوسف


فكل التحية لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: alshandodi , asemshahen5
#10
بارك الله فيك ......... حقا انت استاذ
هَٰٓؤُلَآءِ قَوْمُنَا ٱتَّخَذُوا۟ مِن دُونِهِۦٓ ءَالِهَةً لَّوْلَا يَأْتُونَ عَلَيْهِم بِسُلْطَٰنٍۭ بَيِّنٍ فَمَنْ أَظْلَمُ مِمَّنِ ٱفْتَرَىٰ عَلَى ٱللَّهِ كَذِبًا
الرد }}}
تم الشكر بواسطة: asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  دورة كيفية تصميم برنامج محاسبة VB.NET+SQL محاسب يوسف 7 36,940 01-08-23, 05:25 PM
آخر رد: ibrahimibrahim
  [VB.NET] كيفية عمل تعدد الشركات في البرنامج المحاسبي ahmedramzyaish 37 17,852 10-10-20, 09:49 PM
آخر رد: ahmedramzyaish
  [VB.NET] دورة بناء برنامج محاسبي مبسط بطريقة احترافيه بالفيجوال دوت نت والاكسيس الدرس الرابع hbsbamaga 0 2,872 14-09-20, 11:17 PM
آخر رد: hbsbamaga
  [VB.NET] دورة بناء برنامج محاسبي مبسط بطريقة احترافيه بالفيجوال دوت نت والاكسيس الدرس الثالث hbsbamaga 0 2,228 14-09-20, 11:16 PM
آخر رد: hbsbamaga
  دورة بناء برنامج محاسبي مبسط بطريقة احترافيه بالفيجوال دوت نت والاكسيس الدرس الثاني hbsbamaga 0 2,221 14-09-20, 11:13 PM
آخر رد: hbsbamaga
  كيفية انشاء حقوق ملكية وشروط الاستخدام وافتتاحية التحزيم [ الدرس الاول ]. elgokr 23 9,553 28-06-20, 05:59 PM
آخر رد: alsouf
Smile الفصل(6):صنع القرار...الجزء الثاني-تكوين الشروط Omar Mekkawy 1 4,478 04-09-19, 02:46 AM
آخر رد: أمجد وضاح
  [سلسلة تعليمية] الدرس الثاني من برنامج صانع الاكواد - Code Generator aliday03 12 9,571 15-08-19, 04:55 PM
آخر رد: msaeed
  كيفية اتمام شاشات بخصائص وخيارات تتيح للمستخدم حرية الاختيار [ الدرس الثالث ] elgokr 4 3,387 05-07-19, 08:17 PM
آخر رد: elgokr
  الدرس الاول لتعليم فيجوال بيسك الاضافة الحفظ التعديل علي البيانات احمد129 1 3,134 26-05-19, 04:38 AM
آخر رد: ابو روضة

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


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