عرض مشاركة واحدة
  #4  
قديم 02-08-2017, 12:53 AM
 
........... تابع



قبل أن تتعرف على الأحداث الشائعة لابد من أن تعلم أن الشيفرة الأكثر استخداماً في Visual Basic هي الشيفرة التي تُستخدم لتغيير خصائص الأدوات بعد التنفيذ،
وهذه الشيفرة تملك الشكل العام التالي:






حيث :
اسم النافذة:
هو اسم النافذة الموجودة عليها الأداة التي نريد تغيير خصائصها، ونحصل عليه من خاصية Name التابعة للنافذة.

اسم الأداة:
وهو اسم الأداة التي نريد تغيير خصائصها، ونحصل عليه من نافذة الخصائص التابعة للأداة ومن الخاصية Name بالتحديد.

اسم الخاصية:
وهو اسم الخاصية التي نريد تغيير قيمتها، ونحصل عليه –في حال لم نكن نحفظه- من نافذة الخصائص التابعة لهذه الأداة.

القيمة الجديدة:
وهي القيمة الجديدة التي نريد منحها للخاصية، وهنا يجب التنبيه على أن القيمة الجديدة يجب أن تتوافق مع نوع معطيات الخاصية:
- في الخصائص الرقمية: يجب أن تكون القيمة الجديدة عبارة عن رقم.
- في الخصائص النصية: يجب أن تكون القيمة الجديدة عبارة عن نص محصور بين إشارتي تنصيص " ".
- في الخصائص المنطقية: يجب أن تكون القيمة الجديدة أما true أو False.
- في الخصائص اللونية يجب استخدام أحد توابع الألوان مثل Qbcolor(number) أو التابع RGB .

مثال :
1- ابدأ بمشروع جديد ( من القائمة File اختر الأمر New Project ثم اختر مشروع قياسي).
2- ضع زر أوامر على النافذة، وغير خاصية Caption له إلى "تغيير الخصائص".
3- اضغط فوق الزر ضغطتين سريعتين، فتظهر نافذة الشفرة، اكتب فيها مايلي:


4- نفذ البرنامج بالضغط على المفتاح F5 أو اختيار الأمر Start من القائمة Run، ومن ثم اضغط على الزر "تغيير الخصائص"، ولاحظ ما سيحدث.

ملاحظة
الدالة اللونية RGB(Red,Green,Blue) تأخذ ثلاثة بارامترات:
Red: يأخذ القيم من 0 حتى 255 يحدد مقدار اللون الأحمر في المزيج اللوني.
Green: يأخذ القيم من 0 حتى 255 يحدد مقدار اللون الأخضر في المزيج اللوني.
Blue: يأخذ القيم من 0 حتى 255 يحدد مقدار اللون الأزرق في المزيج اللوني.
وتعود بقيمة لونية تمثل المزيج المكون من الألوان الثلاثة السابقة، أي تعطي 16000000 لون.
هناك دالة أخرى خاصة باللون وهي QbColor(Number) : وهي نفس الدالة المستخدمة في QBasic فالبارامتر Number يأخذ قيمه من 0 إلى 15، أي تستخدم لإعطاء خمسة عشر لوناً فقط.


تعتمد فكرة البرمجة في Visual Basic على الأحداث، وكما ذكرنا، الحدث هو فعل يقوم به المستخدم على البرنامج مثل ضغط زر أو تحريك الماوس. ويجب عليك كمبرمج Visual Basic أن ترد على أحداث المستخدم هذه، لذلك ستجد أن شفرة Visual Basic مقسمة إلى إجرائيات (أحداث).

تملك Visual Basic نافذة خاصة لتحرير الشيفرة وكتابة التعليمات وهذه النافذة تعتبر بمثابة محرر نصوص بسيط، فهي توفر عمليات النسخ والقص واللصق، وتساعد في تحرير الشيفرة وإكمالها من خلال عرض قوائم الخيارات وما شابه.

وأهم ما تقوم به هذه النافذة هي تقسيم الشيفرة إلى أجزاء (برامج جزئية) ويتم ذلك اعتماداً على الأحداث، فمقابل كل حدث يوجد برنامج جزئي(إجراء) يُستدعى تلقائياً عند وقوع الحدث.

وللوصول إلى أحد أحداث أداة ما، نقوم بالنقر المزدوج فوق هذه الأداة فتظهر نافذة الشيفرة الخاصة بهذه الأداة وبحدثها الأكثر استخداماً، ويمكن التنقل بين الأدوات والأحداث الخاصة بها باستخدام القوائم الموجود في أعلى نافذة الشيفرة .

فمثلاً: لو أضفت زر أوامر ثم ضغطت فوقه ضغطتين مزدوجتين ستظهر لك نافذة الشفرة كما في الشكل (2-2):


كما تلاحظ تقوم Visual Basic بتوليد إجرائية خاصة بكل حدث، اسم هذه الإجرائية مكون من اسم الأداة واسم الحدث على الشكل:

اسم الأداة_اسم الحدث
فما تلاحظ اسم الإجرائية السابقة هو: Command1_Click
تحوي القائمة الموجودة في أعلى يسار نافذة الشفرة على اسماء جميع الأداوات الموجودة على النافذة، بالإضافة إلى اسم النافذة Form وقسم التصريح General)).

تحوي القائمة الموجودة في أعلى يمين نافذة الشفرة على أسماء الأحداث التابعة للأداة المختارة من القائمة اليسرى.

عند اختيار الأداة والحدث تتولد الإجرائية المناسبة كما يلي:

بعد ظهور سطري البداية والنهاية الخاصين بالإجرائية يمكنك كتابة الشفرة التي تريد، ولكن تذكر أنه يجب أن تبقى الشفرة ضمن السطرين السابقين، وأن هذه الشفرة ستنفذ عند وقوع الحدث.

يوجد مجموعة من الأحداث الشائعة التي تستخدم بكثرة وهي:
الحدث Click: يقع هذا الحدث عند الضغط على الأداة بزر الماوس الأيسر، يعتبر الحدث Click من أكثر الأحداث استخداماً فهو متوفر لمعظم الأداوت وأهمها زر الأوامر CommandButton.

مثال:
1- ابدأ بمشروع جديد.
2- ضع زر أوامر Command1 على النافذة.
3- اضغط على الزر ضغطتين سريعتين للحصول على نافذة الشفرة.
4- اكتب الشفرة التالية:
MsgBox “لقد تم الضغط على الزر
وبالتالي يجب أن تبدو نافذة الشفرة كما يلي:




يستخدم الأمر MsgBox لعرض رسائل نصية على المستخدم.
5- من القائمة الموجودة في أعلى يسار النافذة اختر
Form، ومن القائمة اليمنى اختر Click، فيظهر السطرين:
Private Sub Form_Click ( )
End Sub
وهذا دلالة على أن ما سنكتبه الآن سينفذ عند الضغط على سطح النافذة.

1- اكتب الشفرة التالية بين السطرين السابقين:
MsgBox “ لقد تم الضغط على سطر النافذة

وبهذا ستبدو نافذة الشفرة مشابه للشكل.



2- نفذ البرنامج السابق بالضغط على المفتاح F5 أو باختيار الأمر Run-Start، وبعد ذلك قم بتجربة البرنامج بالنقر على الزر ثم على النافذة، وانتبه للرسائل التي ستظهر.
3- احفظ هذا المشروع، لأنك قد تعود إليه لاحقاً.
ملاحظة: تذكر أنك ستطالب بحفظ ملفين هما ملف النافذة ولاحقته FRM وملف المشروع ولاحقته VBP.

الحدث Dblclick:
يقع هذا الحدث عند الضغط المزدوج فوق الأداة.
مثال:
1- ابدأ بمشروع جديد.
2- ضع أداة عنوان Label على النافذة.
3- في الحدث Dblclick الخاص بالأداة Label، قم بكتابة الأمر:
End
يجب أن تبدو نافذة الشفرة مشابة لما يلي:

4- نفذ البرنامج، ثم اضغط فوق أداة العنوان ضغطتين مزدوجتين فينفذ الأمر End ويغلق البرنامج.

الحدث KeyPress:
يقع هذا الحدث عند الضغط على مفتاح ما من لوحة المفاتيح، ولمعرفة المفتاح المضغوط نستطيع اختبار قيمة الوسيط KeyAscii الخاص بهذا الحدث، حيث يمثل KeyAscii رقم المفتاح المضغوط في جدول الآسكي.
مثال:
1- ابدأ بمشروع جديد.
2- ادخل إلى الحدث KeyPress التابع للنافذة Form، فتظهر لك نافذة الشفرة كما يلي:


3- اكتب الأمر End.
Private Sub Form_KeyPress(KeyAscii As Integer)
End
End Sub
4- نفذ البرنامج، واضغط على أي مفتاح فيُغلق البرنامج.
ملاحظة: كان من الممكن تحديد مفتاح معين ليقوم بإغلاق البرنامج، وذلك باختبار قيمة الوسيط KeyAscii على الشكل:
IF KeyAscii=27 THEN End

أي إذا ضُغط على المفتاح 27 (Esc) قم بإنهاء البرنامج.

الحدث Keydown:
يقع هذا الحدث عندما نضغط فوق أحد أزرار لوحة المفاتيح وقبل الإفلات، وهو يقدم وسيطين هما:
Keycode: وهو يمثل رقم المفتاح المضغوط، وهذا الرقم يشمل مفاتيح التحكم أيضاً.
Shift: ويستخدم لمعرفة إن كان أحد مفاتيح التحكم (Ctrl, Alt, Shift) مضغوطاً أثناء ضغط المفتاح، فهذا الوسيط يمكن أن يأخذ إحدى القيم التالية:
1 ويعني أن المفتاح Shift مضغوطاً أثناء ضغط المفتاح.
2 ويعني أن المفتاح Ctrl مضغوطاً أثناء ضغط المفتاح.
4 ويعني أن المفتاح Alt مضغوطاً أثناء ضغط المفتاح.
ملاحظة: لايوجد 3 لأن 3=2+1 ومعنى ذلك أن المفتاحين Shift و Ctrl مضغوطين، فانتبه لذلك!
مثال:

ادخل إلى الحدث KeyDown الخاص بالنافذة واكتب الشفرة:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 1 And KeyCode = 27 Then End
End Sub
أي إذا تم ضغط Shift+Esc قم بإنهاء البرنامج.
الحدث KeyUp: وهو نفس الحدث Keydown تماماً ولكنه يقع بعد إفلات المفتاح المضغوط .
الحدث MouseMove :يقع هذا الحدث عندما نقوم بتحريك مؤشر الماوس فوق النافذة، ويقدم أربع بارا مترات:
1. Button: ومنه تستطيع اختبار الزر المضغوط أثناء التحريك، ويأخذ هذا الوسيط ثلاث قيم هي:
1 للزر الأيسر،2 للزر الأيمن، 4 للزر الأوسط.
ملاحظة: يمكن جمع الأرقام السابقة للحصول على ضغط زرين، فمثلاً الرقم 3 يعني أن الزرين الأيسر والأيمن مضغوطين أثناء تحريك الماوس.
2. Shift: ومنه تستطيع معرفة إن كان أحد المفاتيح (Shift,Ctrl,Alt) مضغوطاً أثناء تحريك الماوس.
3. X و Y: يمثلان إحداثيات مؤشر الماوس على النافذة.
مثال:
1- أدخل الشفرة التالية في الحدث MouseMove التابع للنافذة:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line (0, 0)-(X, Y)
End Sub
أي ارسم خط من الموقع (0,0) إلى موقع المؤشر على النافذة (x,y).

2- نفذ البرنامج، ثم حرك مؤشر الماوس فوق النافذة وانظر كيف يتم رسم الخطوط.

3-أغلق البرنامج ثم استبدل الشفرة السابقة بالشفرة التالية:
IF Button = 2 Then Line (0, 0)-(X, Y)
الآن – وبعد التنفيذ- لن يتم رسم الخط إلا إذا ضغطنا الزر الأيمن أثناء تحريك الماوس على النافذة.
الحدث MouseDown: يقع هذا الحدث عندما يقوم المستخدم بالضغط على النافذة بأحد أزرار الفأرة وقبل الإفلات، وهذا الحدث يقدم أربع وسطاء هي نفسها وسطاء الحدث MouseMove.
الحدث MouseUp: يشبه هذا الحدث حدث MouseDown ولكنه يقع عند إفلات زر الماوس بعد أن يكون مضغوطاً.
الحدث Load: وهو خاص بالنافذة فقط، ويقع عند تحميل النافذة، أي يقم عند تنفيذ البرنامج. يستخدم هذا الحدث لعرض رسائل الترحيب، وتهيئة المتحولات وفتح الملفات وغير ذلك.
مثال:
1-اكتب الأمر التالي في الحدث Load التابع للنافذة:
MsgBox “مرحباً بكم
2- نفذ البرنامج، وستلاحظ ظهور الرسالة السابقة قبل ظهور النافذة.



يوجد عدة أنواع للمتحولات في Visual Basic،
وذلك اعتماداً على مجال رؤية المتحول وعمره.




-المتحولات الخاصة: ويصرح عنها ضمن الإجرائية (الحدث)، وعمر هذه المتحولات يساوي فترة استدعاء الإجرائية، أما مجال رؤيتها فهو داخل الإجرائية فقط، ويتم التصريح عن المتحولات بالشكل:



Dimاسم متحول As نوع معطيات


أنواع المعطيات المتوفرة في VB5 :
إليك الجدول التالي الذي يبين أنواع المعطيات المتوفرة في Visual Basic:
نوع المعطيات
الحجم في الذاكرة
المجال
Byte
1 Byte
0 To 255
Boolean
2 Bytes
True Or False
Integer
2 Bytes
- 32,768 To 32,767
Long
4 Bytes
+2,147,483,647 To -2,147,483,648
Single
4Bytes
-3.402823E-38 To -1.401298E-45
+1.401298E-45 To 3.402823E38
Double
8 Bytes
4.94065645841247E-324 To 1.79769313486232E308
Currency
8 bytes
-922,337,203,685,477.5808 To 922,337,203,685,477.5807
Date
8 bytes
January 1, 100 To December 31, 9999
String
Length of string
1 to approximately 65,400
Variant
with numbers
16 Bytes
Any numeric value up to the range of a Double
Variant
With characters
22 Bytes + string length
Same range as for variable-length String
User-defined
Number required by elements
The range of each element is the same as the range of its data type.

مثال1:
1- ابدأ بمشروع جديد.
2- ضع زر أوامر.
3- في الحدث Command1_Click اكتب الشفرة:
Dim x AS Integer
Dim y AS Integer
Dim z AS Integer
x = 3
y = 5
z = x + y
Print z
يقوم هذا البرنامج بالتصريح عن ثلاث متحولات خاصة في الحدث Click التابع لزر الأوامر، ومن ثم يقوم بعملية جمع عددين وإظهار النتيجة.
مثال 2:
1- استبدل الشفرة السابقة بما يلي:
Dim x AS Integer
x = x + 1
Print x
2- نفذ هذا البرنامج، واضغط على الزر عدة مرات ستجد أنه في كل مرة سيُطبع العدد واحد على الشاشة رغم أننا نزيد قيمة x، وذلك لأن x متحول خاص ينتهي عمره بمجرد انتهاء الضغط، ويتولد من جديد عند بداية الضغط.
3- ضع زر أوامر ثاني Command2 واكتب في الحدث Click :
Print x
ثم نفذ البرنامج واضغط على الزر ستجد أنه يتم طباعة صفر في كل مرة، وذلك لأن المتحول x غير مُعرف بالنسبة للزر الثاني.

2- المتحولات العامة على مستوى النافذة:
يتم التصريح عن هذه المتحولات في القسم General-Declarationsعلى الشكل:
1- نظهر نافذة الشيفرة بأي طريقة كانت .
2- من القائمة اليسرى نختار القسم General.
3- من القائمة اليمنى نختار القسم Declarations .
وفي هذا القسم يتم التصريح عن المتحولات العامة على مستوى النافذة أي المتحولات التي ستُرى من قبل جميع الأدوات والإجراءات والدوال الموجودة على هذه النافذة ، وستحافظ هذه المتحولات على قيمتها ابتداء من لحظة تحميل النافذة إلى الذاكرة ولغاية إزالتها من الذاكرة .


مثال:
1- إدخل إلى قسم التصريحات العامة General-Declarations وصرح عن متحول من نوع عدد كسري:
Dim x AS Integer
المتحول x سيكون معروف لدى جميع الأدوات الموجودة على النافذة .
2- ضع زر أوامر Command1 واكتب في الحدث Command1_Click :
x = x + 1
Print x
3- ضع زر أوامر Command2 واكتب في الحدث Command2_Click :
Print x
4- نفذ البرنامج ثم اضغط على الزر الأول، ستجد أنه كلما ضغطت على الزر ستزداد قيمة x بمقدار واحد وستُطبع القيمة الجديدة، اضغط على الزر الثاني ستجد أنه سيطبع قيمة x، أي أنه يعرف المتحول x.

ملاحظة:
بالنسبة للمتحولات العامة على مستوى المشروع، والمتحولات الساكنة فسنأتي على شرحهما لاحقاً.