|
[hide]محتويات الدرس الأول :
v تشغيل "فيجول بيسيك"
v نوافذ "فيجول بيسيك"
v الخروج من "فيجول بيسيك"
تشغيل ' فيجول بيسيك ' :
هناك عدة طرق لبدء "فيجول بيسيك" . فيمكن أن تبدأ فيجول بيسيك
من قائمة "ابدا" أو start كما تفعل مع معظم برامج ويندوز
ثم برامج أو programs ثم مجموعة visual basic 6.0
كما ترى فإن "فيجول بيسيك" له عدة نوافذ :
النافذة الرئيسية ونافذة المشروع ونافذة الأدوات ونافذة خصائص ونافذة البرمجة ونافذة إكتشاف الأخطاء ونافذة البرنامج
النافذة الرئيسية :
تستخدم هذه النافذة لأداء الوظائف الرئيسية في "فيجول بيسيك" مثل حفظ المشروعات أو عمل ملفات قابلة للتنفيذ ، وهي تنقسم إلى ثلاثة أقسام :
1.شريط العنوان :
ستلاحظ وجود العنوانMicrosoft Visual Basic[design]
والكلمة التي بين قوسين تعكس الطور الذي يعمل بة "فيجول بيسيك" حاليا ، وهي [design] أثناء تصميم البرنامج أو [run] أثناء تشغيله أو [break] أثناء توقيف البرنامج مؤقتا لفحصه .
2.شريط القوائم :
شريط القوائم هو الشريط الأبيض الذي يظهر أسفل شريط العنوان في نافذة "فيجول بيسيك" الرئيسية :
ويحتوي هذا الشريط على القوائم الرئيسية في "فيجول بيسيك" وتحتوي كل قائمة على مجموعة من الأوامر المتعلقة بموضوع معين
فمثلا : قائمة File تحتوي على الأوامر الخاصة بالمشروعات والملفات مثل حفظ أو التحميل وإضافة ملف أو حذفه.
وقائمة Edit تحتوي على أوامر خاصة بالتحرير مثل القص والصق والنسخ
وقائمة Run تحتوي على الاوامر الخاصة بتشغيل البرنامج مثل تنفيذه أو يقافه بصورة مؤقته أو إنهاؤه . وسوف نشرح كل أمر من هذه الأوامر عند استخدامه .
3.شريط الأدوات :
ويحتوي شريط الأدوات على مجموعة الأوامر التي تستخدمها دائما في "فيجول بيسيك" . هذه الأوامر موجودة في شريط القوائم ولكنها وضعت هنا تسهيلا عليك .
فمثلا بدل ما تبحث عن امر فتح ملف من قائمة File
يمكنك ان تنقر على الرمز مباشرة .
الرمز ومعناه : ) من اليمين إلى اليسار(
v مشروع جديد
v نافذه جديدة
v إظهار نافذة تصميم القوائم
v فتح مشروع جديد
v حفظ المشروع الحالي
v تشغيل البرنامج الحالي
v إيقاف البرنامج بصورة مؤقته
v إنهاء البرنامج الحالي
v إظهار نافذة الخصائص
v وضع أو حذف نقطة توقف
v مراقبة متغير
v عرض الاستدعاءات
v تنفيذ البرنامج خطوة فخطوة
v تنفيذ البرنامج إجراء فإجراء
نافذة الأدوات :
تحتوي نافذة الأدوات ToolBox على مجموعة الأدوات الموجودة في "فيجول بيسيك"والتي سنستخدمها عند تصميم البرامج .
نافذة المشروع :
تستخدم نافذة المشروع لتتيح لك التعامل مع النوافذ والأدوات والملفات الموجودة في البرنامج الحالي .
والمهم في هذه النقطة :
عندما تبدأ في تصميم برنامج جديد ، فإن هناك ثلاثه أنواع من الملفات يمكن أن تستخدمها : النوع الأول هو النوافذ Forms التي ستظهر للمستخدم أثناء تشغيل البرنامج ، وهذه يحفظها "فيجول بيسيك"
في ملفات تنتهي بالامتداد .frm والنوع الثاني هو ملفات البرمجة Code Modules وهذه تنتهي بالامتداد .bas وتستخدم للإعلان عن المتغيرات Varibles ووضع الإجراءات العامة General Procedures والنوع الثالث هو الأدوات الخاصة ، وهي تظهر في نافذة الأدوات مثل بقية الأدوات الأخرى .وتنتهي بالامتداد *.ocx
وتوجد في دليل \Windows\System
وعندما تحفظ البرنامج ، فإن "فيجول بيسيك" يضع جميع المعلومات الخاصة بهذا البرنامج في "مشروع".هذا الشروع عبارة عن ملف ينتهي بالامتداد *.mak يضع فيه "فيجول بيسيك" عدد وأسماء النوافذ التي تستخدمها وموقع كل نافذة على الشاشة ومواقع نوافذ "فيجول بيسيك"
وعندما ترغب في حفظ المشروع الحالي انقر على الرمز حفظ من شريط الأدوات أو اختر أمر save project من قائمة File
نافذة الخصائص :
تستخدم نافذة الخصائص properties window لاستعراض وتغيير خصائص النافذة أو الأداة النشطة :
وعندما تريد في استعراض أو تغيير خصائص إحدى النوافذ أو الأدوات في مشروعك ، انقر فوق هذه النافذة أو الأداة لتنشيطها .
نافذة البرمجة :
تظهر نافذة البرمجة Code Window عند النقر المزدوج على نافذة البرنامج أو على أحد الأدوات الموجودة عليها أو عند النقر على زر View Code من نافذة الشروع وتستخدم هذه النافذة في إضافة التعليمات Code التي ترغب في تنفيذها .
نافذة اكتشاف الأخطاء :
لاتظهر نافذة اكتشاف الأخطاء debug window إلا عند تشغيل البرنامج . وهي تلعب دوراً حيوياً في مرحلة اكتشاف الأخطاء التي توجد في برنامجك .
نافذة البرنامج :
نافذة البرنامج Form هي نافذتك . وهي الوحيدة من بين النوافذ السابقة التي ستظهر للمستخدم عند تشغيل برنامجك . ويمكنك التحكم في عنوانها وحجمها ولونها وحدودها بالشكل الذي تريده
ويمكنك أن تضع فوقها أي أداة من الأدوات الموجودة في نافذة الأدوات . ويمكنك إضافة نوافذ أخرى إلى البرنامج والتحكم في أيها تظهر على الشاشة في أي وقت .
و الآن وبعد أن تعرفنا على أجزاء "فيجول بيسيك" المختلفة . سنقوم بعمل برنامج صغير وهو عبارة عن ساعة بسيطة تظهر في أسفل الشاشة
لعمل البرنامج اتبع الخطوات التالية :
1. شغل برنامج "فيجول بيسيك"
2. انقر فوق نافذة البرنامج Form1 لتنشيطها .
3. انتقل إلى نافذة الخصائص واستخدم شريط التمرير الرأسي الموجود فيها حتى تصل إلى نهاية النافذة . ستجد أن آخر خاصية فيها هي windowstate وهذه الخاصية تتحكم في شكل النافذة عندما تبدأ . ستجد أن الرقم الموجود أمام الخاصية هو normal-0
ومعناه أن تظهر النافذة في وضعها المعتاد انقر نقرا مزدوجا حتى تتحول إلى
1-Minimized هذا الرقم يعني أن تبدأ النافذة مصغرة كرمز في أسفل الشاشة .
4. تأكد أن نافذة البرنامج Form1 مازالت هي النافذة النشطة ثم استخدم شريط التمرير الرأسي مرة أخرى للبحث عن خاصية Icon هذه الخاصية تُستخدم للتحكم في رمز النافذة عندما تكون مصغرة . انقر فوق هذه الخاصية نقراً مزدوجاً . سيعرض لك "فيجول بيسيك"مربع حوار فتح الملفات ليتيح لك تحديد ملف الرمز الذي ترغب في استخدامه للنافذة
5. انتقل إلى الدليل \vb\icons\misc ثم اختر الرمز clock03
6. انتقل إلى نافذة الأدوات وانقر أداة المؤقت نقرا مزدوجاً تستجد أن نسخة من أداة المؤقت قد انتقلت إلى وسط نافذة البرنامج Form1 وإنها محاطة بمربعات صغيرة .
7. انتقل إلى نافذة الخصائص وانقر خاصية Interval ستجد أن القيمة الموجودة أمام هذه الخاصية هي 0 أدخل الرقم 1000
8. انتقل إلى نافذة البرنامج وانقر على أداة المؤقت الموجودة عليها نقرا مزدوجاً . ستظهر لك نافذة البرمجة code window :
اكتب السطر التالي :
Form1.caption = format(now, "long time")
بين السطرين الموجودين في النافذة .
9. اضغط الرمز من شريط الأوامر .
سيظهر لك "فيجول بيسيك" نافذة يسألك عن اسم الملف الذي سيحفظ فيه نافذة البرنامج اكتب اسم الملف Myclock في خانة file name ثم اضغط مفتاح الإدخال أو انقر زر ok
10.سيظهر مربع حوار آخر يسألك هذه المرة عن اسم المشروع اكتب أيضا Myclock ثم اضغط مفتاح الإدخال . بهذا قد تكون قد حفظت المشروع
10. ولتنفيذ البرنامج انقر على الرمز او اختر الامر start من قائمة Run أو اضغط مفتاح F5 .
11. انقر الرمز أو اختر أمر End من قائمة Run لإنهاء البرنامج .
عمل ملف قابل للتنفيذ :
بعد أن تنتهي من عمل برنامج ما ، يمكنك تحويله إلى ملف للتنفيذ Executable File بحيث تشغله من ويندوز مباشرة دون الحاجة إلى وجود "فيجول بيسيك" .
دعونا نقوم بعمل ملف قابل للتنفيذ لبرنامج الساعة :
1. اختر الأمر Make EXE File من قائمة File . سيعرض عليك "فيجول بيسيك" مربع حوار
2. يسألك "فيجول بيسيك" عن اسم الملف القابل للتنفيذ اكتب اسم الملف myclock في خانة File Name ثم اضغط مفتاح الادخال ، قم بتجربة البرنامج من مستكشف ويندوز
الخروج من "فيجول بيسيك" :
للخروج من "فيجول بيسيك" اختر الأمر Exit من قائمة File .اذا كنت قد اجريت أي تعديل على المشروع الحالي أو على أي نافذة ، سيعرض "فيجول بيسيك" رسالة يسألك اذا كنت ترغب في حفظ التعديلات التي أجريتها على النافذة أو المشروع قبل الخروج أم لا . اختر Yes لحفظ التعديلات أو No للخروج دون حفظ التعديلات أو Cancel لإلغاء الأمر والبقاء في "فيجول بيسيك"
محتويات الدرس الثاني :
--------------------------------------------------------------------------------
محتويات الدرس الثاني :
v تعرّف على بيئة ويندوز
v استخدم الأدوات
v مراحل كتابة البرنامج
vأدوات فيجوال بيسك
v ما هي الأدوات ؟
v وضع الأدوات على النافذة
v طرق تحديد الأدوات
بيئة ويندوز متعددة المهام :
يمكن لـ ويندوز أن تشغل أكثر من تطبيق في وقت واحد ، وهو مايعرف بتعدد المهام Multitasking . تقوم "ويندوز" بتوزيع إمكانيات الجهاز بين التطبيقات المختلفة التي تعمل في نفس الوقت مما يؤدي إلى أن تعمل هذه التطبيقات جنبا إلى جنب . ولأنه من الممكن أن يعمل أكثر من تطبيق على نفس الجهاز في وقت واحد فإن هذه التطبيقات تتقاسم فيما بينها الإمكانات المتاحة بالجهاز مثل شاشة الجهاز والذاكرة ، وأهم من ذلك تتقاسم وقت المعالج المركزي CPU .
لذلك عندما تصمم برنامجك ، يجب أن تضع في ذهنك احتمال وجود برامج أخرى تعمل في نفس الوقت وألا تحتكر أيا من موارد النظام System Resources ، مثل الذاكرة أو الشاشة . هذه نقطة مهمة جدا في فهم فلسفة البرمجة لـ "ويندوز" بشكل عام ولـ"فيجول بيسيك" بشكل خاص . فإذا كنت قد كتبت برامج بأي لغة لنظام ''دوس'' فإنك كنت تفترض أن برنامجك هو الوحيد الذي يعمل وبالتالي فإنه يمتلك الجهاز بكامله . وهذا الافتراض كان صحيحاً بالنسبة لبيئة ''دوس'' ولكنه غير صحيح ـ إطلاقا ـ بالنسبة لبيئة ''ويندوز'' .
الرجوع إلى القائمة العليا
استخدام الأدوات :
نقطة مهمة يجب أن تضعها في ذهنك عند تصميم البرنامج : ذلك أنك لا تبدأ كتابة البرنامج من الصفر ، وإنما هناك مجموعة من الأدوات الموجودة في "فيجول بيسيك" والتي يمكنك استخدامها في برنامجك . هذه الأدوات هي أكثر الأدوات استخداماً في بيئة "ويندوز" . فعندما تريد أن تقوم بعمل نافذة ، فأنت لا تكتب أ ي تعليمات خاصة بإنشائها ، وإنما تصدر أمراً إلى "فيجول بيسيك" بإنشاء نافذة جديدة ، ثم تبدأ بالتحكم في شكلها وطريقة تصرفها . وعندما تريد أن تكتب في أداة العنوان Label تقوم بسحبها من نافذة الأدوات إلى نافذة البرنامج ، ولذلك تعد عملية " التصميم " البرنامج واختيار الأدوات المناسبة جزءاً مهماً من مراحل كتابة البرامج بـ"فيجول بيسيك" .
الرجوع إلى القائمة العليا
مراحل كتابة البرنامج :
كما هو الحال في البرمجة بأي لغة تأتي الفكرة في المقدمة ، بل إن فكرة البرنامج قد تكون هي العامل الرئيسي في تحديد البيئة التي ستكتبه بها ، بعد أن تحدد فكرة البرنامج ، تبدأ في تقسيم البرنامج إلى أجزاء مستقلة يقوم كل جزء منها بأداء دور معين ، وهكذا
وبعد أن تنتهي من إعداد فكرة البرنامج ، سيمر برنامجك من خلال المراحل الثلاث الآتية :
1. تصميم واجهة البرنامج Drawing the interface
بعد أن تحدد فكرة البرنامج ، تبدأ عملية تصميمه . ويجب أن تجيب على عدة أسئلة : كم نافذة يحتاج البرنامج ؟ ما هي الأدوات التي تحتاجها ؟ هل تحتاج إلى قائمة منسدلة ؟ وهكذا ..
ثم تبدأ في تحديد شكل البرنامج بوضع الأدوات المختلفة على نافذة أو نوافذ البرنامج .
2. ضبط الخصائص Setting Properties
بعد أن تضع الأدوات على النافذة ، تأتي مرحلة تحديد سلوك هذه الأدوات . توجد لكل أداة من الأدوات بما في ذلك نافذة البرنامج عدة خصائص Properties تحدد شكلها ولونها والخط المستخدم فيها وعنوانها ، وغير ذلك . وتقوم في مرحلة ضبط الخصائص بتغيير الخصائص الافتراضية لهذه الأدوات لتناسب برنامجك . فمثلاً يفترض "فيجول بيسيك" أنك تريد لون خلفية نافذة برنامجك بنفس اللون الذي يختاره المستخدم من لوحة التحكم Control Panel في "ويندوز" . فإذا كنت لا تريد ذلك وتريد أن تظهر خلفية النافذة باللون الأسود مثلاً ، فما عليك سوى أن تغير خاصية لون الخلفية BackColor للنافذة
3. كتابة التعليمات Writing Code
بعد أن تنتهي من المرحلتين السابقتين ، تأتي مرحلة كتابة التعليمات التي تريد من "فيجول بيسيك" أن يقوم بتنفيذها عند وقوع حدث معين . فإذا كنت قد نفذت البرنامج التجريبي في المحاضرة الأولى ستلاحظ أننا كتبنا أمراً واحداً وهو
caption = format (now, "long time ")
وهذا الأمر يقوم "فيجول بيسيك" بتنفيذه كل ثانية بسبب أداة المؤقت على نافذة البرنامج ، وهذا الأمر بدوره يغّير عنوان النافذة إلى الوقت الحالي .
وبعد التعرف على بيئة ويندوز واستخدام الأدوات ومراحل كتابة البرنامج نتعرف على
الرجوع إلى القائمة العليا
أدوات فيجوال بيسك
v ما هي الأدوات ؟
v وضع الأدوات على النافذة
v طرق تحديد الأدوات
ما هي الأدوات ؟
عبارة عن أجزاء برامج "جاهزة للاستخدام". وهي توفر عليك الوقت والجهد . الذي تكفل به مبرمجين عنك ووضعوا أدواتهم مشاعا للمبرمجين .
استخدامها
اسمها
عرض الصور أو كوعاء للأدوات الأخرى
خانة الصورة
عرض النصوص الثابتة التي لا يستطيع المستخدم تعديلها كالعنواين .
العنوان
طلب معلومة من المستخدم أو عرض النصوص التي يمكن للمستخدم أن يعدلها .
خانة النص
وضع الأدوات الأخرى في مجموعة داخله .
الإطار
ينقر عليه المستخدم لتنفيذ أمر معين
زر الأمر
سؤال المستخدم هل يريد فعل شئ محدد أم لا
خانة الاختيار
إعطاء المستخدم الحرية في الاختيار من قائمة أو إدخال اختياره كتابة .
الخانة المركبة
عرض قائمة مرتبة أو غير مرتبة ، من عمود واحد أو عدة أعمدة .
خانة القائمة
استعراض محتويات قائمة أو نافذة ، أو للحصول على معلومة من المستخدم
شريط تمرير أفقي
نفس استخدام شريط التمرير الافقي
شريط تمرير رأسي
تنفيذ أوامر كل فترة زمنية محددة .
المؤقت
عرض قائمة بالأقراص الموجودة بالجهاز .
قائمة الأقراص
عرض قائمة بالأدلة الموجودة في القرص الحالي .
قائمة الأدلة
عرض قائمة بالملفات الموجودة في القرص الحالي .
قائمة الملفات
وضع أشكال هندسية مثل الدوائر والمربعات فوق نافذة البرنامج .
أداة الأشكال
رسم الخطوط فوق نافذة البرنامج .
أداة الخطوط
عرض الصور .
أداة الرسم
الدخول على ملفات قواعد البيانات .
أداة قاعدة البيانات
عرض البيانات في جداول .
أداة الشبكة
وضع " كائنات " من التطبيقات الأخرى في برنامجك واستخدام التطبيقات الأصلية في تحريرها .
أداة ربط الكائنات وتضمينها
استخدام مربعات الحوار الشائعة الموجودة في ويندوز من داخل برنامجك .
أداة مربعات الحوار الشائعة
الرجوع إلى القائمة العليا
وضع الأدوات على النافذة
هناك طريقتان لوضع الأدوات على النافذة :
1. وضع الأدوات بالنقر المزدوج
2. طريقة الرسم
وضع الأدوات بالنقر المزدوج
إذا نقرت على أي أداة موجودة في نافذة الأدوات نقراً مزدوجاً ، ستجد أن "فيجول بيسيك" قد نقل نسخة إلى منتصف نافذة البرنامج وأصبحت محاطة بمربعات صغيرة كما في الشكل التالي :
طريقة الرسم :
v انقر الأداة التي تريد استخدامها في نافذة الأدوات نقرة واحدة فقط .
v حرك المشيرة إلى نافذة البرنامج ، ستلاحظ أن شكل المشيرة تغير وهذا معناه أن "فيجول بيسيك" في طور "رسم" .
v ضع المشيرة في المكان الذي تريد وضع الأداة فيه ثم اضغط زر الفأرة الأيسر واحتفظ به مضغوطا ثم اسحب .
v حرك المستطيل إلى أن ترضى عن حجمه ثم حرر زر الفأرة .
الرجوع إلى القائمة العليا
طرق تحديد الأدوات
تحديد الأداة النشطة
عندما تريد أن تقوم بأي تغير على اداة معينة من الأدوات التي وضعتها على نافذة البرنامج ، مثل تغيير خصائصها أو قصها أو خذفها من النافذة ، فإن عليك أن تحدد هذه الأداة لتجعلها نشطة
تحديد أكثر من أداة :
× انقر على الاداة الأولى ثم اضغط مفتاح العالي Shift واحتفظ به مضغوطا ثم انقر بقية الأدوات . ستجد أن "فيجول بيسيك" يحدد كل الأدوات التي تنقر عليها .
تغيير موقع الأدوات
قم بالنقر على الاداة التي تريد ان تغير موقعها ثم اسحبها عن طريق الفارة
وطريقة أخرى وهي عن طريق خصائصها من خلال نافذة خصائص
خاصية Lift وخاصية Top
قص الأدوات : ctrl-x
لصق الأدوات : ctrl-v
نسخ الأدوات : ctrl-c
حذف الأدوات : عن طريق مفتاح Delete من لوحة المفاتيح
--------------------------------------------------------------------------------
محتويات الدرس الثالث
v معنى الخصائص
v ضبط الخصائص
v الخصائص المشتركة
معنى الخصائص
لكل أداة من أدوات "فيجول بيسيك" بما في ذلك نافذة البرنامج كما ذكرنا في المحاضرات السابقة
ويوجد عدة خصائص لنافذة البرنامج مثل خاصية الخط FontName وهي تحدد اسم الخط المستخدم
وخاصية BackColor وهي تحدد لون الخلفية للنافذة أو الأداة
ويوجد خصائص كثيرة في كل أداة من الأدوات .
وعندما تضع أداة على نافذة البرنامج ، فإن "فيجول بيسيك" يضع قيماً افتراضية لخصائصها . فإذا لم تعجبك هذه القيم الافتراضية ، فإنه يمكنك أن تغيرها وتضع لها قيمـاً جديدة .
فمثلاً : يختار "فيجول بيسيك" خط ms sans serif للأدوات التي لها عنوان مثل أزرار الأوامر ، فإذا لم يعجبك هذا الخط ، فإنه يمكنك أن تغيره إلى أي خط موجود في "ويندوز". والهدف من وضع قيم افتراضية لخصائص الأدوات هو التسهيل عليك . فلو ترك "فيجول بيسيك" كل الخصائص بدون قيمة ، ستضطر إلى وضع قيمة لكل خاصية لكل أداة . وهي عملية شاقة بالطبع
ضبط الخصائص
هناك طريقتان لضبط الخصائص :
1. أثناء تصميم البرنامج
2. واثناء تشغيله
ضبط الخصائص أثناء تصميم البرنامج
كما ذكرنا في المحاضرات السابقة يتم ضبط الخصائص أثناء تصميم البرنامج باستخدام نافذة الخصائص propertie window وهناك ثلاثة خطوات تمر بها عملية تغيير الخصائص ، هي :
1. تحديد الأداة التي تريد ضبط خصائصها (يمكنك تحديد أكثر من أداة )
2. تحديد الخاصية التي تريد تغييرها
3. إدخال القيمة الجديدة
إذا لم تكن نافذة الخصائص ظاهرة على الشاشة ، اضغط مفتاح F4 لإظهارها :
نافذة الخصائص تنقسم إلى ثلاثة أقسام : خانة الأداة وخانة إدخال القيمة وقائمة بالخصائص :
خانة الأداة :تعرض هذه الخانة اسم الأداة النشطة ونوعها . إذا كنت تريد أن تعدل خصائص أداة أخرى غير تلك المعروضة في هذه الخانة ، فهناك طريقتان :
1. أن تنتقل إلى نافذة البرنامج FORM1 ثم تنقر فوق الأداة المطلوبة
2. أن تضغط السهم الموجود في يمين خانة الأداة . عندها سيعرض لك "فيجول بيسيك" قائمة بكل الأدوات الموجودة فوق النافذة لتختار أحدها. انقر فوق الأداة المطلوبة .
خانة إدخال القيمة
تستخدم هذه الخانة لإدخال القيمة الجديدة للخاصية التي حددتها في قائمة الخصائص .
لاحظ أن الزر الموجود في يمين خانة إدخال له ثلاثة أشكال وهي :
الشكل الأول
معناه انك لن تضطر إلى كتابة القيمة بنفسك وإنما يمكنك اختيارها من قائمة سيعرضها لك "فيجول بيسيك" عند النقر على السهم مثل خاصية الخط
الشكل الثاني
معناه أنه يمكنك أن تختار قيمة الخاصية الحالية من مربع حوار فمثلا عند تغيير خاصية BACKCOLOR سيظهر الزر في يمين خانة إدخال القيمة انقر عليه سيظهر مربع حوار يحتوي على الألوان الموجودة في "ويندوز" . انقر فوق لون لتختاره .
الشكل الثالث :
وهو مثل الشكل الأول ولكنة خافت ، وهذا معناه أن "فيجول بيسيك" ليس لديه اختيارات للخاصية الحالية وأنك يجب أن تدخل قيمتها بالكتابة . مثل خاصية Caption التي تحدد خاصية العنوان أو Left التي تحدد موقع الأداة أفقيا أو Top التي تحدد موقع الأداة رأسيـاً . فـ "فيجول بيسيك" ليس لديه خيارات لهذه الخصائص وإنما يجب أن تدخلها بنفسك .
ضبط الخصائص أثناء تشغيل البرنامج
هناك بعض الخصائص التي لا تكون متاحة إلا عند تشغيل البرنامج ، مثل خاصية Drive التي تحدد القرص الحالي في أداة الأقراص أو خاصية path التي تحدد المسار لأداة الأدلة
وحتى ولو كانت الخاصية متوفرة أثناء تصميم البرنامج ، فمن الممكن أن تحتاج إلى تغيرها أثناء تشغيل البرنامج . فمثلا خاصية backcolor التي تحدد لون الخلفية متوفرة أثناء تصميم البرنامج ولكن من الممكن أن تحتاج إلى تغييرها أثناء تشغيل البرنامج .
فمثلا عندما تريد أن تُغير لون خلفية نافذة البرنامج بناءاً على رغبة المستخدم ، فإنك تعرض على المستخدم لوحة بالألوان المتاحة ، وتترك له الاختيار ، ثم تقوم بتغيير لون الخلفية بناءاً على رغبته ، وهذه عملية لايمكن أن تتم أثناء تصميم البرنامج .
فكيف إذا نغير الخصائص أثناء تشغيل البرنامج ؟
ولتغيير الخصائص أثناء عمل البرنامج اتبع الصيغة التالية :
القيمة الجديدة = اسم الخاصية . الأداة
cotrolName.propertyName = New Value
وهذا يعني تكتب اسم الاداة التي ترغب في تغيير خصائصها ثم تضع بعدها نقطة (.) ثم اسم الخاصية التي ترغب في تغيير قيمتها ثم علامة يساوي (=) ثم القيمة الجديدة للخاصية .
وتجربة على ذلك .
v انقر زر أوامر من نافذة الأدوات واوضعه في نافذة البرنامج
v انقر زر اوامر نقرا مزدوجا
v سيظهر لك نافذة البرمجة الخاصة بهذا الزر :
ادخل الاسطر التالية :
Sub command1_click ()
form1.backcolor = 0
form1.caption = "this is a test"
command1.width = 2500
command1.caption = " push me please "
command1.top = 10
End sub
وبعد ذلك اضغط F5 لتشغيل البرنامجا
الخصائص المشتركة
خاصية العنوان )تستخدم هذه الخاصية عندما تريد تغير عنوان زر الأمر من command1 إلى خروج مثلاً(
اسم الخاصية : Caption
متوفرة أثناء : التصميم والتنفيذ
هذه الخاصية متوفرة لجميع الأدوات
مثال :
"مسابقة الشاطر يربح"form1.caption =
خاصية الاســم
اسم الخاصية : Name
متوفرة أثناء : التصميم فـقط.
خاصية الاسم خاصية تشترك فيها كل الأدوات . وهي تحدد الاسم الذي ستستخدمه أنت للإشارة إلى الأداة أثناء كتابة البرنامج . فكما قلنا
عندما تضع اداة معينة على نافذة البرمجة يقوم "فيجول بيسيك" بتسميتها بطريقة اتوماتيكية بإضافة الاسم ثم رقم مثل form1 أو command1 أو label1 كل هذه اسماء يقوم "فيجول بيسيك" بوضعها
خصائص اللون
اسم الخاصية : forecolor للون الكتابة
backcolor للون الخلفية
متوفرة أثناء : التصميم والتنفيذ
تتحكم هاتان الخاصيتان في لون الكتابة ولون الخلفية فمثلا الأمر :
label1.forecolor = qbcolor (1)
وهذا يعني قم يا"فيجول بيسيك" بتغيير لون الكتابة لأداة العنوان إلى اللون الأزرق
خصائص الخط المستخدم في الكتابة
اسم الخاصية : fontbold , fontitalic ,fontname ,fontsize ,fontstrike ,fontunderline
متوفرة أثناء : التصميم والتنفيذ
تتحكم هذه الخصائص في اسم وصفات الخط المستخدم في الكتابة
تتحكم في …
اسم الخاصية
اختيار اسم الخط
Fontname
سمك الخط
Fontbold
ميل الخط مثل : خط مائل
Fontitalic
حجم الخط
Fontsize
خط وسط الخط مثل "فيجول بيسيك"
Fontstrikethru
خط تحت الخط مثل : "فيجول بيسيك"
fontunderline
خصائص الحجم والموقع على النافذة
اسم الخاصية : Top,Lift,Height,Width
متوفرة أثناء : التصميم والتنفيذ
تتحكم هذه الخصائص الأربع في موقع الأداة وحجمها على النافذة وبالنسبة للنوافذ تتحكم في موقعها على الشاشة وحجمها كما يلي :
تتحكم في …
اسم الخاصية
الطرف العلوي للأداة
Top
الطرف الأيسر للأداة
Left
أرتفاع الأداة
Height
عرض الأداة
Width
مثال :
form1.top = 0
form1.left = 0
سيحركان النافذة إلى أقصى اليسار العلوي من الشاشة . كما إن الأمر :
command1.width = command1.width *2
سيجعل عرض الأداة command1 يتضاعف
خاصية شكل المشيرة
اسم الخاصية : MousePointer
متوفرة أثناء : التصميم والتنفيذ
يتيح لك "فيجول بيسيك" تغيير شكل المشيرة تبعاً للأداة التي تمر من فوقها . وهناك ثلاثة عشر شكلاً للمشيرة يمكن أن تختار بينها الأمر :
command1.mousepointer = 10
وهذا يغير شكل المشيرة إلى سهم لأعلى كلما مرت فوق الزر command1
أما الامر التالي يحول المشيرة إلى علامة الانتظار (الساعة الرملية )
command1.mousepointer = 11
وأما اصدار الامر التالي يعيد شكل المشيرة إلى الوضع الطبيعي
command1.mousepointer = 0
خاصية الظهور
اسم الخاصية : Visible
متوفرة أثناء : التصميم والتنفيذ
فيما عدا أداة المؤقت وأداة مربعات الحوار الشائعة ، فإن الأدوات التي تضعها على النافذة تظهر أثناء تشغيل البرنامج . ولكن قد تريد أحيانا أن تحفي بعض الأدوات وأن تظهر بعضها تبعاً لطبيعة برنامجك. هذه الخاصية تمكنك من عمل ذلك . فمثلا الأمر :
text1.visible = false
يؤدي إلى اختفاء خانة النص text1 بينما الأمر :
text1.visible = true
يعيد إظهارها .
لا يظهر تأثير هذه الخاصية إلا عند تشغيل البرنامج
خاصية التمكين
اسم الخاصية : enabled
متوفرة أثناء : التصميم والتنفيذ
تستخدم هذه الخاصية عندما تريد أن تبقى الأداة ظاهرة على النافذة ولكن لا تريد أن تتيح للمستخدم أن يتعامل معها . فإذا عيرت هذه الخاصية إلى false لأداة فإنها ستظهر خافته على النافذة مما يعطى المستخدم تلميحا إلى أنه لن يتمكن من استخدامها الأن .
خصائص السحب والإلقاء
اسم الخاصية : DragIcon , DragMode
متوفرة أثناء : التصميم والتنفيذ
تستخدم عملية السحب والإلقاء كثيرا في "ويندوز" وتعني أن تقوم بنقر عنصر معين على الشاشة أو النافذة ثم تبقي زر الفأرة مضغوطاً وتسحب هذا العنصر إلى موقع جديد ثم تلقيه بأن تحرر زر الفأرة . وأشهر مثال على تلك العملية هي عند تحريك نوافذ التطبيقات العادية
وتتحكم خاصية طور السحب DragMode في أسلوب عملية السحب ولها وضعان
0 "يدوي" وهو الوضع الافتراضي ، وفيه يجب أن تقوم باستخدام الأوامر في بدء وإنهاء عملية السحب .
1 "تلقائي" وفيه تبدء عملية السحب تلقائياً عندما يضغط المستخدم زر الفأرة فوق الأداة .
تستخدم هاتين الخاصيتين بالاشتراك مع الحدثين dragdrop ,dragover
في القيام بعملية السحب . ولأننا لم نشرح الأحداث بعد ، دعنا نأخذ مثالاً بسيطا على عملية السحب والإلقاء.
v ضع خانتي نص على النافذة وكبر حجمهما ، واتركهما على اسمهما الافتراضي text1,text2
v انتقل إلى الخانة الأولى text1 وانقر عليها لتنشيطها
v انتقل إلى نافذة الخصائص وانقر فوق خاصية طور طور السحب DragMode
وحولها إلى 1automatic
v انتقل إلى نافذة البرنامج form1 ثم انقر فوق خانة النص الثانية text2 نقراً مزدوجاً
v سيفتح "فيجول بيسيك" نافذة البرمجة الخاصة بهذه الخانة :
كما ترى من الشكل اختر الحدث OLEDragdrop الخانة الموضحة في الشكل اكتب السطر :
text2.text = text1.text
v اضغط F5 لتشغيل البرنامج
v استخدم لوحة المفاتيح لكتابة بعض النص في خانة النص text1
v انقر فوق خانة النص text1 واسحبها ستجد أن هناك مستطيلا بنفس حجم الخانة يتحرك مع حركة الفأرة
v ألق هذا المستطيل فوق خانة النص الثانية text2
--------------------------------------------------------------------------------
محتويات الدرس الرابع :
v ما هو الحدث ؟
v كيف تستجيب للحدث ؟
v نافذة البرمجة
v الأحداث المشتركة
v المتغيرات والمصفوفات والإجراءات
ما هو الحدث ؟
الحدث Event هو كل مايقوم به المستخدم من حركات بالفأرة كالنقر أو النقر المزدوج أو ما يقوم به من ضغط على لوحة المفاتيح .
كيف تستجيب للحدث ؟
عند وقوع الحدث هناك أمران : الأول ، هو الحدث نفسه كالنقر مثلاً والثاني هو الأداة التي وقع الحدث فوقها مثل زر الأوامر . يقوم "فيجول بيسيك" بإعداد إجراء حدث على كل أداة موجودة فوق النافذة ويكون الإجراء كما في الشكل التالي :
أي أن "فيجول بيسيك" يقوم بوضع إجراء فارغ لهذا الحدث ، وأنت تضع فيه التعليمات Code التي تريد أن تنفذها عند وقوع الحدث . لذلك يجب هنا أن تسأل نفسك : ماهي التعليمات في داخل إطار الإجراء . وبالتالي كلما نقر المستخدم هذا الزر أثناء تشغيل البرنامج ، فإن "فيجول بيسيك" يقوم بتنفيذ هذه التعليمات لاحظ كيف يربط "فيجول بيسيك" بين الأداة والحدث :
sub command1_click
فهو يضع كلمة sub وهي تحدد بدء الإجراء ثم يضع اسم الأداة ثم حرف (-)ثم اسم الحدث . وفي النهاية يضع عبارة end sub وهي تحدد نهاية الإجراء .
الأحداث الناتجة عن الفأرة
متى يقع
معناه
الحدث
عند نقر المستخدم فوق الأداة أو النافذة ويمكن أن يقع أيضاً إذا ضغط المستخدم عصا المسافة على لوحة المفاتيح بينما التركيز على زر أوامر
النقر
Click
عند نقر المستخدم نقراً مزدوجاً فوق الأداة أو النافذة
النقر المزدوج
DbClick
عند تحريك المستخدم الفأرة فوق الأداة أو النافذة
حركة الفأرة
MouseMove
عندما يقوم المستخدم بنقر زر الفأرة وقبل أن يحرره..أي أثناء عملية النقر
زر الفأرة اسفل
MouseDown
بعد أن يقوم المستخدم بنقر زر الفأرة وتحريره . أي بعد عملية النقر .
زر الفأرة ارتفع
MouseUp
Sub Command1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub
وهو هنا يعطيك متغيرات ، كل واحد منها يحمل معلومة معينة ، كما يلي :
المتغير Button :
الأحداث الأربعة السابقة تقع عند ضغط المستخدم بأي زر من أزرار الفأرة الثلاثة ويوضح لك المتغير Button أي زر منها قام المستخدم بضغطه ، وله ثلاثة احتمالات :
1. المستخدم ضغط الزر الأيسر
2. المستخدم ضغط الزر الأيمن
3. المستخدم ضغط الزر الأوسط
ولايمكن للمستخدم أن يضغط أكثر من زر في نفس الوقت . قإذا أردت أن تختبر إن كان المستخدم قد ضغط الزر الأيمن ، فإنك تكتب :
if button = 2 then …………..
فإذا كان المستخدم قد ضغط الزر الأيمن ، سيقوم "فيجول بيسيك" بتنفيذ الأمر التالي لكلمة then
التغير Shift :
يوفر لك معلومات عن حالة المفاتيح الثلاثة Ctrl و Shift و Alt أثناء ضغط زر الفأرة ، كما يلي :
1 المستخدم ضغط مفتاح shift
2 المستخدم ضغط مفتاح Ctrl
4 المستخدم ضغط مفتاح Alt
لاحظ أنه يمكن للمستخدم أن يضغط أكثر من مفتاح في نفس الوقت . في هذه الحالة يحتوي المتغير shift على مجموع المفاتيح التي ضغطها . فمثلاً إذا ضغط على مفتاحي ctrl و alt في نفس الوقت ، فإن المتغير shift سيحتوي على مجموعهما هو 6 لذلك إذا أردت أن تختر إن كان المستخدم ضغط مفتاح shift أثناء ضغطه لزر الفأرة ، فإنك تكتب :
if shift = 1 then
أو أردت أن تختبر إن كان قد ضغط مفتاحي alt و shift أثناء ضغطة لزر الفأرة
if shift = 5 then
المتغيران y,x :
يحددان موقع المشيرة داخل الأداة أثناء عملية ضغط زر الفأرة .
الأحداث الناتجة عن لوحة المفاتيح
هناك ثلاثة أحداث متعلقة بلوحة المفاتيح ، هي :
متى يقع
معناه
الحدث
عندما يقوم المستخدم بضغط حرف من حروف آسكي فوف لوحة المفاتيح
ضغط حرف
Keypress
عندما يقوم المستخدم بضغط أي حرف على حرف وقبل أن يحرره أي أثناء عملية الضغط
المفتاح أسفل
KeyDown
عندما يقوم المستخدم بضغط أي حرف على لوحة المفاتيح ثم يحرره أي بعد عملية الضغط
المفتاح ارتفع
Keyup
ويستخدم الحدث keypress عندما تريد أن تعرف الحرف الذي ضغطه المستخدم فوق لوحة المفاتيح
مثال :
Sub Form_KeyPress (keyascii As Integer)
Print keyascii
If keyascii = 81 Then
End
End If
End Sub
v المتغيرات
v المصفوفات
v الثوابت
المتغيرات
المتغير Variable هو اسم تستخدمه لحمل قيمة متغيرة . فمثلاً إذا أردت أن تسأل المستخدم عن اسمه ، فاسم المستخدم قيمة متغيرة لأنك لاتعرف ماهو . فممكن أن يكون "علي" أو "محمد" أو "عبدالمحسن" أو أي اسم آخر . لذلك نستخدم له متغير ، وليكن UserName$ في هذه الحالة يمكنك كتابة الأمر :
)"أدخل اسمك من فضلك"UserName$ = InputBox$ (
سيعرض "فيجول بيسيك" مربع حوار التالي :
ملاحظة : يستخدم امر inputbox$ لطلب معلومة من المستخدم.
شرح السطر السابق هو :
أن "فيجول بيسيك" يتيح للمستخدم أن يدخل اسمه في الخانة الموجودة في أسفل المربع .
وعندما ينتهي المستخدم من إدخال الاسم ، فإن "فيجول بيسيك" يضع هذا الاسم في المتغير username$ . ويبقى هذا المتغير يحمل هذه القيمة حتى تقوم بتغييرها.
ويمكنك استخدام القيمة التي يحملها المتغير كأن تضعها في متغير آخر ، مثل :
clientName$ = UserName$
فهنا سينسخ "فيجول بيسيك" القيمة الموجودة في المتغير username$ ويضعها في المتغير cilentname$ . ويمكن أن تضع هذه القيمة في أداة القائمة مثلاً :
list1.additem username$
ويمكنك تغيير القيمة التي يحملها المتغير بوضع قيمة جديدة داخله ، فيلغي "فيجول بيسيك" القيمة القديمة ويضع محلها القيمة الجديدة . مثلاً :
"عبدالرحمن مصلحusername$ = "
وهذا المتغير يُسمى متغير حرفي string variable لأنه يحتوي على مجموعة حروف . وتوجد كذلك متغيرات عددية وهي تستخدم لحمل الأعداد وليس الحروف . فمثلاً يمكنك أن تسأل المستخدم عن عمره وتضع القيمة التي يدخلها في متغير عددي :
)"أدخل عمرك ، من فضلك"userage = inputbox$ (
ويتميز المتغير العددي بإمكانية إجراء العمليات الحسابية مثل الطرح والضرب والقسمة عليه مثل برنامج الوحدات الذي قمتُ ببرمجته وشرحة
اختيار اسم المتغير
هناك شروط لاختيار اسم المتغير منها :
· يجب ألا يزيد اسم عن 40 حرفاً
· يجب أن يكون أول حرف منه حرفاً هجائياً
· يجب ألا تستخدم كلمة من الكلمات المحجوزة reserved words كأسم للمتغير من الكلمات المحجوزة print و end ولكن يمكن أن تكون جزء من اسم اخر مثل PrintText
أنواع المتغيرات
مداه
معناه
نوع المتغير
من –32768 إلى 32767
عدد صحيح
Integer
من –214748E إلى 21474
عدد صحيح
Long
-3.402823 إلى –1.40129
من 1.4012 إلى 3.4028
عدد ذو فاصلة عشرية عائمة
Single
-1.7976931 إلى –4.9406
من 4.94065 إلى 1.79769
عدد ذو فاصلة عشرية
Double
============
=======
Currency
من 0إلى 65.500 حرف تقريباً
مجموعة من الحروف
String
حرفي أو عددي
بتاع كُـله
Variant
الإعلان عن المتغيرات
الإعلان عن المتغير أن تخبر "فيجول بيسيك" عن اسم المتغير ونوعه ، مثل :
Dim UserName As String
فهنا الأمر Dim يخبر "فيجول بيسيك" أننا نريد أن نعلن عن متغير ، وكلمة UserName كمتغير يحمل سلسلة حروف . في هذه الحالة ، يقوم "فيجول بيسيك" بحجز الذاكرة الضرورية لذلك المتغير وتهيئته .
لاحظ أن الإعلان عن المتغير ليس إجباري
الفائدة من الإعلان عن المتغيرات
عدم الإعلان عن المتغير قد يؤدي أحياناً إلى أخطاء خفية في برنامجك .فمثلاً انظر السطرين التاليين :
)"أدخل اسمك من فضلك"username$ = inputbox$ (
print usename$
سيقوم السطر الأول بالتنفيذ ويطلب المستخدم بالاسم ولكن لن يطبع اسم المتغير لإن الكلمة خطا (ناقصة حرف r ) ومع ذلك سوف يقوم"فيجول بيسيك" بتنفيذ البرنامج بدون أي مشاكل !!!
ولحل هذه المسألة ، يمكنك أن تخبر "فيجول بيسيك" أن يعرض رسالة خطا عند ورود أي متغيرات لم يسبق الإعلان عنها . وذلك عن طريق استخدام الأمر :
Option Explicit
ويتم الإعلان عن المتغيرات باستخدام أحد الأوامر التالية :
Dim ,Global ,Static
يجب الإلتزام بنوع المتغير
مثلا :
لا يجوز أن تعلن عن متغير عددي وتضع فيه قيمة حرفية
والعكس صحيح كذلك
مدى المتغيرات وعمرها :
المتغيرات العامة
المتغير العام هو المتغير الذي يمكنك أن تستخدمه من أي مكان في البرنامج ، أي أن مداه يشمل جميع البرنامج بجميع ملفاته ونوافذه .
ويبقى في الذاكرة طوال فترة عمل البرنامج ولا يحذف من الذاكرة إلا بعد انتهاء البرنامج .
ولكن يجب أن تضع الإعلان عن المتغير العام في ملف برمجة وليس في نافذة .
طريقة ادخال المتغيرات التي ترغب في جعلها متغيرات عامة هي
Global UserName As String
بعد هذا الإعلان ستتمكن من استخدام المتغير UserName من أي مكان داخل البرنامج وستجد أنه يحتفظ بقيمته طوال فترة عمل البرنامج .
المصفوفات
المصفوفة Array هي سلسلة من المتغيرات تحمل نفس الاسم ويتم التمييز بين المتغيرات داخل هذه المصفوفة باستخدام رقم المتغير داخلها .
يوفر استخدام المصفوفات وقتاً وجهداً كبيرين ، كما قد يؤدي إلى بساطة وصغر حجم البرنامج . لنفرض مثلاً أنك تريد أن تقرأ أسماء 50 موظفاً من ملف ، وأنك تريد أن تحتفظ بها في الذاكرة لتعديلها أو عرضها أو ترتيبها . فيكف تعمل ذلك ؟ إذا استخدمت متغيرات عادية ، ستضطر إلى الإعلان عن 50 متغيرا ثم تكرر أمر القراءة من الملف لكل واحد من هذه المتغيرات الخمسين ، ثم تضع ماقرأته في المتغير المناسب . وهذه مسألة شاقة بالطبع . كما أن ذلك سيؤدي إلى كبر حجم البرنامج دون داع . والحل المناسب لهذه المسألة هو أن تستخدم مصفوفة مكونة من 50 عنصراً وذلك بكتابة الأمر :
Dim EnpName(50) As String
هنا ، الاسم EmpName هو اسم المصفوفة ، والرقم (50) هو عدد العناصر داخلها ثم كلمة String تحدد نوع المتغيرات التي ستضعها في المصفوفة . كلمة as string اختيارية وإن لم تحددها سيكون نوع المتغيرات هو variant وبالتالي يمكن تخزين أي نوع فيه .
يمكنك قراءة أسماء الموظفين ووضعها في المصفوفة باستخدام تكرار For …Next
بالشكل التالي :
For counter = 0 to 49
Empname(counter) = inputbox$("أدخل اسم الموظف التالي")
Next counter
فهنا نستخدم تكرار for ..next (سوف نشرحها بالتفصيل في المحاضرات التالية)
لنطلب من المستخدم إدخال أسماء الموظفين . هذا التكرار يستمر خمسين مرة من صفر إلى 49 . لاحظ أن العد داخل المصفوفة يبدأ من صفر وليس من 1 . لذلك تبدأ المصفوفة من الرقم صفر وتستمر حتى 49 .
ويمكنك الإشارة إلى أي عنصر داخل المصفوفة بأن تذكر اسم المصفوفة ثم رقم العنصر داخلها .فمثلاً ، لتغير قيمة العنصر العاشر في المصفوفة ، فإنك تكتب :
"الدكتور منصور"empname(9) =
وإذا أردت قراءة القيمة الموجودة في المتغير رقم 20 داخل المصفوفة ووضعها في متغير آخر فإنك تكتب :
curname =empname(19)
لاحظ مرة أخرى أن الوضع الافتراضي للمصفوفات هو أن يبدأ العد داخلها من صفر . فإذا رغبت أن تجعل العد يبدأ العد من 1 ضع الأمر التالي :
option base 1
الثوابت
الثوابت تعني لها قيمة لاتتغير بعكس المتغير
مثلا بدلا من أن تضع قيمة معينة على كل البرنامج ضع ثابت لها في أول البرنامج ثم اكتب البرنامج على اساس الثابت بدلا من القيمة في كل البرنامج
مثال :
لنفرض أن لديك عشرين موظفاً تريد أن تطلب بياناتهم من المستخدم يمكنك أن تكتب عدد الموظفين وهو هنا 30 مباشرة في كل مرة تحتاج إلى ذلك مثل :
for counter = 1 to 30
…………………..
………………….
Next counter
لنفرض أنك كتبت أمراً مثل هذا في ستة أو سبعة مواضع داخل البرنامج ، ثم أردت بعد ذلك أن تغير عدد الموظفين من 30 إلى 60 . فماذا تفعل ؟ في هذه الحالة سوف تضطر إلى أن تبحث عن كل المواضع التي ذكرت فيها الرقم 30 وتغيره إلى 60 وإذا نسيت موضعاً سوف يؤدي ذلك إلى خلل في عمل البرنامج .
وكحل لتلك المسألة ، استخدم ثابتاً constant وضعة في بداية البرنامج أو الإجراء مرة واحدة وتضع فيه العدد الذي ترغب فيه ، مثل :
const NUM_OF_EMPLOYEES =30
وبعد ذلك تقوم في عملية التكرار بعمل التالي :
for counter = 1 to NUM_OF_EMPLOYEES
…………………..
………………….
Next counter
وبذلك يتحقق أمران : الأول أن الثابت NUM_OF_EMPLOYEES أسهل في تذكر معناه من الرقم 30 ، والثاني : انك لو أردت تغيير عدد الموظفين من 30 إلى 60 كما افترضنا من قبل ، فكل ماعليك القيام بة هو تغيير الثابت من القيمة القديمة إلى القيمة الجديدة .
وهناك فائدة أخرى أن "فيجول بيسيك"يستخدم نظاماً خاصا لتحديد درجات الألوان فإذا أردت أن تغير لون أداة إلى الأزرق أثناء تشغيل البرنامج ، فإنك تكتب :
LABEL1.BACKCOLOR = &HFF0000
فإن "فيجول بيسيك" يستخدم الرقم &HFF0000 للأزرق وغيرها من الألوان فكيف يمكنك أن تتذكر كل هذه الأرقام الغير مفهومة ؟
الحل : هو أن تضعها في ثوابت بالطريقة التالية :
const BLACK = &H0&
const RED = &HFF&
وبهذة الطريقة يمكنك أن تغير الألوان بطريقة مفهومة وسهلة الاستخدام
مثال :
LABEL1.BACKCOLOR = RED
مدى الثوابت :
مثل المتغيرات بالضبط فإذا كنت تريد أن تستعمل الثابت في كل النوافذ الموجودة في البرنامج فيجب أن تضع الثابت في ملف برمجة وتسبقه بكلمة Global
مثال :
Global const User_NAME = "ABSOFT2000"
أما إذا كنت تريد أن تستعمله في نافذة واحدة فضعه في داخل نافذة البرمجة الخاصة بتلك النافذة
الاجراءات
متى تحتاج إلى الاجراءات ؟
مع تزايد حجم البرنامج الذي تكتبه ، ستجد أن هناك أجزاءاً من البرنامج تحتاج إلى تنفيذها أكثر من مرة في أكثر من مكان. فمثلاً قد تحتاج أن تسأل المستخدم عن اسم ملف لحفظ البيانات فيه ثم تتأكد إن كان الاسم الذي ادخله المستخدم سليماً أم لا . فإن لم يكن سليماً تعاود الكرة وتسأله عن اسم صحيح ، وهكذا حتى يدخل اسماً صحيحا للملف أو يلغي الأمر . لنفرض أنك تحتاج إلى هذا الجزء في أكثر من مكان داخل برنامجك . فماذا تفعل ؟
يمكنك أن تكتب هذا الجزء مرة واحدة ثم تنسخه في كل مرة تحتاج إليه وتلصقه في المكان الجديد . لكن هذا يؤدي إلى أن يكبر البرنامج بدون داع . كما إنك إذا رغبت في تعديل هذا الجزء وتحسينه ، ستضطر إلى البحث عنه في كل مكان وضعته فيه وإجراء التحسينات عليه . وهذه مسألة شاقة . وقد تنسى تعديله في مكان مما يؤدي إلى وجود خلل في البرنامج .
الحل الأمثل هو أن تضع مجموعة الأوامر المتكررة في ( إجراء عام ) ثم تستدعي هذا الإجراء كلما احتجت له . وهذه هي فائدة الاجراءات
كيف تكتب الإجراء ؟
Object انقر نافذة البرنامج نقرا مزدوجا لكي تفتح لك نافذة البرمجة ثم إذهب إلى
واضغط السهم سوف ينسدل لك قائمة انقر منها (general)
وبعد ذلك سوف تجد نافذة البرمجة خالية اكتب فيها ما يلي :
اسم الاجراءsub
Sub Getfilename مثل :
ثم اضغط زر إدخال من لوحة المفاتيح يظهر لك مايلي :
Sub getfilename ( )
هنا تكتب الاوامر التي تريدها لهذا الاجراء
End sub
وعندما تريد أن تستدعي الاجراء ماعليك إلا أن تكتب اسمه فقط
محتويات الدرس الخامس
--------------------------------------------------------------------------------
محتويات الدرس الخامس :
v المعاملات (<> و < و > و => و =<)
v تركيب If…Then
v تركيب if …then …else
v تركيب select case
v تركيب For…Next
v تركيب do...loop
أولاً : المعاملات
سوف نلخصها في هذا الجدول
خاطئ إذا
صحيح إذا
مثال
معناه
المعامل
A أصغر أو أكبر من B
A تساوي B
A = B
يساوي
=
A تساوي B
A تختلف عن B
A <> B
لايساوي
<>
A أكبر من أو يساوي B
A أصغر من B
A < B
أصغر من
>
A أكبر من B
A أصغر من أو يساوي B
A <= B
أصغر من أو يساوي
=>
A أصغر من أو تساوي B
A أكبر من B
A > B
أكبر من
<
A أصغر من B
A أكبر من أو يساوي B
A >= B
أكبر من أو يساوي
=<
ملاحظة :
الرجاء من المبرمجين حفظ هذا الجدول
تركيب If…Then
If
شرط
Then
أمر واحد
مثال
if
"علي"Pw$ <>
Then
end
فإذا كانت الكلمة التي أدخلها المستخدم تختلف عن <> عبارة "علي" فإن الشرط يعد صحيحاً ويقوم "فيجول بيسيك" بتنفيذ الأمر الذي يلي كلمة Then وهو امر end وهو يقوم بإنهاء البرنامج .
يمكن تنفيذ عدة أوامر بالطريقة التالية
If
شرط
Then
الاوامر
مجموعة
End if
مثال : (برنامج إدخال كلمة سر )
)"أدخل كلمة السر من فضلك"pw$ = inputbox$ (
then "علي"if pw$ <>
beep
beep
"كلمة السر غير صحيحة"msgbox
end
end if
تركيب if…then ….else
وتكون صياغته بالشكل التالي :
then شرطif
مجموعة أوامر
else
مجموعة أوامر
end if
في هذا التركيب يقوم "فيجول بيسيك" بتقييم الشرط ، فإن كان صحيحاً فإنه ينفذ مجموعة الأوامر التي تلي كلمة then حتى كلمة else وإن كان خاطئاً فإنه ينفذ مجموعة الأوامر
التي تلي كلمة else حتى كلمة end if . أي أنه لابد من تنفيذ إحدى المجموعتين من الأوامر . مثال :
)"أدخل كلمة السر من فضلك"pw$ = inputbox (
then "علي" if pw$ =
"أهلا وسهلاً بك في البرنامج" msgbox
else
"هذا البرنامج مخصص لمجموعة محددة من المستخدمين"msgbox
end
end if
يقوم البرنامج بسؤال المستخدم عن كلمة سر فإذا كانت صحيحة فإنه يرحب به وأما إذا كانت غير ذلك يعرض عليه رسالة توضيحية وبعدها يخرج من البرنامج
تركيب Select Case
إذا كان لديك احتمال واحد أو احتمالين للشرط ، فإنه يمكنك إستخدام تركيبات if التي ذكرناها سابقاً . أما إذا كان لديك عدة احتمالات فإنه من الأفضل أن تستخدم تركيب Select Case وتكون صياغته كالتالي
الشرط select case
الاحتمال الأول Case
مجموعة أوامر
الاحتمال الثاني Case
مجموعة أوامر
الاحتمال الثالث Case
مجموعة أوامر
………
إذا لم يكن أي من الاحتمالات السابقة Case Else
End Select
في هذا التركيب يقوم "فيجول بيسيك" بتقييم الشرط في بداية التركيب . ثم يبدأ في مقارنته مع الاحتمالات المختلفة التي تذكرها عند كلمة Case ، فإذا وافق أحدها الشرط ، فإنه يقوم بتنفيذ مجموعة الأوامر التي تليها حتى كلمة Case التالية . وإذا لم يوافق أي من الاحتمالات المذكورة فإنه ينفذ مجموعة الأوامر التي تلي كلمة Case Elese ( وهي اختيارية ) فإذا لم تكن موجودة ، فإنه لانفذ أي من تلك الأوامر
وكمثال على تركيب Select Case ، لنفرض أن لديك أربعة مستخدمين للبرنامج وتريد أن تحدد درجة المستخدم حسب كلمة السر التي يدخلها ، فإنك تكتب شيئاً مشابها لمجموعة الأوامر التالية :
"أدخل كلمة السر من فضلك"pw$ = inputbox (
المعيار الذي سنتفرع بناءاً على قيمته select case pw$
هل هي الخفجي؟ "الخفجي" case
مجموعة الأوامر
هل هي الوفرة؟ "الوفرة" case
مجموعة الأوامر
ليست واحدة من الكلمات Case Else
"كلمة السر غير صحيحة "msgbox
end
end selcet
التكرار :
التكرار loop يعني تكرار مجموعة معينة من الأوامر عدد معين من المرات . وهناك ثلاثة تركيبات لعمل ذلك وهي :
تركيب for …next
يستخدم إذا كنت تعرف عدد المرات التي ترغب في تكرارها ، وتكون صياغته كالتالي:
for
متغير يستخدم للعد
=
البداية
to
النهاية
step
الزيادة في كل مرة(اختياري
ضع مجموعة الأوامر التي تريد تكرارها هنا
اسم المتغير next
مثال :
إذا أردت أن تكرر مجموعة أوامر عشرة مرات مثلا قم بما يلي :
for counter = 1 to 10
مجموعة الأوامر
next counter
ويجب أن لا تعدل قيمة المتغير الذي يحمل عدد مرات التكرار
مثال
for counter = 1 to 10
………………….
Counter = counter +1
Next counter
هذا التكرار سيتفذ 5 مرات لأن في كل مرة يتم فيها تنفيذ مجموعة الأوامر المحصورة بين for و next تتم فيها زيادة المتغير مرتان .
تكرار do…...loop
يفيد هذا التكرار إذا كنت لاتعرف عدد مرات التكرار التي تريدها
لنفرض أنك تريد تكرار مجموعة أوامر بشكل مستمر حتى يتحقق شرط معين فإنك تستخدم هذا التكرار . ( هذا التكرار له عدة أشكال سوف نشرح هذه الاشكال كما يلي :
الشكل الأول
شرط do while
مجموعة الأوامر ……
loop
في هذه الصياغة يقوم "فيجول بيسيك" بتقييم الشرط ، فإن كان خاطئا فلا يقوم بتنفيذ التكرار أبداً . أما إذا كان صحيحاً ، فإنه يقوم بتنفيذ مجموعة الأوامر المحصورة كلمتي do و loop مرة. ثم يعود ويختبر الشرط مرة أخرى .. وهكذا حتى يجد الشرط خاطئاً فيخرج من التكرار . مثال :
dim myval as string
do while myval <> "bye"
input #1, myval
print myval
loop
في هذا المثال يضل يقرأ حتى يصل إلى كملة "bye "
الشكل الثاني
DO
مجموعة الأوامر
الشرط Loop while
في هذه الحالة يقوم "فيجول بيسيك" بتنفيذ التكرار مرة واحدة ثم يحتبر الشرط فإن كان خاطئا فإنه يوقف التكرار ، وإن كان صحيحا فإنه يقوم بتكرار مجموعة الأوامر
الخروج من التكرار :
طريقة الخروج
اسم التكرار
Exit for
التكرار for…next
Exit loop
التكرار do …loop
--------------------------------------------------------------------------------
محتويات الدرس السادس :
v أهم خصائص النافذة
v أهم أحداث النافذة
v إظهار النوافذ وإخفائها
أهم الخصائص للنافذة
اسم الخاصية : AutorRedraw
متوفرة أثناء : التصميم والتنفيذ
تحدد هذه الخاصية إذا كانت النافذة ستفقد محتوياتها عند إعادة رسمها أم لا . إذا وضعت أدوات مثل أدوات الخط أو الأشكال أو العنوان فإذا حدث مايستدعي إعادة رسم للنافذة ، كأن تغطيها نافذة أخرى ثم تنكشف . فإن "فيجول بيسيك" يقوم بإعادة رسمها دون تدخل منك .
أما إذا كتبت أي شئ على النافذة باستخدام الأمر print أو رسمت أي شكل هندسي بإستخدام الأمر circle أو line ثم قام المستخدم بتصغير النافذة ثم تكبيرها فإن النافذة ستفقد محتوياتها وتظهر بدون الأشكال أو العبارات التي طبعتها ذلك أن الناتج من هذه الأوامر ليس ثابتاً . جرب ذلك :
مثال
v افتح مشروع جديد
v انقر نقراً مزدوجاً فوق النافذة form1 لتفتح نافذة البرمجة الخاصة بها .
v غير الحدث المعروض في النافذة إلى حدث النقر click
v اكتب التعليمات التالية :
sub form_click ( )
circle (2500,2000),1500
"هذه تجربة على الكتابة فوق النافذة " print
end sub
v شغل البرنامج بالضغط على F5
v انقر فوق النافذة سوف يقوم "فيجول بيسيك" بتنفيذ الأوامر التي وضعتها في
حدث النقر فيرسم دائرة ويطبع جملة .
v صغر النافذة ثم كبرها ، ماذا تلاحظ ؟؟؟ ستجد أن النافذة فقدت محتوياتها .
والحل هو أن تضع الأوامر في الحدث paint بدلاً من click
مثال :
sub form_paint ( )
circle (2500,2000),1500
"هذه تجربة على الكتابة فوق النافذة " print
end sub
v شغل البرنامج F5
v صغر النافذة وكبرها ، ستجد أن النافذة محتفظة بمحتوياتها
حل أخر ( هو يمكن أن تغير خاصية النافذة form1 وتضع autodedraw قيمة true
شرح دراسة الخصائص للنافذة form1 في المحاضرة
إخفاء النافذة
استخدم امر hide لإخفاء النافذة
مثال :
form2.hide
وهذا الامر يقوم بإخفاء form2
اظهار النافذة
مثال :
form2.show
وهذا الامر يقوم بإظهار form2
أوامر التعامل مع الملفات والأدلة
v معرفة القرص والدليل الحالي
إذا أردت معرفة القرص والدليل الحالي ، استخدم الأمر curdir$
مثال :
label1.caption = curdir$
يعود هذا بالدليل الحالي بكاملة بما فيه القرص الحالي . لذلك يمكنك استخدام الأمر left$ لقراءة أول حرف فيه ومن ثم معرفة القرص الحالي ، مثل :
mydrive$ = left$(curdir$, 1)
فهنا المتغير mydrive يحتوي على القرص الحالي
معرفة الدليل الذي بدأ منه برنامجك
مثال :
a$ = app.path
نسخ ملف
عندما ترغب في نسخ ملف ، استخدم الأمر filecopy وله الصيغة التالية
"الهدف" ," المصدر" filecopy
مثال :
filecopy "c:\mypro\test.exe" , "c:\windows\test.exe"
ومن الممكن تغيير اسم الملف عند النسخ
مثال :
filecopy "c:\mypro\test.exe" , "c:\windows\absoft.exe"
حذف ملف
باستخدام امر kill
مثال :
kill "c:\mypro\test.exe"
يجب أن تتحلى بالحذر عند استخدام هذا الامر لإنه أيضا يستخدم خاصية * و ؟
كما تفعل في نظام دوس
مثال :
kill "*.tmp"
إعادة تسمية الملفات والأدلة
فمثلاً من الممكن تسمية الملفات أو الأدلة باستخدام الأمر name وله الصيغة التالية:
"الاسم الجديد"as "الاسم القديم"name
مثال
name "c:\mypro\test.exe" as "c:\mypro\test.old"
ومن الممكن أن تستخدم الأمر لنقل ملف من دليل إلى آخر فمثلاً :
name "c:\mypro\test.exe" as "c:\test.exe"
فهنا ننقل الملف test.exe من دليل mypro إلى الدليل الجذري c:\
البحث عن ملف
بإستخدام امر dir$
مثل الامر الموجود في نظام دوس
مثال :
exist$ = dir$ ("c:\vb\icons\computer\disk03.ico")
يحمل المتغير exits$ نتيجة البحث عن الملف . ويمكنك بعد ذلك إختباره
مثال :
if exist$ <> "" then
)"تم العثور على الملف"msgbox (
else
"لم يتم العثور على الملف المطلوب"msgbox
end if
فتح الملف
لكي نقرأ أو نكتب إلى ملف ، يجب أن تفتحه أولاً . ويمكنك فتح الملف باستخدام الأمر open وله الصيغة التالية :
رقم الملف as #طور الملفfor اسم الملف open
ويعني طور الملف مايلي
استخدم كلمة input
فتح الملف للقراءة
استخدم كلمة output
فتح الملف للكتابة (يمسح محتويات الملف)
استخدم كملة append
فتح الملف للإضافة (يقوم بإضافة )
بعد فتح الملف يمكنك أن تقوم بالعمليات التالية :
v الكتابة إلى الملف
تتم الكتابة إلى الملف باستخدام الأمر print
وله الصيغة التالية :
"ماتريد كتابته" , رقم الملفprint #
مثال
"خلاص قربت تنتهي دورة فيجول بيسك" , 1print #
مثال على ذلك
v افتح مشروع جديد
v ضع اداة الأوامر على نافذة البرنامج
v وبعد ذلك انقر على اداة الأوامر نقرا مزدوجاً
سيفتح لك نافذة البرمجة اكتب مايلي :
sub command1_click ()
open "c:\test.txt" for output as #1
"هذا اختبار لفتح الملفات والكتابة عليها print #1 , "
"بإستخدام فيجول بيسك print #1 , "
close #1
end sub
القراءة من الملف
استخدم الأمر input وله الصيغة التالية :
متغير , رقم الملفinput #
وفي هذه الحالة سيقوم بقراءة سطر كامل من الملف ، ويضعه في المتغير . فإذا فرضنا أنك فتحت الملف تحت الرقم 1 ، يمكنك أن تكتب :
input #1 , myline$
فهنا سيقرأ الأمر input سطراً من الملف ويضعه في المتغير myline$
ولكن إحذر أن تقرأ إلى نهاية الملف لإن "فيجول بيسيك" سوف يقوم بتوقيف البرنامج
ولحل ذلك اختبر قيمة الأمر ) رقم الملف EOF(
if EOF(1) then
وصلنا إلى نهاية الملف
else
لم نصل إلى نهاية الملف
end if
جرب القراءة من الملفات :
v افتح مشروع جديد
v ضع اداة الأوامر على نافذة البرنامج
v وبعد ذلك انقر على اداة الأوامر نقرا مزدوجاً
سيفتح لك نافذة البرمجة اكتب مايلي :
sub command1_click ()
open "c:\autoexec.bat" for input as #1
do while not eof (1)
input #1, a$
print a$
loop
close #1
end sub
v شغل البرنامج F5
كيف تغلف الملف ؟
بعد أن تنتهي من القراءة أو الكتابة ، يجب أن تغلف الملف وهو سهل جداً ماعليك إلى أن تكتب
رقم الملفClose #
وإذا كنت تريد أن تغلف ملفات كثيرة فتحتها اكتب
Close
كيف تطلب معلومة من المستخدم ؟
ومع أنها الان مفهومة ولكن هنا سوف نقوم بشرحها بالتفصيل
طلب معلومة من المستخدم استخدم الامر inputbox$
وله صيغة التالية
متغير
Inputbox$
,رسالة(
,عنوان النافذة
(قيمة افتراضية
رسالة تعني : الجملة التي تريد عرضها على المستخدم
عنوان النافذة : هو شريط العنوان في النافذة التي يعرضها على المستخدم
قيمة افتراضية : هو القيمة التي تضعها أنت للمستخدم مثل
كيف تعرض رسالة على المستخدم ؟
قد ترغب في أحيان كثيرة أثناء سير البرنامج ، أن تطلب من المستخدم أن ستخذ قرارا بشأن مسألة ما . فمثلاً إذا طلب المستخدم حفظ ملف باسم معين ، ثم كان هذا الملف موجوداً على القرص ، فقد ترغب في سؤاله إن كان يريد الكتابة فوقه أم لا . في هذه الحالة تعرض له رسالة وتترك له حرية اختيار الإجراء المناسب ، مثل :
كيف تعرض هذه الرسالة ؟
يتم عرض هذه الرسائل باستخدام الأمر msgbox وله شكلان . الأول إذا كنت تريد عرض رسالة بيسطة ولا تطلب من المستخدم أن تحدد رأيه في مسألة معينة ، في هذه الحالة استخدام الصيغة التالية :
عنوان مربع الحوار, الأزرار والرموز , الرسالة المطلوبه msgbox
أما إذا كنت تريد أن تعرف رأيه بشئ معين قم بوضع الامر بالطريقة التالية
عنوان مربع الحوار, الأزرار والرموز , الرسالة المطلوبه msgbox = المتغير
وفي هذه الحالة سيحمل المتغير رد فعل المستخدم
الرسالة المطلوبه : هو الجملة التي تريد عرضها على المستخدم
عنوان مربع الحوار : هو عنوان شريط عنوان مربع الحوار
الأزرار والرموز : وهو يحدد نوعية الأزرار التي ترغب في عرضها والرموز
وهذه الرموز والأزرار :
معناه
الرقم
عرض زر ok (موافق)
0
عرض زري ok (موافق) و cancel (إلغاء الأمر)
1
عرض أزرار abort (توقف) وretry (إعادة المحاولة) ignore (تجاهل)
2
عرض أزرار yes (نعم) و no (لا) و cancel (إلغاء الأمر)
3
عرض أزرار yes (نعم) و no (لا)
4
عرض أزرار retry (إعادة المحاولة) وcancel ( إلغاء الأمر)
5
عرض رمز قف
16
عرض رمز علامة الاستفهام
32
عرض رمز علامة التعجب
48
عرض رمز علامة الاستعلام
64
فإذا رغبت في عرض رسالة تحتوي على الأزرار ok و cancel ومعها رمز علامة الاستعلام ،فإنك تجمع 1+64 = 65 وتستخدمها عندما تطلب الرسالة هكذا :
"بدون عنوان", 65, "هذه رسالة للتجربة"msgbox
وإذا كنت تريد أن تعرف رد فعل المستخدم ، فإن الأمر msgbox يعود بالاحتمالات التالية :
المستخدم نقر زر …
الرقم
Ok ( موافق)
1
Cancel (إلغاء امر)
2
Abort (توقف)
3
Retry (إعادة المحاولة)
4
Ignore (تجاهل)
5
Yes (نعم)
6
No (لا)
7
ومثال على ذلك :
sun command1_click ()
" هل ترغب حقاً في إنهاء البرنامج "msg$ =
"الخروج من البرنامج"title =
response = msgbox (msg ,36 ,title )
if response = 6 then end
end sub
شرح البرنامج :
في هذه الحالة سيعرض "فيجول بيسيك" الرسالة وإذا اختار المستخدم "نعم" yes
فإن "فيجول بيسيك" ينهي البرنامج .
الصوت في "فيجول بيسيك"
يجب كتابة هذا الربط الديناميكي في ملف برمجة في سطر واحد ولكنه هنا في سطرين .
Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
أما هذا الامر فوق النافذة نفسها وتضعه في general
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
وبعد كتابة هذا السطر ماعليك الان إلا كتابة الاسم فقط وهو SNDPLAYSOUND
DIM Result as integer
Result = sndplaysound("c:\windows\toda.wav",3)
يقوم هذا الاجراء بمعرفة مسار برنامجك الذي شغل منه ثم يشغل ملف موجود في نفس المسار وهو أفضل من السابق [/hide] |