بسم اللة الرحمن الرحيم
قبل البدء في شرح هذا الموضوع,علينا بداية التعرف على بعض النقاط...من ذلك التعرف على المسار المتفق عليه لعمل برنامج...لذلك فالنقطة الأولى هي:
خطوات البرمجة
إن برمجة أي برنامج يجب أن تمر بأربعة مراحل:
1.تحديد المشكلة المراد حلها بالبرنامج,أو تحديد الهدف من البرنامج.
2.رسم مسار البرنامج على الورق (تحليل الخوارزميات),ورسم نموذج الفورمات (Forms) والأزرار وشرح كل منها,كل هذا على الورق.
3.تصميم المظهر العام للبرنامج باستخدام الفيجول بيسك -في هذه الحالة- أو أي لغة أخرى.
4.كتابة الكود لكل أداة موجودة في البرنامج تحتاج لذلك.
اساسيات البرمجة
لغات البرمجة تقوم في الأساس على استخدام الأرقام والحروف والرموز,وفيما يلي بيان لأنواع الأرقام والرموز والحروف:
اولا
الارقام
تستخدم في العمليات الحسابية وتسمية المتغيرات والأدوات.
مثال
أمثلة على العمليات الحسابية:
1+2
4/2
أمثلة على تسمية المتغيرات والأدوات:
Form1 (الاسم الافتراضي للنماذج)
TextBox1 (الاسم الافتراضي لمربع النص)
d12 (اسم عدد متغير أو ثابت)
ثانيا
الحروف
تستخدم لتسمية المتغيرات وكتابة الأوامر البرمجية.
مثال
Dim (لتعريف المتغير)
Const (لتعريف الثوابت)
as (كلمة لتوضح نوع المتغير أو الثابت)
integer (عدد صحيح)
OS34 (اسم لمتغير أو ثابت)
sqr (جذر تربيعي)
ثالثا
الرموز
تستخدم لكتابة الأوامر الحسابية,ولدينا في الفيجول بيسك مجموعة من الرموز في الحسابات:
< (أكبر من)
> (أصغر من)
= (يساوي)
<> (لا يساوي)
+ (جمع)
- (طرح)
* (ضرب)
/ (قسمة)
^ (أس)
' (لكتابة شرح أو توضيح)
. (للفصل بين الأشياء وتوابعها -مثل الأدوات وخصائصها-)
& (للربط بين نصين أو سلسلتين نصيتين)
(الأقواس) (لتحديد جزء معين ينفذ عليه الأمر)
" (لكتابة نص)
اهم الاوامر البرمجية والدوال فى الفيجوال بيسك
Dim:سيأتي بيانه.
Const:سيأتي بيانه.
val:لاستخراج قيمة متغير أو ثابت أو تحديد قيمة,وسيأتي بيانه. بيانه.
Inputbox:صندوق مشابه لصندوق الرسالة لإدخال قيمة معينة إلى البرنامج,وسيأتي بيانه.
Show:لإظهار الفورم.
ShowDialog:لإظهار الفورم وجعله أساسيا (أي لا يمكن الرجوع للبرنامج حتى ينتهي المستخدم من عمله في الفورم الذي ظهر).
Msgbox:صندوق رسالة يخرج رسالة تحذيرية أو تنبيهية أو طلب موافقة,وسيأتي
End:لإنهاء البرنامج.
اهم خصائص الادوات المشتركة
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
خصائص الأدوات هي تلك الخواص التي تتيح التحكم بشكل ومحتوى الأداة وموقعها,وفيما يلي أهم تلك الخواص:
Name:لتسمية الأداة,حيث لا يمكن استدعاء أي أداة أو التحكم فيها بدون كتابة اسمها.
Text:هذه الخاصية تتحكم بالنص الظاهر في أي أداة...مثل النص المكتوب في مربع النص,أو النص المكتوب في شريط العنوان للبرنامج.
Font:تتحكم في نوع الخط وحجمه والخصائص الأخرى,كتضخيم الخط (Bold) و الميلان (Italic) والخط السفلي (Underline)...
Size:تتحكم في حجم الأداة,طولها وعرضها.
Visible:تتحكم في ظهور الأداة من عدمة.
Enabled:تتحكم في إتاحة الأداة للاستخدام أو لا,حيث تلاحظ أحيانا في بعض البرامج أن بعض الأزرار لا يمكنك استعمالها.
BackColor:يتحكم في لون خلفية الأداة.
ControlBox:تتحكم في إظهار مربع التحكم (أزرار التكبير والتصغير والإغلاق).
Location:تتحكم في موقع ظهور الأداة.
Locked:تتحكم في إتاحة الأداة للاستخدام أو لا,والفرق بينها وبين Enabled أنه في حال تعطيل Enabled لا يمكن التحكم في الأداة مطلقا,بينما locked تلغي خواص التعديل فقط,لكن تتيح النسخ والتحديد مثلا.
RightToLeft-RightToLeftLayout:تتحكمان في اتجاه الكتابة للأداة.
اهم اوامر التحكم
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
أوامر التحكم هي تلك الأوامر التي تعطى للأدوات ليتم تنفيذ الأوامر من خلالها,وأهم تلك الأدوات هي:
Click:أي أنه عند النقر على الأداة تقوم بتنفيذ الأوامر التابعة لها,يتم تنفيذها بالنقر بالفأرة أو بزر المسافة في لوحة المفاتيح.
MouseMove:عند مرور الماوس فوق الأداة.
DoubleClick:الضغط المزدوج على الأداة,(النقر مرتين متتاليتين -دبل كليك-) بالفأرة أو بلوحة المفاتيح.
KeyDown:عند الضغط على أحد أزرار لوحة المفاتيح مع الاستمرار.
KeyPress:عند الضغط على أحد أزرار لوحة المفاتيح.
MouseClick-MouseDoubleClick:نفس الأوامر المحددة لـ Click و DoubleClick,ولكنها محددة بالنقر بالفأرة فقط.
كما أن هناك العديد من الخصائص المساعدة والتي لم تكن موجودة في VB6 مثل:عند تغير حجم الأداة,تغير اتجاه الكتابة,تغير نوع الخط...وهكذا.
هذه الأوامر يتم إعطائها للبرنامج كل أداة على حدة,وتتم كتابة الكود بالطريقة التالية:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Private Sub <ToolName>_<Command>
<الأوامر هنا>
End Sub
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
حيث:
Private Sub:أمر تبدأ به الأوامر المخصصة لزر معين,وهناك أوامر أخرى مثل Public Sub وغيرها لكننا لن نستعملها الآن.
<ToolName>:اسم الأداة.
<Command>:الأمر المنفذ,Click,DoubleClick...إلخ.
<الأوامر هنا>:تكتب الأوامر المطلوب تنفيذها في حال تنفيذ الأمر المحدد للأداة المحددة.
End Sub:علامة انتهاء الأوامر المحددة.
المتغيرات والثوابت
تعريف المتغيرات والثوابت
اولا
المتغيرات
المتغير:هو رمز يحمل قيم متعددة حسب المعادلة المعطاة,يتم تعريف المتغير باستخدام الأمر Dim.
المتغيرات نعرفها من أيام الإبتدائية,فجميعنا يعرف (س) و (ص) و (ع),فهي نفس الفكرة,حيث أن القيمة تتغير مع تغير المعادلة,أو
يكون هناك عدة قيم لنفس المتغير في نفس المعادلة.
مثال
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Dim b16 as double =213
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
في المثال السابق:
Dim:هو الأمر المستخدم لتعريف المتغيرات.
b16:اسم المتغير المراد تعريفه.
as:كلمة فاصلة تبين للبرنامج أن الكلمة التالية هي نوع المتغير.
double:نوع المتغير ويعني عدد عشري مضاعف.
ثانيا
الثوابت
الثابت:هو رمز يحمل قيمة ثابتة حسب تعريف المبرمج,وفائدته توفير الوقت على المبرمج أو المستخدم بكتابة اسم الثابت بدل من كتابة قيمته.
يتم تعريف الثوابت باستخدام الأمر Const.
مثال
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Const a1 as integer =12
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
في المثال السابق:
Const:الكلمة المعرفة للثابت وهي اختصار للكلمة الإنجليزية"Constant" أي ثابت.
a1:هو اسم الثابت الذي نريد تعريفه.
as:كلمة تدلل البرنامج أن ما يليها هو نوع الثابت.
integer:هو نوع الثابت في هذه الحالة وتعني رقم صحيح.
انواع المتغيرات والثوابت
هناك أنواع عدة للمتغيرات والثوابت,يتم استخدامها حسب الحاجة إليها,ولا يمكن استخدام أحدها لأداء عمل الأخرى:
*integer:عدد صحيح (موجب أو سالب) ولا يقبل الكسور ولا الجذور.
*long:عدد صحيح طويل.
*Date:تاريخ.
*Time:وقت/الزمن الحالي.
*single:عدد عشري.
*Double:عدد عشري مضاعف.
*String:سلسلة نصية.
*Currency:عملة.
*Variant:متغير بدون تحديد نوع المحتوى.
وهناك أنواع عديدة أخرى ولكن هذه أشهرها...
************************************
عند تعريف متغير أو ثابت يقوم الجهاز بحجز مساحة له في الـRAM ولكل نوع مما سبق مساحة خاصة لا تزيد,وهذا هو الفرق بين Integer و long حيث أن كلاهما عدد صحيح لكن الأخير له مساحة أكبر في حين تعديها يخرج البرنامج رسالة خطأ.
شروط تسمية المتغيرات والثوابت
المتغيرات والثوابت والأدوات المدرجة في البرنامج يجب عند تسميتها مراعاة الشروط التالية:
*أن يكون الحرف الأول حرفا (أي ليس رقما أو رمزا) ويكون باللغة الإنجليزية,وبالتالي لا يمكن التسمية بـ:(*1) أو (1d) أو (ل1).
*أن يكون الاسم حروفا وأرقاما إنجليزية (باستثناء الحرف الأول فلا يكون رقما)فقط,فلا يسمى بـ:(زر1).
*أن لا يزيد الاسم عن 255 حرفا.
*أن لا يكون الاسم اسما لأمر يستخدم في البرمجة,فلا يستخدم:(Dim) أو (as) أو (integer) أو ما شابه.
*أن لا يحتوي الاسم على الرموز التي يمنع تسمية الملفات بها,وهي:(/\:<>"?|).
*أن لا يكون الاسم مستعملا لمتغير أو أداة أو ثابت آخر مسبقا.
*أن لا يحتوي الاسم على مسافات.
الاءعلان عن المتغيرات والثوابت
الإعلان عن المتغيرات والثوابت والأدوات أو ما يسمى باستخراج البيانات من المتغيرات والثوابت والأدوات هو الطريقة التي يتم بها معرفة القيم التي يختزنها المتغير أو الثابت أو الأداة أو التي يمكن بها التحكم بقيمهم...ويمكن التعرف على كل منها بما يلي:
اولا
المتغيرات
يتم استخراج محتوى المتغيرات عبر استخدام الأمر Val وهو اختصار لـ Value أي قيمة...وصيغته هكذا:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Val(A12)
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ويجب كتابة الأقواس حول اسم المتغير وعدم ترك مسافة بين val والقوس...
هذه الطريقة لمعرفة قيمة المتغير واستعمالها مباشره فيمكنك استخدامها مباشرة دون معرفة قيمتها:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
TextBox1.Text=Val(D1)+Val(C1)
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
في هذا المثال قمنا بتحديد قيمة النص بداخل مربع النص TextBox1 بأنه مجموع قيمتي المتغيرين D1 و C1.
**سيأتي بيان الأدوات لاحقا**
أو يمكنك استخدام المتغيرات مباشرة دون استدعائها أو معرفة قيمها:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Val(DC)=D1+C1
أو
DC=D1+C1
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ولكن عليك الحذر في هذه الطريقة إذ إن الرمز (+) قد يقوم بدمج القيمتين بدل من جمعهما,أي لو فرضنا أن D1=12 و C1=3 فقد تكون قيمة المتغير DC=123 وليست 15 كما يفترض.
ولهذا فيفضل استخدام Val في العمليات الحسابية الدقيقة.
ثانيا
الثوابت
يمكن معرفة قيمة الثابت عن طريق استخدام Val,أي بنفس طريقة تعريف المتغيرات.
ثالثا
وهي الجزء الأهم...
فكل أداة يمكن معرفة قيمة محتواها عبر المسار الثابت التالي: [IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ToolName.ToolProperty
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
حيث ToolName: هو اسم الأداة,وهو الخاصية Name الموجودة لدى كل أداة.
و ToolProperty: هو الخاصية المراد معرفة قيمتها.
ولنأخذ مثالا على ذلك مربع النص:
فيمكن التحكم في النص بداخل مربع النص اسمه TextBox1 عبر الصيغة التالية:
TextBox1.Text
والمقصود بالتحكم بالنص أي الإضافة والتعديل والحذف والاستبدال...
الامر text
يمكننا إدخال نص عبر كتابة الصيغة السابقة أولا ومن ثم رمز (=) ومن ثم النص المراد إدخاله بين علامتي تنصيص:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
TextBox1.Text="Hello world!"
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
في المثال السابق قمنا باستدعاء الخاصية text للأداة textbox1 وأدخلنا فيها النص "Hello world!".
أيضا يمكننا معرفة قيمة خاصية أخرى لأي أداة عبر كتابة ذلك بالطريقة السابقة الأدوات...فمثلا نريد أن نعرف إذا ما كانت الأداة Timer1 مفعلة أم لا ونضع هذا الخبر في مربع نص اسمه TB1 في البرنامج,ندخل الصيغة التالية:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
TB1.Text=Timer1.Enabled
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
حينها سيقوم البرنامج بكتابة True إذا كانت مفعلة, و False إن لم تكن كذلك في مربع النص TB1.
القواعد البرمجية
القواعد:هي مجموعة من الأوامر المعدة مسبقا لإعطاء البرنامج أوامر في حال توافر ظروف معينة...
والقواعد البرمجية كثيرة لكن أذكر لكم النوعين الأكثر شهرة:
القواعد الشرطية
القواعد الشرطية (بفتح الشين المشددة [IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG] ):هي قواعد تعطي شروطا للبرنامج في حال توافرها فإن البرنامج يقوم بأداء الأوامر المتعلقة بها.
قاعدةif
أهم القواعد الشرطية والأكثر استعمالا هي (قاعدة إذا) (قاعدة IF) حيث لا يكاد يخلو برنامج منها...
لهذه القاعدة عدة صيغ...سأقوم بشرح الأخيرة لأنها أشمل...
اولا
If...Then
...
وهذه الصيغة أبسط الصيغ حيث تكتب في سطر واحد...
ثانيا
If...Then
...
EndIf
وهذه الصيغة تستعمل في حالة كان الأمر طويلا ويتم في عدة خطوات...
ثالثا
If <P1> Then
<الأوامر المرتبطة بـP1>
Else If <P2> Then
<الأوامر المرتبطة بـP2>
EndIf
رابعا
If <P1> Then
<الأوامر المرتبطة بـP1>
Else If <P2> Then
<الأوامر المرتبطة بـP2>
Else
<الأوامر المرتبطة بالحالة الاستثنائية>
EndIf
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
والآن,وقت شرح هذه القاعدة:
1.بداية؛ نكتب (If) ومعناها (إذا) أي أنك تشترط شرطا يرتبط حدوث العملية اللاحقة على تحققه...
2.نكتب الشرط المراد تحققه مسبوقة ومتبوعة بمسافة بدلا من (<P1>)...
3.ثم نكتب (Then) وتعني (إذاً),أي,إذا تحقق <P1> إذاً قم بعمل التالي...
4.نكتب الأوامر المراد تطبيقها حال تحقق الشرط بدلا من (<الأوامر المرتبطة بـP1>)...وهي يمكن أن تكون أي نوع من الأوامر (فتح,إغلاق,استبدال,كتابة نص,...إلخ)...
5.(Else If) تعطيك إمكانية وضع شرط آخر أو احتمال آخر,ولكن يجب عليك أن تعلم أن هذا الشرط لن ينظر فيه إلا إذا -وفقط إذا- لم يتحقق أي من الشروط التي تسبقه...حيث أن البرنامج يطبق الأوامر الخاصة بأول شرط يتحقق ويتجاهل باقي الشروط.
6.يتبع نفس الخطوات من1-4,وإن أراد زيادة شرط آخر يضيف (else if) أخرى ويكتب ما يريد.
7.(Else) تستخدم في حالة احتمال عدم تحقق أيا من الشروط السابقة كلها,ولكن لا يوضع أي احتمال أو شرط بعدها,وإنما أوامر يقوم بها البرنامج في حالة لم يتحقق أي شرط مما سبق.
8.(End IF) أو (EndIF) هي خاتمة أي صيغة لأي قاعدة من قواعد If السابقة,ما عدا الأولى التي تشغل سطرا واحدا.
ربما يكون الشرح أعلاه معقدا لذلك,بالمثال يتضح المقال:
مثال
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
If TB2.Text=0 Then
TBR.Text="لا يمكن القسمة على الصفر"
Else If TB2.Text <0 Then
TBR.Text="لا يمكن القسمة على السالب"
Else
TBR.Text=TB1/TB2
End If
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
طبعا هناك الكثير من الغموض في الأعلى لكن سيتضح الآن كل شيء بإذن الله...
بداية,هذا الكود لزر القسمة في آلة حاسبة مكونة من ثلاث مربعات نص: (TB1و TB2) لإدخال القيم,حيث يكتب في المربعين القيم ومن ثم ينقر أحد أزرار العمليات (جمع,طرح,ضرب,..إلخ) وتخرج النتيجة في مربع النص (TBR)...
يقوم البرنامج عند النقر على زر القسمة,بالتحقق من قيمة الخانة الثانية (المربع TB2) حيث أنه المقام في حالة القسمة...فيتأكد في الشرط الأول إذا ما كان المقام صفرا,فإن كان صفرا كتب في مربع الناتج (TBR) "لا يمكن القسمة على الصفر",بدون علامتي التنصيص,وقد سبق إيضاح هذا.
إن وجد البرنامج أن المقام يساوي صفر,فإنه يخرج الرسالة السابقة وتنتهي العملية إلى هنا,أما إن لم يكن المقام صفرا فإن البرنامج ينتقل للخطوة الثانية,وهي التحقق إذا ما كان المقام أصغر من الصفر (أي أن المقام عدد سالب),فإن كان كتب النص المحدد,وإلا انتقل إلى الخطوة التالية.
الخطوة الأخيرة هنا,هي الخطوة الاستثنائية (Else) ففي حال عدم تحقق أيا من الشروط السابقة فهذا يعني أن المدخلات سليمة ومقبولة وبالتالي يقوم بإتمام عملية قسمة قيم المربع الأول (TB1) على قيم المربع الثاني (TB2) ويضع الناتج في مربع الناتج (TBR).
قاعدة select case
ثاني القواعد الشرطية استعمالا هي قاعدة selectcase...وهي قاعدة تخولك لوضع عدة احتمالات للعملية...لن أقوم بشرحها,يمكنكم استكشاف ذلك,لكن عموما صيغتها هي:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Select Case
case <الاحتمال>
<العملية>
case <الاحتمال>
<العملية>
case Else
<العملية>
End Select
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
اختبار البرنامج وتطويرة
أكبر مشكلة قد تقابل المبرمج هي الأخطاء الكثيرة التي تخرج في البرنامج,وللتغلب عليها عليك تخمين كل الاحتمالات الممكنة حدوثها,فمثلا عليك أن تخمن كل المدخلات الممكن إدخالها في مربع نص يقوم بحساب عملية معين,كما في مثال القسمة السابق.
وللتغلب على هذه المشكلة هناك العديد من الطرق المفيدة والمجربة,بل والمصممة لهذا الأمر,أختار لكم منها اثنتين:
اولا
قاعدة If الشرطية...وقد تم شرحها مسبقا...وأما استخدامها لحل المشاكل فبالاعتماد على التخمين,فيجب عليك بداية أن تخمن أنواع
المدخلات مثلا وتضع لكل منها احتمالا,وتستثني النوع الذي تسمح بإدخاله.
ثانيا
قاعدةtry
قاعدة المحاولة (قاعدة Try)...
وهذه القاعدة مصممة خصيصا لتفادي انهيار البرنامج حيث يقوم البرنامج بـ"ـمحاولة" أداء الأوامر المعطاة,وإن لم يستطع لوجود خطأ ما ينتقل إلى الأوامر التي تقع تحت الأمر Catch وهو الأمر الذي يحول الأوامر إلى أوامر أخرى لتفادي الانهيار,وصيغة القاعدة كالتالي:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Try
<الأوامر>
Catch
<الحالة الاستثنائية>
End Try
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
في مكان (<الأوامر>) تكتب أوامر عادية جدا كأن Try غير موجودة.
في مكان (<الحالة الاستثنائية>) تكتب أوامر تتم في حالة لم يتمكن البرنامج من عمل الأوامر قبل (Catch).
في هذه القاعدة فإنك لست بحاجة لوضع أوامر مفردة لكل احتمال,بل إن أي خطأ قد يتسبب بانهيار البرنامج ينفذ الأوامر الدارجة تحت (<الحالة الاستثنائية>),ولكن يبقى عليك تقدير تلاعب المستخدم بالمعطيات والأدوات ليخرج قيم خاطئة أو يستغل برنامجك في أي مشكلة,أو مجرد وقوع المستخدم في أي خطأ دون قصد.
استكشاف الاخطاء
عليك الاعتماد على التجربة ومحاولة تخريب برنامجك أثناء الاستعمال,وذلك لكشف الثغرات والأخطاء التي تُخرج إما نتائج خاطئة أو تتسبب في انهيار البرنامج,أو النظام ككل.
في مثال عملية القسمة المذكور في شرح قاعدة If هناك عدد من الحالات يجب أخذها بالحسبان بالإضافة إلى القسمة على الصفر,مثلا:
*يجب التحقق ما إذا كانت الحقول مملوءة أصلا أم لا.
*يجب التحقق ما إذا كانت الحقول تحتوي على أرقام فقط وليس حروفا أو رموزا.
*يجب التحقق ما إذا كانت المتغيرات (في حال استعمال المتغيرات) من نوع Double أو Decimal لاحتمال كون الناتج عددا عشريا لأنها عملية قسمة.
وهكذا...
فيجب عليك توقع أي خطأ أو أي تلاعب قد يقوم به مستخدم البرنامج وذلك بتفادي الأخطاء بأحد الطرق السابقة.
اهم الادوات
هناك العديد من الأدوات في الفيجول بيسك,ويمكنك تحميل أدوات أخرى وإضافتها للبرنامج لديك,ولكن أكتفي هنا بشرح أهم الأدوات التي يكثر استعمالها مع شرح بسيط لطريقة التعامل مع كل أداة:
بداية,هناك أدوات متنوعة,هذه الأدوات هي الأدوات التي توفر التحكم العام في البرنامج:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Form:هذه الأداة الرئيسية في أي برنامج,حيث لا يخلو برنامج من لائحة توضع في باقي الأدوات.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Button:الزر العادي,غني عن الشرح.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
CheckBox:هذه الأداة توفر الاختيار "الـ"ـمتعدد لأي خيار مطروح في البرنامج,ويتم التحقق من وضع العلامة من عدمه عن طريق الخاصية (Checked).
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
RadioButton:هذه الأداة توفر الاختيار "من" متعدد,ويتم التحقق من تعليم اختيار الخيار من عدمه عن طريق الخاصية (Checked) أيضا.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ColorDialog:هذه الأداة هي أداة اختيار اللون المشهورة في أي برنامج للرسم مثلا,يمكنك التحكم بمقدار الألوان الظاهرة في اللوحة والكثير,يمكن الحصول على اللون عن طريق الخاصية (Color),هذه الأداة تضاف للهامش أثناء البرمجة,ويتحكم بها عن طريق النقر عليها في الهامش,وتظهر أثناء استعمال البرنامج فقط وهكذا جميع الـDialogs.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
FolderBrowserDialog:هذه الأداة توفر لك اختيار "مجلد" لوضع ملف فيه أو استيراد ملف منه,ويمكن معرفة المسار الذي حدده المستخدم عن طريق الخاصية (SelectedPath).
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
OpenFileDialog:هذه الأداة توفر لك استيراد ملف من جهازك إلى البرنامج (فتح ملف),وتوفر لك عدد من خصائص التحكم مثل:النوع الافتراضي للملف,عرض الملفات المعدة للقراءة فقط,وغيرها الكثير.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
SaveFileDialog:هذه الأداة توفر لك تصدير ملف إلى جهازك (حفظ ملف),وتوفر هذه الأداة تحديد صيغة الملف,وعدد من الخصائص الأخرى.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
FontDialog:هذه الأداة توفر للمستخدم تصفح الخطوط لاستخدامها في البرنامج,كاستخدامها لتحرير النصوص مثلا,يمكن الحصول على اسم الخط عن طريق الخاصية (Font.Name).
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
GroupBox:هذه الأداة للتجميل فقط,حيث أنها أداة تجميعية,تضع حدود للأدوات واسم للمجموعة.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ListBox:هذه الأداة توفر خاصية الاختيار "من" متعدد والاختيار "الـ"ـمتعدد في آن واحد حسب اختيار المبرمج (عن طريق تعديل الخاصية selectionMode),يمكن الحصول على الخيار المحدد عن طريق الخاصية (Text).
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ComboBox:هذه الأداة تجمع بين مربع النص (Text Box) والقائمة (ListBox),حيث يمكنك الاختيار من متعدد وفي نفس الوقت,يمكنك إضافة الخيار بالكتابة بلوحة المفاتيح,يمكن الحصول على الخيار المحدد عن طريق الخاصية (Text),كما يمكنك إلغاء خاصية الكتابة في الأداة وجعلها للاختيار فقط عبر تعديل الخاصية(DropDownStyle) إلى (DropDownList),وفي كل من الـ ComboBox و ListBox يمكنك وضع الاختيارات عبر الخاصية Items.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Timer:هذه الأداة توفر لك تعداد بالثواني أو اللحظات,حسبما تحدده أنت,هذه الأداة مهمة للمبرمج,ولا يطلع عليها المستخدم أبدا,مهمة هذه الأداة,تمكينك من تكرار عمل كل مدة معينة من الزمن...يمكنك تشغيل هذه الأداة وإيقافها عن طريق الخاصية (Enabled) المعروفة,ويمكنك تحديد القيمة الزمنية عبر الخاصية (Interval).
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
TabControl:أداة التبويبات هذه غنية عن التعريف,يمكنك من خلالها أن تقوم بعدة أمور,ربما أشهرها استعمالا المتصفحات المبوبة.
ادوات الادخال
أدوات الإدخال:هي الأدوات التي تمكنك من إدخال بيانات إلى البرنامج أو إلى الحاسوب بوجه عام...أهم هذه الأدوات:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
InputBox:هذه الأداة غير موجودة كأداة,وإنما ترفق ككود داخل البرنامج,ولنضرب مثالا:في حال كان لدينا Label (وهو أداة إخراج فقط) اسمه G1 مثلا ونريد أن نكتب فيه كلمة معينة,فنستعين بهذه الأداة,فتكتب بالصيغة التالية:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
G1.Text = InputBox("الرسالة", "عنوان الرسالة", "مربع الكتابة")
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
TextBox:مربع النص هذا غني عن التعريف,فلا يخلو منه برنامج,ولكن يجدر الإشارة إلى أن هذه الأداة تعد أداة إدخال وإخراج في آن واحد,والأمثلة في هذا الموضوع فقط كثيرة,يمكن الحصول على المحتوى عن طريق الخاصية (Text).
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
RichTextBox:هذه الأداة مطابقة لمربع النص (TextBox) غير أن الفرق أن هذه الأداة تقبل التنسيق (الألوان والخطوط) الجزئي,حيث يمكن إفراد كلمة أو جملة محددة بلون أو بخط,أما مربع النص فالتنسيق عام لكافة المحتوى,يمكن الحصول على المحتوى النصي فقط عن طريق الخاصية (Text),بينما يمكن الحصول على المحتوى المنسق عن طريق الخاصية (RTF).
ادوات الاخراج
أدوات الإخراج:هي أدوات تقوم بإخراج النص للمستخدم دون السماح له بتعديل القيم في الأداة.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
MsgBox:هذه الأداة غير موجودة كأداة أيضا,وإنما هي كود مثل InputBox...مهمة هذه الأداة هي الإعلام,إذ إنها تعطي المستخدم معلومات حول أمر ما,سواء بالإعلام أو التحذير أو طلب الموافقة...ويمكن تنسيق مربع الرسالة هذا على حسب المحتوى عن طريق الكود نفسه,ولنأخذ مثالا:
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
MsgBox("محتوى الرسالة", نوع الرسالة, "عنوان الرسالة")
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
هناك أنواع عدة من الرسائل يمكن استعمالها عن طريق تغيير نوع الرسالة إلى ما يناسبه,فمثلا,أذكر مثالا لكل نوع كما يلي:
VBCritical:رسالة تحذير.
VBInformation:رسالة إعلام.
VBYesNo:رسالة طلب موافقة من عدمها.
ويمكنك اختيار ما تريد من القائمة حسبما تريد.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
Label:هذه أداة كتابة العناوين والشروح والتوضيحات المعروفة.
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
PictureBox:هذه الأداة بكل بساطة هي أداة إخراج الصور.:D
[IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
ToolTip:هذه الأداة تضيف خاصية إلى جميع الأداوت في الفورم المضافة إليه فقط,وهي خاصية التلميح...وهي الخاصية المعروفة التي تظهر توضيحا في مربع أصفر عند مرور مؤشر الفأرة على الأداة,كانت هذه الأداة مدمجة مع الأدوات في فيجول بيسك6 ولكن تم فصلها لأسباب غامضة :D.
بناء البرنامج
يمكنك بناء البرنامج عبر الضغط على قائمة Build ومن ثم Build <ProjectName>.
أويمكنك تجربته أثناء التصميم وذلك بالضغط على قائمة Debug ومن ثم Start Debugging.
وفي كلتا الحالتين سيتم حفظ البرنامج في المكان الافتراضي في مجلد Bin\Debug من مجلد المشروع.
تعديل خصائص البرنامج
يمكنك كتابة بيانات المبرمج,والبرنامج,والحقوق, بر الذهاب إلى قائمة Project ثم اختر <اسم المشروع> Properties.
ارجو التثبيت
· [IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif[/IMG]
o
o [IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG][IMG]file:///C:/Users/38A1~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif[/IMG] |