الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دروس شبه يومية لل Visual Basic .Net

مغلقرائج
بدأه عبدالرحمن في 14 يناير 2003 · 305 رد · 102,183 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سابدا بنقل الدروس من التي نشرتها في منتدى vb4arab الى هذا المنتدى , وذلك لمشاكل حصلت للمنتدى ادت الى فقدان بعض المواضيع . وبصراحة انا خيف من ان المشكلة تتكرر , لذلك سانقل الدروس الى هنا لعل الضغط هنا اقل مما هو عليه في vb4arab . وارجو انه ما يكون في زعل :D .

اولا سابدا بنقل الدروس واحدا تلو الاخر , ومن ثم ساستكمل هذه السلسلة .

#2

مستعرض صور مبسط

نريد ان نعمل برنامج يقوم باستعراض الصور الموجودة على الجهاز ومن ثم اختيار صورة لكي نستعرضها في البرنامج , واليك الكود البسيط:

اولا ضع على الفورم صندوق حوار فتح (open dialog) ومربع صورة و و زر امر (button) واكتب هذا الكود في ال form1 class :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If OpenFileDialog1.ShowDialog = DialogResult.OK Then

PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)

End If

End Sub

شرح الكود: الخاصية showdialog تقوم بعرض صندوق الحوار فتح , واذا اختار المستخدم زر ok على الصورة فان على مربع الصورة ان يعرضها . وقد استخدمنا الخاصية FromFile التي يلزمها وسيط وهو اسم الملف المراد عرضه . والخاصية FromFile موجودة في ال Image class .

#3

اصدار نظام التشغيل OSVersion

لمعرفة رقم اصدار نظام التشغيل Operating System :

ضع زر امر على الفورم (Button) واكتب الكود التالي:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

MessageBox.Show("OS Version: " + Environment.OSVersion.ToString, "Operating System", MessageBoxButtons.OK, MessageBoxIcon.Information)

End Sub

شرح الكود : استخدمت في هذا الكود الكائن MessageBox والذي له الخاصية الوحيدة Show والتي لها العديد من التوابع او الوسائط .

الوسيط الاول: محتوى الرسالة ويجب علينا استخدام ال Enviroment class لمعرفة اصدار نظام التشغيل . وبعدا نستخدم الخاصية OSVersion وهي مبتغانا (Operating System Version) . ولكي نعرض رقم الاصدار في الرسالة يجب ان نحولها الى سلسلة نصية وذلك باستخدام الوظيفة ToString .

الوسيط الثاني: عنوان الرسالة

الوسيط الثالث: نوع الرسالة . وقد استخدمت الرسالة ذات الزر OK .

الوسيط الرابع: الايقونة التي تظهر على الرسالة .

#4

الزمن المستغرق في منذ تشغيل الجهاز

لمعرفة الزمن الذي استغرقه الجهاز منذ تشغيله بالدقائق فعليك بوضع زر امر على الفورم ومن ثم كتابة الكود التالي:

  Private Sub Button1_Click(ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles Button1.Click

        MessageBox.Show("Today's Date is: " + DateTime.Now.ToShortDateString())

End Sub

نستخدم الخاصية TickCount الموجودة في ال Enviroment Class لكي نعرف الزمن المستغرق منذ تشغيل الجهاز بال millisecond يعني الف جزء من الثانية . ولتحويلها الى دقائاق يجب علينا ان نقسم على الف ومن ثم على 60 .

ولاظهار النتائج نستخدم ال MessageBox . ولكن كما الاحظون استخدمنا الوظيفة ToString للمتغير x الذي يحمل الزمن المستغرق بالارقام لكي نحوله الى سلسلة نصية يمكن عرضها في ال MessageBox .

#5

تصغير الصور

اذا اردت تصغير حجم الصورة (الطول والعرض) فعليك بوضع زر و مربع صورة ووضع اي صورة في مربع الصورة ثم نغير اسم مربع الصورة الى Picture1 , ومن ثم نكتب الكود التالي:-

Private Sub Button2_Click(ByVal sender As System.Object, 



ByVal e As System.EventArgs) Handles Button2.Click

        Dim x As Bitmap

        x = Picture1.Image.GetThumbnailImage(N2.Value, N1.Value, Nothing, Nothing)

        x.Save("cx.jpg")



End Sub

شرح الكود: نضع اي متغير وليكن المتغير x ونجعله على هيئة صورة Bitmap .

ثم نستخدم الوظيفة GetThumbnailImage الموجودة في الخاصية Image والتي توجد في الكائن Picture1 .

الوظيفة GetThumbnailImage لها 4 توابع :-

الاول: العرض الذي تريد ان تجعله للصورة .

الثاني: الطول الذي تريد ان تجعله للصورة .

الثالث: يتيح لك الفرصة بان تلغي عملية تصغير الصورة , وفي مثالنا استخدمنا الكلمة المحجوزة nothing (اي اننا لم نستخدم هذا التابع)

الرابع: دائما صفر (nothing)

و الناتج من هذه العملية وضعناه في المتغير x .

وبعدها استخدمنا الوظيفة Save لكي نحفظ الصورة , والوظيفة Save لها تابع واحد وهو :-

مسار الصورة التي تريد حفظها .

ويمكن ان نغير هيئة الصورة (Format) بكل سهولة . ولكن ساجعل كود تحويل هيئة الصورة لاحقا ان شاء الله .

#6

قلب الصور

اذا اردت القيام بقلب صورة (Rotate) فعليك بانشاء زر امر و مربع صورة ووضع صورة فيه وكتابة الكود التالي:-

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As Bitmap = PictureBox1.Image

        x.RotateFlip(RotateFlipType.Rotate180FlipY)

        PictureBox1.Image = x

    End Sub

شرح الكود: ننشئ اي متغير وليكن x ونجعله على هيئة صورة bitmap .ثم نحدد ماهي الصورة التي سنتعامل معها وهي Picturebox1.image .

ثم نستخدم الوظيفة RotateFlip والتي لها تابع واحد وهو نوعية القلب .

وهناك انواع كثير سيسردها لك vb.net .

الى الان نحن قلبنا الصورة في المتغير X ولم نقلبها فعليا في مربع الصورة ولنقلبها فعليا يجب علينا ان نجعل الصورة الفعلية تساوي المتغير PictureBox1.Image = x .

#7

تشغيل البرامج الخارجية

لتشغيل اي برنامج خارجي عليك ان تكتب الكود التالي:-

         System.Diagnostics.Process.Start("c:somepathsomefile.txt")

نستخدم الوظيفة Start والتي لها تابع واحد وهو مسار الملف الذي تريد تشغيله .

والوظيفة Start موجودة في الفئة Process والتي توجد في فضاء الاسماء Diagnostics الموجودة في فضاء الاسماء System .

وبصراحة لا ادري هل الترجمة ل NameSpace هي فضاء الاسماء ام لا ؟ .

حاول ان تقرا مقال العسيري في فضاء الاسماء

#8

التعامل مع الريجستري (Registry)

سنتعرف في هذا الدرس البسيط كيفية التعامل مع مسجل النظام Registry .

ساقوم بعمل برنامج يحفظ عرض و طول النموذج Form , بحيث اذا خرج المستخدم من البرنامج ودخل عليه مرة اخرى فانه يجده على الحالة التي تركه عليها من حيث الطول والعرض .

اولا : قم بانشاء زري امر button , و اجعل الخاصية text للزر الاول تساوي "save" وللزر الثاني "Restore" . ثم قم بكتابة الكود التالي:-

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save.Click

        Dim w As Integer = Me.Width

        Dim h As Integer = Me.Height

        Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software", True)

        Dim newkey As RegistryKey = key.CreateSubKey("MCBInc")

        newkey.SetValue("width", w)

        newkey.SetValue("height", h)

    End Sub



    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Restore.Click



        Dim x As RegistryKey = Registry.LocalMachine.OpenSubKey("softwareMCBinc")

        Dim wval = x.GetValue("width")

        Dim hval = x.GetValue("height")

        Me.Width = wval

        Me.Height = hval

    End Sub

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

ثم انشات متغير وجعلته على هيئة مفتاح ريجستري . ومفاتيح الريجستري الاساسية خمسة منها المفتاح LocalMachine والذي يقوم بحفظ التغييرات التي يقوم بها المستخدم في البرامج . ثم استخدمت الوظيفة OpenSubKey والتي تقوم بفتح مفتاح في الريجستري ليكون جاهزا للتعامل معه من حيث الاضافة او الحذف او التعديل. وهذه الوظيفة لها تابعين :-

الاول: اسم او مسار المفتاح الذي تريد التعامل معه.

الثاني: تحديد ما اذا كنت تريد ان تضيف او تكتب شيئا في المفتاح . ووضعناها true لاننا نريد حفظ وضعية الطول والعرض في البرنامج .

وبعدها استخدمت الدالة CreateSubKey والتي تقوم بانشاء مفتاح فرعي , ولها تابع واحد وهو اسم المفتاح الفرعي .

ثم بعدها نستخدم الوظيفة SetValue لنقوم باضافة قيمة للمفتاح , ولها تابعين:-

الاول:- اسم القيمة التي تريد اضافتها .

الثاني:- القيمة التي تريد اضافتها . ووضعت هنا عرض و طول الفورم .

في الزر الثاني قمت بفتح مسار المفتاح الذي انشاته مسبقا لاقوم باسترجاع البينات منه . وهنا ما يحتاج ان اجعل التابع الثاني true لانني لن اضيف او اعدل شيء في القيم وانما ساسترجع بيانات فقط .

وبعدها استخدمنا الدالة GetValue والتي تقوم باسترجاع القيم , ولها تابع واحد وهو اسم القيمة التي نريد استرجاعها .

واخيرا نقوم بتعديل قيم طول وعرض الفورم.

اعلم بان الدرس طويل قليلا ولكنه سيفيدنا كثيرا باذن الله .

#9

تغيير شكل المؤشر

اذا اردت تغيير شكل المؤشر فعليك بكتابة السطر التالي:-

Cursor.Current = Cursors.WaitCursor

في الشطر الأيسر من الكود استدعيت الفئة Cursor وتعني مؤشر الفارة . ثم استخدمت الخاصية Current وتعني المؤشر الحالي .

اما في الشطر الايمن فقد استخدمت الفئة Cursors –لاحظ الفرق بين هذه و تلك- لكي استدعي المؤشر WaitCursor . وبذلك نكون قد اسبدلنا شكل المؤشر بكل بساطة , ولكي نسترجع المؤشر السابق فعلينا كتابة الكود التالي:-

 Cursor.Current = Cursors.Default
#10

الكائن Application

الكائن Application هو البرنامج الذي تتعامل معه , فمثلا:

  Dim x As Application

        x.Exit()

الكود السابق يقوم باغلاق برنامجنا وذلك باستخدام الوظيفة Exit .

طبعا مثالنا السابق بسيط جدا على استخدام الكائن Application , وسوف نتوسع باذن الله قريبا في كل شيء

#11

الفورم الشفافة

في البداية اعتذر على التاخير الذي حصل وذلك لمشاكل التي حصلت لجهازي.

كود اليوم بسيط للغاية . ولكنه جميل .

اذا اردت بجعل الفورم شفافة فم عليك الا ان تكتب السطر التالي:-

 Me.Opacity = 0.5

طبعا الخاصية Opacity تحوي الارقام التي بين الصفر و الواحد . وتعني اللاشفافية . فلو وضعت القيمة 0 فلن ترى الفورم . والعكس صحيح .

#12

تقديم الفورم على النوافذ الاخرى

اذا اردت ان تجعل الفورم فوق النوافذ الاخرى فما عليك الا كتابة الكود التالي:-

  Me.TopMost = True

كما تلاحظ فاننا استخدمنا الخاصية TopMost ذات القيمة Boolean اي بمعنى True or False . فاذا جعلنا قيمتها true فان الفورم تبقى في المقدمة حتى لو فتحت اي نافذة , والعكس صحيح (جرب بنفسك) .

#13

التعامل مع المجلدات

لانشاء مجلد جديد , عليك كتابة الكود التالي:-

          Dim x As Directory

        x.CreateDirectory("c:folder")

        x.Delete("c:folder")

في البداية انشانا متغير من الفئة Directory .

ثم استخدمنا الدالة CreateDirectory ولاتي لها تابع واحد وهو مسار المجلد الذي تريد انشائه .

اما الدالة Delete فتقوم بحذف المجلد . ولها تابع واحد وهو مسار المجلد الذي تريد حذفه .

واذا اردت معرفة اخر مرة تم الدخول الى مجلد معين فعليك بالكود التالي:

          n = x.GetLastAccessTime("c:windows")

        MsgBox(n)

كما تلاحظون فاننا استخدمنا الدالة GetLastAccessTime .

ولمعرفة تاريخ انشاء المجلد:

          n = x.GetCreationTime("c:windows")

        MsgBox(n)

استخدمنا الدالة GetCreationTime لمعرفة وقت الانشاء .

#14

ارجو من الجميييع المشاركة والادلاء بالاراء .

وشكرا :)

#15

المدة المستغرقة منذ تشغيل الجهاز

اولا : قم بانشاء زر button .

ثانيا : اكتب هذا الكود :

        Dim x As System.Environment

        Dim y As Integer

        y = (x.TickCount()) / 60000

        MsgBox("المدة المستغرقة منذ تشغيل الجهاز هي " + y.ToString + " دقيقة")

    End Sub

زبدة الكود السابق تكمن في الدالة TickCount والتي تقوم بارجاع المدة المسغرقة منذ تشغيل الجهاز على شكل مللي ثانية أي MilliSecond .

ولتحويلها الى دقائق يجب ان نقسم الالقيمة المسترجعة على 60000 .

وكما تلاحظون فقد حولنا المتغير y من قيمة عددية الى قيمة نصية وذلك لكي نعرضها في ال MsgBox .

واريد ان انوه ايضا بان الدالة TickCount موجودة في الفئة Enviroment والتي استدعيناها في اول الكود .

1
#16

صوت منبه

Beep()

تقوم الدالة Beep باصدار صوت من السماعات اذا كان عندك كرت صوت , اما اذا لم يكن هناك كرت صوت فانها تقوم باصدار الصوت من الجهاز نفسه ( نبرة صوت).

وتعتمد على نظام التشغيل الذب عندك . فلكل نظام نبرة صوت .

1
#17

الله يعطيك العافيه

شرح ولاأروع

تحياتي

#18

جميل ننتظر المزيد:D

856c.jpg
#19

توليد ارقام عشوائية

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        MsgBox(Rnd() * 10)

    End Sub

الدالة Rnd تقوم بتوليد ارقام عشوائية . وذلك بان تقوم بضرب الدالة في اي رقم تريده لكي ينتج لديك رقم عشوائي موجب ولا يزيد عن هذا الرقم .

1
#20

الوان متدرجة

اذا اردت ان تملأ الفورم بلون متدرج فاكتب الكود التالي:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click



        Dim grbrush As System.Drawing.Drawing2D.LinearGradientBrush

        grbrush = New System.Drawing.Drawing2D.LinearGradientBrush(New Point(0, 0), New Point(Me.Width, Me.Height), Color.Gold, Color.Blue)

        Me.CreateGraphics.FillRectangle(grbrush, New Rectangle(0, 0, Me.Width, Me.Height))



    End Sub

اولا: نقوم بانشاء متغير من نوع LinearGradientBrush والذي يقوم بالوظيفة .

ثانيا: نقوم بكتابة وسائط الدالة LinearGradientBrush وهي:

1- نقطة البداية: لكي نجعل اللون يملا الفورم من اوله فيجب وضع القيمة صفر لكل من الx , y .

2- نقطة النهاية: لكي نجعل اللون يملا اخر الفورم فيجب وضع قيمة عرض الفورم لل x , وطول الفورم لل y .

3- اللون الاول.

4- اللون الثاني.

ثالثا: نقوم بانشاء الكائن Graphics للفورم (CreateGraphics)

رابعا: نقوم باستخدام الوظيفة FillRectangle وذلك لكي نملا الفورم باللون المتدرج الذي انشاناه من الوظيفة LinearGradientBrush . والوظيفة FillRectangle لها تابعين :

1- الفرشة او اللون الذي تريد ان تملا الفورم به .

2- المساحة التي تريد ان تملا اللون بها في الفورم . ولهذا نستخدم البنية Rectangle والتي لها التوابع التالية:

1- نقطة x وتبدا من اليسار العلوي : صفر ( كما ذكرنا سابقا) .

2- نقطة y وتبدا من اليسار العلوي : صفر ( كما ذكرنا سابقا) .

3- عرض المساحة: عرض الفورم .

4- طول المساحة : طول الفورم.

وبالتالي نكون قد انشانا لون متدرج للفورم . لكن لو اتينا للvb 6 لما جدنا الكلاس LinearGradientBrush والذي ينتظر منك الاوامر .

1
#21

تحويل النص الى صورة

الكود التالي يقوم بتحويل النص الى هيئة صورة .

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



        Me.CreateGraphics.DrawString("Hello World!", New Font("Verdana", 16), Brushes.MediumSeaGreen, 10, 10)



    End Sub

الدالة DrawString لها 5 توابع :

1- النص الذي تريد تحويله الى صورة .

2- نوع الخط الذي تريد كتابة النص به , وقد استخدمنا الكلاس Font لتحديد اسم الخط وحجمه . و يتيح لك هذا الكلاس Font خيارات عديدة للتلاعب في نصك .

3- نمط النص او لونه : وقد استخدمنا الكلاس Brushes لاختيار نمط ال Brush . وعن نفسي فقد اخترت اللون البحري .

4 , 5 - تحديد موقع الصورة على الفورم وذلك بتحديد ال X, Y .

ويمكنك استبدال الفورم Me بمربع صورة ليمكنك تحرير الصورة اكثر وحفظها والى اخره .

#22

الطباعة

ابسط طريقة لطباعة نص , هي كالاتي:

اولا: من صندوق الادوات Tool Box اضف الاداة PrintDocument .

ثانيا: اضغط على الاداة نقرتين كي تقوم بكتابة الكود :

ثالثا: اكتب الكود التالي:

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawString("Helo World", New Font("Comic Sans MS", 20), Brushes.Black, 500, 500)



    End Sub

رابعا: قم باضافة زر امر Button واكتب الكود التالي:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        PrintDocument1.Print()

    End Sub

الدالة DrawString قد شرحت في الكود السابق .

ولكن الجديد اننا نلاحظ في تصريح الكود للاداة PrintDocument1 , ان المتغير e هو اهم شيء في هذه الاداة . لان به تتم طباعة النص او الصورة . والمتغير على هيئة System.Drawing.Printing.PrintPageEventArgs . ونلاحظ ان الكلاس Printing موجود في الكلاس Drawing . لذلك يجب علينا ان نستخدم الخاصية Graphics للمتغير e لنقوم بالطباعة . والخاصية Graphics بها الكثير من الدوال .

ناخذ مثال اخر وهو طباعة الصور , نفس الخطوات السابقة وانما عليك ان تضيف مربع صورة وتضع فيها اي صورة تشاء , ثم تستخدم الدالة DrawImage بدلا من الدالة DrawString , كما في الاتي:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        PrintDocument1.Print()

    End Sub



    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawImage(PictureBox1.Image, 500, 500)

    End Sub

الدالة DrawImage تقوم برسم صورة في موقع محدد . ولها تابعين:

1- الصورة التي تريد ان ترسمها .

2,3 - موقع الصورة . بتحديد ال X,Y .

اذا انتهيت من تحديد الصورة او النص وتحديد المواقع فما عليك الا استخدام الدالة Print الموجودة في الكائن PrintDocument1 .

#23

اذا اردت ان تجعل برنامجك يتوقف عن الاستجابة لفترة زمنية معينة فما عليك الا كتابة السطر التالي:

            System.Threading.Thread.Sleep(5000)

الدالة Sleep تقوم بالعمل , ولها تابع واحد وهو المدة الزمنية التي تريد برنامجك ان يتوقف عن الاستجابة فيها , وتقاس بالمللي ثانية . ولكي تحولها الى ثانية يجب عليك بضرب العدد في 1000 . لذا الكود السابق يقوم بالتوقف لمدة 5 ثوان .

#24

عدم الاستجابة

اذا اردت ان تجعل برنامجك يتوقف عن الاستجابة لفترة زمنية معينة فما عليك الا كتابة السطر التالي:

            System.Threading.Thread.Sleep(5000)

الدالة Sleep تقوم بالعمل , ولها تابع واحد وهو المدة الزمنية التي تريد برنامجك ان يتوقف عن الاستجابة فيها , وتقاس بالمللي ثانية . ولكي تحولها الى ثانية يجب عليك بضرب العدد في 1000 . لذا الكود السابق يقوم بالتوقف لمدة 5 ثوان .

#25

و الله أنا ممنون لك كتير يا أخي على شغلك و الله لك ثواب كبير أرجو الله أن يجمعني معك و مع أمثالك في مستقر رحمته

هذا الموضوع مغلق.

مواضيع مشابهة