Search VB 2010

Showing posts with label online visual basic course. Show all posts
Showing posts with label online visual basic course. Show all posts

Sunday, August 11, 2013

Visual Basic Online Course FlexGrid

Visual Basic 2010 - FlexGrid

Visual Basic 2010 FlexGrid
Visual Basic 2010 FlexGrid
The Microsoft FlexGrid (MSFlexGrid) control displays and operates on tabular data. It allows complete flexibility to sort, merge, and format tables containing strings and pictures. When bound to a Data control, MSFlexGrid displays read-only data.

You can put text, a picture, or both, in any cell of an MSFlexGrid. The Row and Col properties specify the current cell in an MSFlexGrid. You can specify the current cell in code, or the user can change it at run time using the mouse or the arrow keys. The Text property references the contents of the current cell.

If the text in a cell is too long to display in the cell, and the WordWrap property is set to True, the text wraps to the next line within the same cell. To display the wrapped text, you may need to increase the cells column width (ColWidth property) or row height (RowHeight property).

Use the Cols and Rows properties to determine the number of columns and rows in an MSFlexGrid.

Note : Before you can use an MSFlexGrid in your application, you must add the MSFlxGrd.ocx file to your project. To automatically include the file in your project, put it in the Autoload file. When distributing your application, you should install the MSFlxGrd.ocx file in the users Microsoft Windows System directory. For more information about adding an ActiveX control to a project, see "Standard ActiveX Controls" in the Visual Basic Programmers Guide.

How to add a FlexGrid component to Visual Basic .Net Form ?

- MSFLXGRD.OCX is a COM not a Net component but it can be added to a .Net Form in Visual Basic 2010 and work with it. In order to do so :

1) Open Visual Basic 2010 - New Project - Windows Form Application
Visual Basic 2010 Online Courses Free
Visual Basic Windows Form Application
2) Make sure you are displaying the design mode of the Form1.vb, to be able to choose components
Visual Basic 2010 online courses free
Visual Basic 2010 Form Design Mode
3) From Tools at the left side of the form, right-click anywhere and there will be a list, choose [Choose Items....]

Visual Basic Online Courses
Visual Basic 2010 Tools - Add FlexGrid
4) You will notice a new dialog box is opened where you get to pick up .Net components and Com components, click on the Tab with COM Components, then navigate to [Microsoft FlexGrid Control].

FlexGrid in VB2010 .Net
Visual Basic 2010 - Adding FlexGrid to Form
5) Click OK. Now from Tools, navigate to the end of the current section and you will file [Microsoft FlexGrid Control], just drag it on the Form or Double-Click it to be placed automatically on the Form
Visual Basic Online Courses
FlexGrid in VB2010 .Net Form
6) Now you successfully placed a COM component on .Net Form. Visual Basic 2010 will automatically convert this COM component into .Net component when Building your application.

Here are some online Visual Basic lessons and courses :

Thursday, October 18, 2012

Visual Basic 2010 - Button Sound / Music Play

Visual Basic 2010 - Button Sound

Visual Basic 2010 - Play sound on buttons
Visual Basic 2010 - Play sound on buttons

The code is simply goes like this

You can copy and paste in your (Click_Event) or whatever it is you wish (MouseClick - MouseHover - MouseLeave) :

  1. Dim MySound As New System.Media.SoundPlayer()  
  3. MySound.SoundLocation = "path to the .Wav file"
  4. MySound.Load()
  5. MySound.Play()
  6. ' OR you can use this :
  7. Sub PlaySystemSound()
  8. My.Computer.Audio.PlaySystemSound(
  9. End Sub

Background playing 

It lets the application execute other code while the sound plays. The My.Computer.Audio.Play method allows the application to play only one background sound at a time; when the application plays a new background sound, it stops playing the previous background sound. You can also play a sound and wait for it to complete.

For Visual Basic 2010 and in general, when an application plays a looping sound, it should eventually stop the sound. For more information, see How to: Stop Playing Sounds in the Background in Visual Basic 2010.


The My.Computer.Audio.Play method plays a sound. When AudioPlayMode.WaitToComplete is specified, My.Computer.Audio.Play waits until the sound completes before calling code continues.

Check that the file name references a .wav sound file on your system.
  1. Sub PlayBackgroundSoundFile()


    End Sub
The My.Computer.Audio.Play method plays a sound. When AudioPlayMode.WaitToComplete is specified, My.Computer.Audio.Play waits until the sound completes before calling code continues.
Check that the application resources include a .wav sound file named Waterfall.
  1. Sub PlayBackgroundSoundResource()


    End Sub

Here are some online Visual Basic lessons and courses :

Wednesday, May 23, 2012

Visual Basic 2010 Working With DataBase Full Project Example

VB 2010 Book
Working With Database Full Project Example

Download VB 2010 Book to work with MS-Access
Download VB 2010 Book to work with MS-Access

Book Link via

The book is 5 chapters and is explained here, it contains source code of a project example on how to work with Microsoft Access Database from Visual Basic 2010.

    In the book; the photos show how to start your project, how to select your database and how to display it. Here, we'll discuss each photo and explain each code block.

Chapter#1 - Released
VB .Net 2010 Working With DataBase Full Project Example

    Photo (1) : Shows the folder that contains the project, the (My-First-Con.vbproj) is the icon you need to click to open the project.

    Photo (2) : From menu (Data) choose (Add New Data Source), a popup dialog-box will show titled (Choose a Data Source Type) and you select (Database) as long as we are connecting to one, then click next.

    Photo (3) : A popup dialog-box appears titled (Data Source Configuration) and you select (DataSet). The DataSet is the connection type we are trying to establish here, click next. Also in the end you will notice a file (DataSet) was created, let's not rush, ok?!

    Photo (4) : Another dialog-box shows up titles (Choose Your Data Connection), here we'll choose (New Connection) and another dialog-box will show up to choose the connection from it, this new dialog-box titled (Add Connection) has (Change) button and (Browse) button, we will click on (Change) to choose the data source we wish to work with, as for this lesson we're working on (Access) so we will choose access from the next popup window that will show when we click on (Change) which called (Microsoft Access Database File), the other databases are for the other types of databases, now choose (Access) and there will be another button below called (Data Provider) which provides us with the technology we wish to work with, as for here we will work with (.Net Framework Data Provider for Ole DB), then we click next.

Continue reading ....

Chapter#2 - Released
VB .Net 2010 Working With DataBase Full Project Example
Chapter#3 - Released
 VB .Net 2010 Working With DataBase Full Project Example
  •         Adding\Inserting photos into database table
  •         Retrieving\displaying photo from database table
  •         Displaying photos into DataGridView Control
  •         Using PictureBox Drag/Drop Method to display photo
- The example remains (My Phone Book) so we will just resume our previous work.

Here are some online Visual Basic lessons and courses :

Sunday, April 17, 2011

OOP VB .Net Toturials and Examples - دروس فى ال أو أو بى

تعلمنا المزيد عن الــ Class ...

الخصائص أو Properties
- كيف نقوم بعمل خاصيه داخل الـــ Class ؟؟؟
- لكى نجيب على هذ التساؤل يجب أولا قراءة الاتى بتمعن :
............. ما هى وظيفة الخاصية ؟
- هى نفس وظيفة المخزن (المتغير) تقوم بتخزين قيمة داخلها لحين استخدامها ............
- سنقوم بعمل مشروع جديد Windows Application يحتوى على Form و Class
1) نفتح الـ Class1 و نكتب فيه الكود الاتى :
Public Proprty Test()
و نضغط على Enter تلاحظ : تم اضافة سطور جديده تلقائيا كما بالصورة رقم 10
صورة رقم 10
حيث Get هى المسؤله عن استرجاع القيمه Value
       Set هى المسؤله عن تخزين القيمه Value
القيمة Value هى القيمة الافتراضيه لمدخلات الخاصيه أو بمعنى اخر هى المسؤله عن تخزين القيمه ف الاجراء Set و يمكن استبدالها بأى اسم متغير اخر, و لكن يجب ان يكون نوع المتغير Value من نفس نوع الخاصيه بمعنى :
اذا قمنا بكتابة كود الخاصيه الموضح بالصورة 10 بشكل تانى :
Public Property Test() As Double
Codes .......................
End Get
Set (ByVal Value as Double)
Codes .......................
End Set
End Property
ايضا من ضمن الفروق ين المتغير (المخزن) و الخاصيه أن المتغير لا يمكن عمل قيود أو Validation على النتيجه و لكن يمكن عمل ذلك بالخاصيه ...
- و الخواص تنقسم الى
1) ReadWrite قراءة و كتابة
2) ReadOnly قراءه فقط
3) WriteOnly كتابه فقط
1) ReadWrite Property خاصية تسمح بالقراءه و الكتابه كما بالصورة رقم 11
صورة رقم 11
وظيفة الخاصيه التى تسمح بالقراءه و الكتابه هى (التخزين و الاسترجاع للقيمه Value) أى يمكنها عمل القيام بالعمليتين معا و فى المثال الموضح بالصورة 11 سنبدأ كتابه هذا الكود فى الـClass1 مباشره بعد المكتوب فى صورة رقم 10 و المثال يشرح كيفية عمل خاصيه تقوم باخراج رساله بجميع الارقام <= 40000 و لكن تعطى رسالة اعتراض على اى مبلغ أخر أكبر و لتجريب المثال انظر صورة رقم 12 .
يقوم الكود بتنفيذ Set ثم Get و Y عباره عن متغير وسيط لتحقيق الشرط حيث لا يمكن استخدام X فى المنطقة Get لانها منطقه منفصله تماما عن Set .
الان قم باضافة متغير بعد الخاصيه بنفس الاسم و ليكن الكود :
صورة رقم 12
Public Salary As Double
و لاحظ الاعتراض حيث انه تم Salary كخاصيه فى نفس الـ Class
نقوم بتغيير Salary الى Salary1 و نذهب الى الحدث Button1_Click و نكتب الكود

C.Salary1 = 2000
MsgBox (C.Salary1)
لاحظ ان  الكود يشبه نفس كود الخاصيه و لكن يمكنك اعطاء قيمه لــ Salary1 كما تشاء و لكن لا يمكنك اعطاء لـ Salary الخاصيه اكبر من 40000 .
2) ReadOnly Property خاصية تسمح بالقراءه فقط كما بالصورة رقم 13
صورة رقم 13

سنقوم باضافة الخاصيه كما بالشكل و نكتب ReadOnly و بعد كتابة سطر الخاصيه نضغط Enter نلاحظ أن الاجراء Get فقط هو الذى تم تنفيذه و ذلك لأننا سنقوم باسترجاع القيمه و ليس تخزينها لأن ReadOnly عباره قراءه فقط .
ماذا سنقرأ ؟؟
صورة رقم 14

سنقرأ قيمة XX المتغير الذى تم تعريفه لأنه لا يوجد لدينا قيمه Value و لكى نعطى قيمه لــ XX انظر الصورة رقم 14 .
حيث قمنا باضافة Button2 للـ Form و فى الحدث Button2_Click نكتب الكود الموضح بالصورة و هو كود اعطاء قيمة لــ XX و المعرفه على مستوى المشروع و عند القيام بتنفيذ الكود بالضغط على Button2 تظهر رسالة Welcome .
3) WriteOnly Property خاصية تسمح بالقراءه فقط كما بالصورة رقم 15
صورة رقم 15

سنقوم باضافة الخاصيه كما بالشكل و نكتب WriteOnly و بعد كتابة سطر الخاصيه نضغط Enter نلاحظ أن الاجراء Set فقط هو الذى تم تنفيذه و ذلك لأننا سنقوم بتخزين القيمه و ليس و ليس استرجاعها لأن WriteOnly عباره كتابة فقط .
ماذا سنكتب ؟؟
سنكتب قيمة Value المتغير الذى تم تعريفة بالخاصيه و لكن من أين سيأخذ هذه القيمه ... انظر الصورة رقم 16
صورة رقم 16

حيث قمنا باضافة Button3 للـ Form و فى الحدث Button3_Click نكتب الكود الموضح بالصورة و هو كود اعطاء قيمة لــ Value لتخزينها عن طريق الكود بالصورة و للتأكد من أن القيمه بالكود Welcome تم تخزينها بالمتغير Value سنتوجه الى الخاصيه AX و بعد سطر Set سنكتب الكود
MsgBox (Value)
سنقوم بتنفيذ الكود عن طريق الضغط على Button3 نلاحظ رساله Welcome و التى تعنى أن القيمه تم تخزينها فى النهايه فى المتغير Value .

Thursday, April 14, 2011

OOP VB .Net Toturials and Examples - دروس فى ال أو أو بى

تعرفنا على الاجراء و الداله و الفرق ينهما, الموديول و الكلاس موديول و الفرق بينهما .

كما فى المثال السابق : قم بانشاء Sub جديد و لكن بنفس اسم الـ Constructor فى الـ Class2
Sub New ()"C:\test.txt")
أى من الاجرائين سيقوم المشروع بتنفيذه أولا ؟؟؟
سيقوم بتنفيذ الاجراء الاول أى انه فى حالة أكثر من Constructor يقوم المشروع بتنفيذ الــ Constructor المشار اليه أولا ..
نتوجه الى Button2_Click فى المشروع السابق و نكتب :
Dim C As New Class1
هذا الكود سيقوم بتنفيذ الاجراء الثانى لأن الكلاس الاول مبنى على متغيرات .
الان عند تنفيذ الكود فإنه سيقوم بانشاء File فى الــ C اسمه Test و بما أن الكلاس متعلق بالذاكرة العشوائيه فانه من المفروض أو المنطقى ان عندما ينتهى عمل الـ Class فان العمل ينتهى بالذاكرة ايضا .. و هنا يأتى دور الـ Destructor و يكتب بهذا الشكل :
Protected Overrides Sub Finalize ()
MsgBox ("Class Ends Here")
End Sub
و ينفذ هذا الكود قبل الخروج من البرنامج مثل الحدث Dispose أو Close حيث يحذف الـ Class من ذاكرة الكمبيوتر و يطلق عليه Class Unused أو له اسم بالذاكرة لكن لا يوجد متغير (C) يشير اليه لكى يفعل عمله و كود الــ GC.Collect يقوم بحذف اسماء الـ Class من على الذاكرة الغير مستخدمه
C = Nothing
و يصبح شكل المشروع الان كما بالصورة رقم (9) ...
صورة رقم 9

صورة رقم 9
- ما هى المتغيرات المسموح بها فى الـــ Class ؟
فى نفس المشروع السابق اضف Class2 و لاحظ عند كتابة الاكواد التاليه :
Public Class Class2
Public X As Integer
متغير نصى
Public Const Y As Double = 300
ثابت نوعه Double يجب أن يأخذ قيمه وقت تعريفه مباشرة و Y لن تتغير قيمتها طول المشروع و من مميزاته أنه يمكن استدعائة بدون أخذ نسخه من الكلاس فى المنطقة المراد استخدامه فيها (Class2.Y) مباشرة بدون الحاجه الى كتابــــــــة (Dim C As New Class2)
Pubic Shared Z As Integer
هو متغير Read/Write و يختلف مع String أنه يمكن استدعائة عن طريق اسم الكلاس مباشرة دون الحاجه الى حجز نسخه من الـ Class فى الذاكره
Public ReadOnly B As Integer
المتغير B لن يمكن التصريح عن قيمتة فى المشرع 
End Class
الفرق ين كلا من (Const) و (ReadOnly) .....
الاول Cosnt : لا يجب استدعاء الكلاس و لكن يجب ان يأخذ قيمتة فى الـ Constructor أو نفس السطر المعرف فيه عموما .
الثانى ReadOnly : لا يمكن استدعائة الا بعد أخذ نسخه من الـ Class أولا
اذا هذه هى المتغيرات الممكن كتابتها فى الـ Class .
و الان .... ما هو الفرق بين الاجراء Sub والدالة Function ؟؟
- الدالة : تقوم بتنفيذ وظيفه معينة ثم Return للنتيجه بقيمه معينة .
- الاجراء : يقوم تنفيذ الاكواد المكتوبة به فقط .
لاحظ :

لا يمكننا استخدام كلا من الداله و الاجراء الا على مستوى Form1 و لكن لتعميم عملهم على مستوى المشروع يجب نقلهم كما قمنا فى الاجراء الى الموديول ة Module
أو توسيع نطاق عملهم أكثر فأكثر عن طريق اضافتهم الى Class Module ...
و الان .... ما هو افرق بين الموديول Module و الكلاس موديول Class Module ؟؟
- الموديول : عباره عن كلف نضع به الاجراءات و الدوال و الخصائص ..... الخ كى نستطيع الوصل اليها داخل المشروع كله .
- الكلاس موديول : نفس تعريف الموديول و لكن بالاضافه الى انه يمكن استخدام مكونات الــ Class Module خارج المشروع
الحالى فى أى مشروع أخر سنصنعه و ذلك مثل استخدام مكتبة ADO و OLEDB حيث نقوم باستخدام Class مثل
Connection و Adapter فى التوصيل بقاعدة البيانات .
و ايضا يمكن وضع الـ Class فى مكتب لخدمة جميع المشاريع . 

To Be Continued .......... تابعونا

Wednesday, April 13, 2011

OOP VB .Net Toturials and Examples - دروس فى ال أو أو بى

تعرفنا على مفهموم الــ Sub .

C- Sub & Function Concept :
مفهوم الاجراءات و الدوال

صورة رقم (7)

- كيف نصنع الدوال و كيف نستخدمها فى بيئة الــ .Net ؟؟
لكى نجيب على هذا التساؤل سنقوم بشرح مثال عملى ...

- قم بعمل مشروع جديد يحتوى على Form تحتوى على Button ... كما بالصورة رقم 7.
- من داخل الــ Form سنكتب الكود الاتى :
Private Funcrion Sum(ByVal X As Integer,ByVal Y As Integer)
Return X + Y
End Function
معناه أن الدالة Sum نرسل لها قيمتين X,Y ثم عملية جمع و الرجوع بالنتيجه (هذا هو عمل الداله Sum).
لاظهار النتيجه :
فى الحدث Button1_Click نكتب :
MsgBox Sum( 5 + 6 )
قم بتجربة المشروع و لاحظ النتيجه هى 11
بالرجوع للمثال السابق ... نضيف Class جديد للمشروع .
و مره أخرى معنى Class : هو عبارة عن وحده تحتوى على مجموعه من الاجراءات مثل (Sub - Function - Variables - Events - ....... etc) .... و أهم اجرائين فى الـ Class هما : Constructor - Destructor حيث (Constructor) هو بادىء الــ Class بينما (Destructor) هو ناهى الـ Class .... انظر الصورة رقم (8).

صورة رقم (8)

الصورة توضح Class اسمه Ahmed يحتوى على Sub اسمة New1 عباره عن كود واحد و يبدأ الـ Class بهذا الاجراء و بالتالى فان الاجراء New1 هو Constructor للــ Class أى ان عند استدعاء الـ Class فان أول كود سيتم تنفيذه هو الاجراء New1 و فى بعض الاحيان فإن الــ Constructor يستخدم فيه أكواد الحمايه للــ Class أو التعليقات الخاصه بمبرمج الـــ Class حيث أن اجراء Constructor أول ما يتم تنفيذه.
الان سنضيف Button الى الــ Form و عند الحدث Button2_Click سنكتب الاتى :
Dim A As New Ahmed
الان قم بتنفيذ المشروع ستلاحظ تنفيذ هذا الكود الموجود بالاجراء New1 و الذى هو الــ Constructor للـ Class .
ثم نضيف اجراء اخر بعد الاجراء New1 و ليكن New2 كالتالى ....
Sub New2
MsgBox ("Im Just A Sub")
End Sub
ثم فى الحدث Button2_Click نكتب الاتى :
قم بتنفيذ المشروع ستلاحظ أنه قام بتنفيذ الــ Constructor أولا و هو الاجراء New1 ثم قام بتنفيذ الاجراء الثانى New2
- كيف نبنى Class على متغيرات ؟
- قم بعمل مشروع جديد يحتوى على Form تحتوى على Button ... كما بالصورة رقم 7.
- قم باضافة Class باسم Class1 .
- من داخل الــ Class سنكتب الاكود الاتى :
Sub New(ByVal XX As Integer, ByVal YY As Integer)
x = XX
y = YY
End Sub

Public X As Integer
Public Y As Integer
- ما نراه الان هو اجراء باسم New مبنى على متغيران هما XX و YY و كلاهما
اجبارى و كلاهما رقمى , لاحظ انه بعد انتهاء الاجراء بــ End Sub قمنا بتعريف
متغيرين أخرين هما X و Y واعطينا كلا منهما نوع رقمى لأننا سنساويهما بالمتغيرين XX و YY أى انه حتى اذا انتهى الاجراء فى Class فانه يمكن استدعاءة فى نفس الــ Class الموجود به .
- كيف نستفيد بهم فى الــ Form ؟؟
- أولا الاجراء مكتوب فى الــ Class و هذا معناه أنه يؤثر على مستوى المشروع بالكامل .
- سنذهب الى الـ Form و نقوم باستدعاء الـ Class بهذا الكود ...
Dim  C As New Class1(10, 20)
هذا الكود معناه أن C اصبحت تمثل Class1 أى أن ذاكرة الكميوتر عند تنفيذ هذا الكود يتقوم بتخزين C على أنه Class1 أو نسخه جديده منه و سنقوم بالتعويض عن كلا من XX و YY بالرقمين 10 و 20 .
و هذا ايضا معناه أن كلا من XوY مساويان للرقمين 10و20 ...
نذهب للحدث Button1_Click و نكتب الكود :

MsgBox(C.X & " " & C.Y)
نلاحظ ان عند كتابة C التى ترمز الى الـ Class ثم (.) ظهر تلقائيا كلا من XوY و لم يظهر XXوYY لأن ...........
 XXوYY هما متغيرات الاجراء New بينما XوY هما متغيرات الــ Class بالكامل و لذا قمنا بمساواتهم بكلا منXXوYY حتى نخرج بنتيجه من التعويض بالرقمين 10و20 .
قم بتجربة المشروع و غير مكان المتغيرات داخل الـ Class و داخل الـ Sub و داخل الـ Form ولاحظ الفرق حتى تتعرف أكثر على الاجراء ...
- هل يمكن عمل أكثر من Constructor فى الــ Class ؟؟
نعم يمكن عمل أكثر من Constructor و تسمى هذه العمليه OverLoading

Tuesday, April 12, 2011

OOP VB .Net Toturials and Examples - دروس فى ال أو أو بى

We discussed OOP concepts and started a project called ''Email Validation'' using the built-in-function IndexOf

In addition to the previous project, we will add New Form and we want now to repeat the previous SUB to Validate the Email on the new Form, to do so, we will need to copy the whole code and paste it to the new Form, now what if we wanted to add 20 New Form that require Email Validations for each Form of the 20 ... What would we do then ?! The answer is simple :
We shall use the OOP concepts to work this problem out ....

Creating SUB

We will create SUN [Validate_Email()] so we can validate Email in whole project without the need to copy and paste the same procedure 20 times for each Form.

Sub ValidateEmail ()

صورة رقم (3)
يحتوى هذا الاجراء على نفس الكود المراد تكراره , أى اننا سنقوم بعمل Cut للكود من مكانه و لصقه فالاجراء الجديد و التعويض عن الاكواد باسم الاجراء فقط كما بالصورة رقم 3
قم بتجربة البرنامج ستجد أن نفس النتيجه ظهرت .
الان سنقوم ببعض التغييرات على الـ Sub حيث سنقوم ببناء الـ Sub على متغير و يكون بهذا الشكل .
صوره رقم (4)
 Sub ValidateEmail (ByVal Txt As TextBox)
 الجمله التى بين الاقواس (ByVal Txt as TextBox) تسمى Parameter و سنقوم بتعديل الكود الموجود بالـ Sub حيث سنستبدل الــ Controls من نوع TextBox بالمتغير Txt و ايضا فى الحدث المسؤل عن تنفيذ الــ Sub  سنلاحظ وجود خط أحمر معناه أن الاجراء اصح ناقص (غير صحيح) حيث ينقصه المتغير المبنى عليه Txt و بما أننا نقوم بعمل Validate للــ TextBox2 فاننا سنضع بين الاقواس فى الــ Sub كلمة TextBox2 كما موضح بالصورة رقم 4.
قم بتجربة البرنامج سيعطيك نفس النتيجه .
الان سنقوم بالتعديل مره ثالثه فى الاكواد حيث سنستبدل المتغير Txt من نوع TextBox بالمتغير Txt1 من نوع String بهذا الشكل.
Sub ValidateEmail (ByVal Txt1 As String)
صورة رقم (5)
أى اننا نريد التعويض عن المتغير النصى هذه المره , أى اننا سنعوض عن TextBox2.Text بالكامل فى الاجراء بدلا من TextBox2 و سنقوم بتغيير الكود حيث سنستبدل Txt.Text بالكامل بــ Txt فقط .... كما بالصورة رقم 5 .
مثال أخر لتوضيح عمل الاجراءات Sub
الفرق بين الاجراءات المبنية على متغيرات اجبارية و المبنية على متغيرات اختياريه .
المتغيرات الاجبارية هى التى يجب ان تذكر عند كتابة الاجراء .
المتغيرات الاختياريه يمكن كتابتها و يمكن التغاضى عنها .
سنقوم الان بعمل فورم ثالث Form3 فى نفس المشروع المفتوح EmailValidation و سنقوم بعمل اجراء Test بهذا الشكل
Sub Test (ByVal X As Integer, Optional ByVal Y As Integer = 10)
الاجراء الموضح أمام حضرتك عباره عن عدد (2) Arguements الاول (X) و الثانى (Y) و نوعهم (Integer) أى متغير رقمى .

صورة رقم (6)
المتغير الثانى يحتوى على كلمة Optional و ذلك معناه أنه عندما التعويض عن الاجراء Test فانه من الممكن تجاهل قيمة (Y) حيث أنها اختياريه و لكن ستكون قيمتها دائما 10 اذا تم تجاهلها.
قم بكتابة المثال الموجود بالصورة رقم (6) حيث Form3 بها فقط Button1 و الكود سينفذ من خلال الحدث Button1_Click
ستلاحظ ان الكود يتم تنفيذه على الرغم من عدم كتابة المتغير الاختيارى و لكن لا يعمل بدون الاجبارى X ..
ملحوظة : المتغيرات الاختيارية تكتب فى منطقة الــ Parameters فى النهايه دائما (لا تنسى) مثال :
إجراء صيحيح
Sub Test(ByVal X As Integer , ByVal Y As String , ByVal L As Boolean , Optional ByVal N as Integer)
اجراء خاطىء
Sub Test(ByVal X As Integer , ByVal Y As String , Optional ByVal L As Boolean , ByVal N as Integer)
اجراء خاطىء
Sub Test(Optional ByVal X As Integer , ByVal Y As String , ByVal L As Boolean , ByVal N as Integer)
لاحظ ايضا لم نستخدم Public أو Private .... و ذلك لأننا كنا نعمل على مستوى الفورم فقط و بالتالى استخدامهم غير ضرورى.

Visual Basic Online Course - OOP

Visual Basic Online Course - OOP

Visual Basic 2010 OOP Course
Visual Basic 2010 OOP
OOP Introduction
The original versions of Microsoft® Visual Basic® provided a mechanism for defining data structures in a user-defined type (UDT). A UDT encapsulates the data, but not the processing associated with that data. Processing was defined in global standard modules, often called BAS modules because of their .bas extension.

The release of Visual Basic 4 dawned a new age for Visual Basic developers. Visual Basic took its first steps toward becoming an object-oriented programming (OOP) language by providing object-oriented features such as class modules. 

A class module defines data as properties and the processing associated with that data as methods. By defining a class for each business entity, encapsulating data in properties and processing in methods, Visual Basic developers had object-based development.

As Visual Basic evolved from version 4 to version 6, Visual Basic developers expanded their knowledge of OO 'Object-Oriented' to include component-based development (CBD) techniques. With CBD, Visual Basic developers could build complete three-tiered applications for Microsoft Windows® and the Web. This type of development was so common that Microsoft provided a design pattern known as the Microsoft DNA architecture.

Visual Basic .NET provides another leap in Visual Basic development capabilities and features and provides for true object-oriented programming, as detailed in this article.


For a programming language to be a true OOP language, the language must meet the following criteria:

    Abstraction—Abstraction manages the complexities of a business problem by allowing you to identify a set of objects involved with that business problem.

    Encapsulation—Encapsulation hides the internal implementation of an abstraction within the particular object.

    Polymorphism—Polymorphism provides for multiple implementations of the same method. For example, different objects can have a Save method, each of which perform different processing.

    Inheritance—The excitement of Visual Basic .NET lies in inheritance. Visual Basic 5 introduced the concept of interface inheritance, which allows you to reuse the interface of a class, but not its implementation. Visual Basic .NET provides for true implementation inheritance whereby you can reuse the implementation of a class.

Now let's look at doing object-oriented programming in .NET.

OOP in Visual Basic .NET

Visual Basic .NET is not Visual Basic 6 with inheritance tacked onto it. Rather, Visual Basic .NET has been entirely rewritten to be fully object-oriented. In fact, everything in Visual Basic .NET can be treated as an object. Yes, even your strings and integers can be accessed as objects in Visual Basic .NET ............... Source WikiPedia

1) What's OOP ?
- Objects Oriented Programming
- It's the logic of programming

2) What does it do ?
- It helps the programmer to understand codes "where the code line came from - where is it going?" and enables him to be creative and able to create objects and controls .
3) OOP has 3 major concepts
  1. Inheritance
  2. Polymorphism
  3. Encapsulation
OOP Lesson Index /
  1. Classes Intro .
  2. Classes Studying .
  3. Sub & Function Concepts .(1 - 2)
  4. Property Programming
  5. Overloading - Inheritance
  6. Inheritance & Access Modifiers
  7. Implementations of OOP Concepts
  8. Make Your Own TextBox
1) Classes Intro
Classes are sections of Code but superior to any other code in the Forms ... let's take an example.
- in our example we will try to make an application that makes sure that the TextBox writes only Email format (I.e. : UserName@EmailServerName.Extension), ain't that represents the most common Email format used? ... OK.

Let's start a new Windows Form Application Project from Visual Basic 2010. Our project will aim to notify the user whether an Email format was provided in the TextBox control placed on the form or not. We shall call this project Email-Format-Validation.
  • Project Design [GUI] 
Visual Basic 2010 OOP course
Visual Basic Online Course OOP - Classes
As you can see the Project design is so simple :
Name : Form1
Name : Label1
Text : Name
Name : Label2
Text : E-mail
Name : TxtName
Name : TxtEmail
Name : BtnValid
Text : Validate E-mail
Now, what does it mean (Make sure the user writes E-mail address format correctly or in Email format)??
- Means we want the application to Check the TextBox.Text contents and determines Weather the User wrote (@ and .) in it, because this is what the common Email Address format looks like ,right?!
OK, so we write this block of codes in the Click Event In the BtnValid Control

What did we write ?
We created two variables (X,Y) as Integers, because we shall refer to the place where the (@) is, by using X variable and the and the place where the (.) is, by using Y variable. OK?!

The line where X = TxtEmail.Text.IndexOf("@") means that X = the IndexOf of the text in TxtEmail where IndexOf is a function in VB 2010 comes with the Text Property Of the TextBox Control, and it locates a character's position (Zero based index) within the Text in a TextBox, and it's called a (Built-in Function), OK?
Again, the line of code means (Locate the position of the (@) Character within the property Text in the Control TxtEmail, Please) ...
The line where it says, If X >= 1 Then means, if our user typed (@), then X "The position" must be bigger than or equals to 1 , why not (0) ??? 

Because (Ahmed) = (0 1 2 3 4) [and that is called a Zero based index, Ahmed has 5 elements starting A=0 and ends with D=4] also Emails don't start with (@) so the position (X) must be in the second letter (1) or in later position, so (if the user wrote (@) then checked for the (.) symbol, Y also represents the position of the (.) symbol but (@) can not come after (.), so we must make sure of that, and this is why we repeated IndexOf function, we used another property of the IndexOf Function.
Y = TextBox2.Text.IndexOf(".", X)
Again ... the above line means : Locate the (.) symbol that comes after the (@) .
The line If Y < 1, Then means that if the user wrote the (.) at the first letter Zero position then the application will generate a message box, then End If to end the IF Statement that belongs to locating the @ symbol.
MsgBox ("Invalid E-mail Address")
End If
Else the (@) at the (0) position
MsgBox ("Invalid E-mail Address")
End If 
End checking for (@) Locations it is after the (0) position already .
End Sub
Visual Basic OOP [Classes Intro] Homework :
(1) Please Design this Project On your own and notice how Email forms must be exactly typed as conditioned, and why (-1) shows sometimes !!??

(2) Where to write a message box that tells the user the the Email format is correct ?
Next Lesson - OOP Classes further Look

Here are some online Visual Basic lessons and courses :

Visual Basic Courses - Share