![]() | ![]() | ![]() |
![]() |
| |||||||
| التسجيل | الأسئلة الشائعة | الأعضاء | التقويم | مركز رفع الملفات | البحث | مواضيع اليوم | تعليم الأقسام كمقروءة |
![]() |
| | خيارات الموضوع | طريقة العرض |
| #1 | |||
| | |||
| موضوعى الجديد دلوقتى هو شرح مبسط زتفصيلى لبرنامج من اهم البرامج ويارب تستفيدوا طيب يلا بسم الله الرحمن الرحيم الفصل الأول كتابة أول برنامج لك في فيجول بيسك سنكتب في هذا الفصل، أول برنامج لك في فيجول بيسك. تمر مرحلة كتابة البرنامج في فيجول بيسك بخطوتين: · خطوة التصميم المرئي للبرنامج. سندعوها عبر الكتاب بالتمثيل المرئي Visual Implementation للنموذج. · خطوة كتابة نص البرنامج. يُصمِم المستخدم خلال الخطوة الأولى، البرنامج باستخدام الأدوات التي تأتي مع برمجية فيجول بيسك. تمكّنك هذه الأدوات من تصميم البرنامج باستخدام الفأرة ولوحة المفاتيح. لا يلزمنا خلال مرحلة البرمجة المرئية (أي التصميم المرئي) كتابة أي نص برمجي!، وكل ما عليك معرفته هو كيف تشغّل وتستخدم الأدوات البرمجية التي تأتي مع فيجول بيسك. وسوف تلاحظ أن عملية التصميم المرئي فيها قدر كبير من المتعة وتعتمد بكثرة على النقر بالفأرة. يركز هذا الفصل على معرفة كيفية استخدام أدوات التصميم المرئي في فيجول بيسك. أما في خطوة كتابة نص البرنامج، فيستخدم محرر نصوص لكتابة البرنامج. وتتألف البرامج من عبارات مكتوبة بلغة البرمجة فيجول بيسك. تتشابه عملية كتابة نصوص البرامج في فيجول بيسك مع كتابة البرامج في اللغات الأخرى. إلا أن كتابة البرامج في فيجول بيسك أسهل بكثير من كتابتها باللغات الأخرى. حول هذا الفصل ستلاحظ إذا استعرضت باقي فصول الكتاب، أن هذا الفصل ليس نموذجياً، فهو يركز على ناحية البرمجة المرئية Visual Programmingللغة فيجول بيسك، ولهذا فهو يدقق على كيفية استخدام الأدوات البرمجية للغة (عناصر التحكم). بينما تتولى فصول الكتاب المتبقية تعليمك، كيفية كتابة نص البرامج في فيجول بيسك. إنشاء دليل حفظ الملفات قبل البدء بعملية كتابة أول برنامج لك في لغة فيجول بيسك، سننشئ دليلاً يحوي على ملفات العمل المنجز. وسنفترض عبر هذا الفصل، أن الدليل موجود لديك على القرص الصلب، وسنطلب منك فقط حفظ الملفات فيه، لهذا أنشئ الدليل التالي C:\VB5Prg\Ch01. برنامج الترحيب سنكتب برنامجاً يدعى برنامج الترحيب. وقبل كتابة برنامج الترحيب بنفسك دعنا ندرس أولاً مواصفاته، وبهذه الطريقة سنتمكن من فهم ما يفترض أن ينجزه هذا البرنامج بشكل أفضل. يظهر الإطار المبين في الشكل 1-1، عند بدء تشغيل برنامج الترحيب وكما تلاحظ يحوي إطار البرنامج على ثلاثة أزرار أوامر (الزر إظهار الترحيب والزر مسح والزر خروج) ومربع نص فارغ. الشكل 1-1 برنامج الترحيب. تظهر الرسالة مرحباً بكم ضمن مربع النص، عند النقر على الزر إظهار الترحيب. الشكل 1-2 إظهار مرحباً بكم في مربع النص. يمحو برنامج الترحيب محتوى مربع النص، عند النقر بالفأرة على الزر مسح. ينتهي تنفيذ برنامج الترحيب عند النقر على الزر خروج. إنشاء مشروع جديد الآن وقد علمت ما ينجزه برنامج الترحيب، نستطيع الشروع بكتابته. ملاحظة برنامج الترحيب عبارة عن برنامج بالغ البساطة، لكن مع ذلك يتوجب عليك كتابته بنفسك، لأنه يمثل برنامجاً نموذجياً في فيجول بيسك. وفي الواقع، حال تعلمك كيفية كتابة برنامج الترحيب بنفسك، تستطيع فهم ما هي لغة فيجول بيسك! طبعاً هنالك كمّ هائل من المعلومات الأخرى في فيجول بيسك لا بد لك من معرفتها، إلا أن كتابة هذا البرنامج بنفسك يعني أنك تعرفت على أساسيات فيجول بيسك. أُولى الأوليات التي يجب عليك إنجازها، هي إنشاء مشروع جديد New Project لبرنامج الترحيب باتباع الخطوات التالية: · شغّل فيجول بيسك. إذا رأيت مربع الحوار المبين في الشكل 1-3، فأغلق هذا المربع بنقر الزر إلغاء الأمر. · اختر البند New Project من القائمة File لفيجول بيسك. يستجيب فيجول بيسك بإظهار مربع الحوار New Project المبين في الشكل 1-4. الشكل 1-3 مربع الحوار New Project الذي قد يظهر عند تشغيل فيجول بيسك. كما يبدو من الشكل 1-4. يمكّنك مربع الحوار New Project من إنشاء أنواع مختلفة من المشاريع (Project). لكننا في الوقت الراهن، نرغب بإنشاء تطبيق تنفيذي قياسي (Standard EXE). الشكل 1-4 مربع الحوار New Project الذي يُظهره فيجول بيسك بعد اختيار New Project من القائمة File. لهذا أَخبر فيجول بيسك بذلك باتباع الخطوة التالية: · انقر الرمز Standard EXE الذي يظهر ضمن مربع الحوار New Project ثم انقر الزر OK لمربع الحوار New Project. يظهر عند ذلك إطار خال يدعى النموذج Form1 (انظر الشكل 1-5). سنستخدم أدوات لغة فيجول بيسك المتنوعة حتى يصبح النموذج الخالي، كالمبين في الشكل 1-1. الشكل 1-5 النموذج Form1 الفارغ. حفظ المشروع الجديد رغم أننا لم نجر أي تعديلات بعد على النموذج الفارغ، لكن يتوجب عليك حفظ المشروع في هذه المرحلة المبكرة من التصميم. يؤدي حفظ المشروع إلى تخزين ملفين: · ملف المشروع Project File، ويمتلك الامتداد vbp. يحتوي هذا الملف على المعلومات التي يستخدمها فيجول بيسك لبناء المشروع. · ملف النموذج Form File، ويمتلك الامتداد frm. ويحتوي على معلومات تتعلق بالنموذج نفسه. استخدم الآن الخطوات التالية لحفظ الملفين: Hello.vbp (ملف المشروع)، و Hello.frm (ملف النموذج). · تحقق من تمركز الإضاءة عند عنوان الإطار Form1، ثم اختر Save Form1 As من القائمة File لفيجول بيسك. (يعني تمركز الإضاءة عند نموذج ما، أنه تم اختياره). يستجيب فيجول بيسك بإظهار مربع الحوار Save File As. · استخدم مربع الحوار Save File As لاختيار الدليل C:\VB5Prg\Ch01 من أجل حفظ الملف فيه. بدّل الاسم الافتراضي للنموذج من Form1.frm إلى Hello.frm · (انظر الشكل 1-6). · انقر الزر حفظ في مربع الحوار Save File As. يستجيب فيجول بيسك بحفظ النموذج باسم Hello.frm في الدليل C:\VB5Prg\Ch01. ملاحظة لا تستخدم الاسم الافتراضي الذي يقدمه فيجول بيسك عند حفظ نموذج ما. بل احفظ النموذج باسم مناسب للتطبيق الذي تصممه. لاحظ مثلاً، أننا استخدمنا الاسم Hello.frm كاسم لنموذج برنامج الترحيب. الشكل 1-6 حفظ النموذج بالاسم Hello.frm. والآن، احفظ ملف المشروع: · اختر Save Project As من القائمة File لفيجول بيسك. يستجيب فيجول بيسك بإظهار مربع الحوار Save Project As. · الاسم الافتراضي الذي يقدمه فيجول بيسك للمشروع هو Project1.vbp. لكن لا بد من تغيير الاسم الافتراضي إلى اسم يتناسب مع التطبيق الذي تعمل على تطويره. · استخدم مربع الحوار Save Project As لحفظ المشروع بالاسم Hello.vbp في الدليل C:\VB5Prg\Ch01. ملاحظة لا تستخدم الاسم الافتراضي الذي يعطيه فيجول بيسك للمشروع عند حفظ ملف المشروع. ولكن بدلاً من ذلك أطلق على المشروع اسماً يتناسب مع التطبيق الذي تصممه. لاحظ مثلاً أننا أطلقنا على مشروع برنامج الترحيب تسمية Hello.vbp. نكون حتى هذه اللحظة قد أنهينا حفظ الملفين Hello.vbp (ملف المشروع) وHello.frm (ملف النموذج). فحص إطار المشروع Project Window حتى هذه النقطة، يدعى المشروع بالاسم Hello.vbp ويتألف من ملف نموذج واحد هو الملف Hello.frm. سنمر عبر الفصول القادمة على مشاريع تحوي أكثر من ملف نموذج. يعتبر إطار المشروع Project Window من الأدوات الهامة التي يقدمها فيجول بيسك، ويمكّنك من رؤية الملفات المختلفة الموجودة في المشروع. (ستشعر بقيمة هذه الميزة بشكل أفضل كلما زاد تعقيد المشروع). اتبع الخطوات التالية لفهم محتويات إطار المشروع Project Explorer: · اختر Project Explorer من القائمة View لفيجول بيسك. يظهر إطار المشروع حسب ما هو مبين في الشكل 1-7. الشكل 1-7 إطار نافذة المشروع Project Window. ملف المشروع، حسب ما يظهر من إطار المشروع هو Hello.vbp. وهو يحتوي على نموذج وحيد باسم Hello.frm. يعتبر المشروع الحالي بسيط جداً، بحيث لا تغدو أهمية إطار المشروع واضحة للعيان. لكن مع تزايد تعقيد المشاريع التي ستكتبها مستقبلاً، سوف تلاحظ مدى أهمية هذا الإطار. تغيير الخاصية Caption للنموذج (تغيير عنوان النموذج) اتفقنا أن النموذج الفارغ الذي أنشأه فيجول بيسك يحمل العنوان Form1 (انظر الشكل 1-5). هذا العنوان يمثل العنوان الافتراضي الذي يعطيه فيجول بيسك للنموذج الفارغ عند إنشائه. تستطيع ترك هذا العنوان على حاله، ولكننا نفضل أن نطلق عنواناً على النموذج يكون مناسباً لموضوعه. فمثلاً حسب الشكل 1-1، يحمل النموذج عنوان برنامج الترحيب، وفي هذا دلالة على أن البرنامج هو برنامج ترحيب. ملاحظة النموذج هو إطار (Window) بنفس الوقت. فمثلاً، النموذج Form1 المبين في الشكل 1-5 يدعى نموذج ويدعى إطار (Window) بذات الوقت. يطلق مصطلح النموذج، على النافذة التي أنشأتها في مرحلة التصميم، ويستخدم مصطلح الإطار (أو نافذة)، عند تنفيذ البرنامج. بكلام آخر، عند ذكر مصطلح النموذج، يكون المقصود مرحلة التصميم، وعند ذكر مصطلح الإطار أو النافذة، يكون المقصود مرحلة التنفيذ. نبين لك الآن طريقة تغيير عنوان النموذج الفارغ لبرنامج الترحيب: · تحقق من اختيار النموذج الفارغ. تستطيع التأكد بسهولة من اختيار نموذج، بتفحص شريط عنوانه. فإذا كان شريط العنوان (Caption) مضاءً، فهذا يعني أن النموذج تم اختياره. أما إذا لم يكن قد تم اختيار النموذج، فيكفي النقر النموذج في أي مكان على سطحه لاختياره. أو تستطيع بدلاً من ذلك اللجوء إلى إطار المشروع Project Window (اختر Project Explorer من القائمة View لفيجول بيسك)، ثم اختيار العنصر Hello.frm بنقر الفأرة عليه، ثم نقر الرمز View Object الذي يظهر أعلى إطار المشروع. (انظر الشكل 1-7. يظهر الرمز View Object أعلى نافذة المشروع وثاني رمز من جهة اليمين). بعد اختيار النموذج، اختر إطار الخصائص Properties Window من القائمة View لفيجول بيسك. يستجيب فيجول بيسك بإظهار إطار الخصائص (Properties Window)، الشكل 1-8. الشكل 1-8 إطار الخصائص Properties Window. ملاحظة يمكنك في فيجول بيسك نقل شتى الإطارات إلى أي موقع ضمن سطح مكتب فيجول بيسك وذلك بسحب عناوين هذه الإطارات بواسطة الفأرة. قد يتغير شكل الإطارات قليلاً تبعاً للموقع الذي تأخذه على سطح المكتب. فمثلاً قد يتغير شكل إطار الخصائص Properties Window إلى حد ما، عما هو مبين في الشكل 1-8، بحسب الموقع الذي يحتله على سطح المكتب، لكن مهما كان موقعه، تستطيع التعرف عليه، بسبب احتوائه على كلمة الخصائص Properties في عنوانه. · انقر على الخلية التي تظهر يمين اسم الخاصية Caption (خلية العنوان) في إطار الخصائص (Properties Window). الآن ستجد، أن الخلية الواقعة يمين الخلية Caption تملك النص Form1. · استخدم المفتاح Delete ومفاتيح الأسهم على لوحة المفاتيح، لحذف النص Form1، واستبدله بكتابة النص برنامج الترحيب. يفترض أن يبدو إطار الخصائص كما في الشكل 1-9. تهانينا! لقد أنهيت للتو عملية تبديل الخاصية Caption (العنوان) للنموذج. ألق نظرة على النموذج الفارغ (انظر الشكل 1-10). يحمل هذا النموذج الآن العنوان برنامج الترحيب. الشكل 1-9 تبديل الخاصية Caption للنموذج. الشكل 1-10 النموذج frmHello وهو يحمل الآن عنواناً جديداً. ما هي الخاصية ؟! الخاصية Caption ما هي إلا إحدى خصائص النموذج، فكما تشاهد من إطار الخصائص Properties Window، فإن النموذج يمتلك الكثير من الخصائص الأخرى. ولفهم معنى الخاصية لا بد لك من فهم كيفية تعامل فيجول بيسك مع الكائنات Objects مثل النماذج Forms وأزرار الأوامر Command Buttons وأشرطة التمرير Scroll bars ومربعات الاختيار Check Boxes . . . الخ. تُعرّف خصائص الكائن (Object) كيف يبدو هذا الكائن وكيف يتصرف. فمثلاً النموذج عبارة عن كائن. تحدد الخاصية Caption للنموذج، النص الذي يظهر في شريط عنوانه. خذ مثلاً الخاصية BackColor للنموذج، تحدد هذه الخاصية لون خلفية النموذج. اتبع الخطوات التالية لتغيير الخاصية BackColor للنموذج: · تحقق من اختيار النموذج. (انقر أي مكان من النموذج لاختياره). · اختر Properties Window من القائمة View لإظهار إطار الخصائص. · انقر على الخلية الواقعة يمين الخلية BackColor في إطار الخصائص. يضع فيجول بيسك عند نقر هذه الخلية، رمز سهم نازل فيها، (انظر الشكل 1-11). الشكل 1-11 الخاصية BackColor. · انقر رمز السهم النازل الذي يظهر في الخلية. يستجيب فيجول بيسك بإظهار مربع الحوار المبين في الشكل 1-12. الشكل 1-12 مربع الحوار الذي يظهر عند نقر رمز السهم النازل الموجود جانب الخاصية BackColor. لاحظ أن مربع الحوار المبين في الشكل 1-12 يمتلك صفحتين: الصفحة Palette، والصفحة System. الصفحة التي تظهر وفق الشكل 1-12 هى الصفحة System. · انقر على الصفحة Palette في مربع الحوار المبين في الشكل 1-12. يستجيب فيجول بيسك بإظهار صفحة الألوان Palette (انظر الشكل 1-13). الشكل 1-13 الصفحة Palette صفحة الألوان. · اختر اللون الذي تحبذه بنقره في الصفحة Palette. لنفترض الآن أن اللون الذي اخترته هو اللون الذي يظهر في المربع الواقع عند العمود الثالث والسطر الثالث من جهة الأعلى. (أو اختر أي لون تفضل). ملاحظة تفحص الخلية التي تقع يمين اسم الخاصية في نافذة الخصائص والتي ترغب بتعيينها. فإذا كانت تلك الخلية تحمل رمز سهم نازل داخلها، أو زر يحوي ثلاث نقاط متجاورة. انقر على السهم أو الزر، فيظهر إطار آخر أو لائحة، تمكنك من اختيار قيمة ما بواسطة الفأرة للخاصية المحددة. جرب عدة ألوان بتكرار العملية، إلى أن تشعر بالرضا عن اللون الذي تختاره. تبديل الخاصية Name للنموذج (اسم النموذج البرمجي) يجب أن يمتلك كل كائن (Object) في فيجول بيسك اسماً، يتحدد ذلك الاسم بواسطة الخاصية Name لذلك الكائن. فمثلاً، عندما أنشأنا النموذج الجديد لبرنامج الترحيب، أطلق فيجول بيسك من تلقاء نفسه الاسم Form1 على النموذج (أي أسند الاسم Form1 إلى الخاصية Name لنموذج برنامج الترحيب). ملاحظة لا تخلط بين الخاصية Caption، والخاصية Name للنموذج. تستخدم الخاصية Caption لإظهار عنوان ما، في شريط عنوان النموذج. أما الخاصية Name فتستخدم لإسناد اسم برمجي خاص بالنموذج نفسه. مع أن فيجول بيسك يفترض القيمة Form1 لكلتا الخاصيتين عند إنشاء نموذج جديد فارغ. غيّر الآن الخاصية Name للنموذج: · انقر على النموذج في أي مكان منه لاختياره. · اختر Properties Window من القائمة View. يستجيب فيجول بيسك بإظهار إطار خصائص النموذج Form1. يملك إطار الخصائص Properties صفحتين هما: الصفحة Alphabetic والصفحة Categorized (انظر الشكل 1- . عند اختيار الصفحة Alphabetic، تُرتب الخصائص أبجدياً (باستثناء أهم خاصية وهي Name التي تظهر أولاً). بينما تظهر الخصائص مصنفة حسب مواضيعها، عند اختيار الصفحة Categorized.· اختر الصفحة Alphabetic لإطار الخصائص. تظهر الخاصية Name في مقدمة لائحة الخصائص. · انقر الخلية التي تظهر يمين الخاصية Name، يمكّنك فيجول بيسك من تعديل الخاصية Name. · استبدل الاسم الافتراضي Form1 بالاسم frmHello. غيّرنا في الخطوة السابقة الخاصية Name للنموذج من Form1 إلى frmHello. تشير الأحرف الثلاث الأولى من قيمة الخاصية Name للكائنات Objects إلى نوع الكائن. وهكذا فالأحرف الثلاث الأولى من الخاصية Name لنموذج ما، هي frm، كما في مثالنا الحالي frmHello. ملاحظة غيّر الأسماء الافتراضية للكائنات بحيث تعكس أسماؤها ووظائفها في البرنامج. فمثلاً frmHello عبارة عن اسم النموذج الذي يستخدم من قبل برنامج الترحيب. يؤدي بدء اسم النموذج بالأحرف الثلاث frm إلى تسهيل فهم البرنامج وتصحيحه. ألق نظرة على الاسم frmHello، بما أنه يبدأ بالأحرف frm. تستطيع بسهولة (أنت أو من يقرأ الاسم) أن تعلم مباشرة أن نوع الكائن frmHello عبارة عن نموذج. لا يعتبر هذا الأمر من متطلبات البرمجة في لغة فيجول بيسك، لكنه كما قلنا يسهل قراءة وفهم البرنامج. تبديل الخاصية RightToLeft للنموذج (تعريب النموذج) يمكّنك فيجول بيسك، من إنشاء برامج عربية المظهر والمضمون، بشرط تطوير برنامجك في نظام تشغيل يدعم اللغة العربية، مثل Windows95 العربي أو WinNT الداعم للغة العربية. وما عليك سوى تغيير قيمة الخاصية RightToLeft من القيمة False إلى القيمة True، لأي كائن من كائنات فيجول بيسك، حتى يظهر الكائن بشكل مقبول للمستخدم العربي. ملاحظة للحصول على معلومات كاملة، عن موضوع إنشاء التطبيقات العربية في فيجول بيسك، اقرأ الفصل الثاني والعشرين (إنشاء تطبيقات عربية السمة مع فيجول بيسك 5). وكل ما يهمنا معرفته الآن، أن الخاصية RightToLeft = True تعني تعريب الكائن. غيّر الآن الخاصية RightToLeft للنموذج: · انقر على النموذج في أي مكان منه لاختياره. · اختر Properties Window من القائمة View. يستجيب فيجول بيسك بإظهار إطار خصائص النموذج Form1. · انقر خلية الخاصية RightToLeft نقراً مزدوجاً، لتغيير قيمتها من القيمة False إلى القيمة True. يستجيب فيجول بيسك، بتعريب النموذج بأن يظهر عنوانه على يمين المستخدم، بدلاً من يساره. أصبح النموذج الآن، نموذجاً عربياً. وعند إضافة أي عنصر تحكم (أداة من أدوات فيجول بيسك)، سيقوم فيجول بيسك بإسناد القيمة True للخاصية RightToLeft للعنصر الجديد آلياً. حفظ العمل المنجز لم ننته بعد من النموذج (تذكر أن النموذج سيبدو عند انتهائه كما في الشكل 1-1)، لكن رغم ذلك يفضل حفظ العمل الذي أنجزته حتى هذه اللحظة، حتى لا تضطر إلى إعادة العمل مرة ثانية، إذا انهار الحاسب لديك لسبب ما. لهذا اتبع الخطوات التالية لحفظ العمل: · اختر Save Project من القائمة File. يستجيب فيجول بيسك بحفظ كل التغيرات المنجزة على ملف المشروع أو أي من الملفات التابعة للمشروع (مثال ذلك، الملف Hello.frm). إضافة الزر خروج إلى النموذج frmHello حسب ما يظهر من الشكل 1-1، فالنموذج المكتمل سيحوي ثلاثة أزرار أوامر داخله، وهي: إظهار الترحيب و مسح و خروج. لوضع زر أمر ما ضمن النموذج، لا بد لك من تحديده أولاً من مربع الأدوات. إطار مربع الأدوات Toolbox Window يحوي إطار مربع الأدوات، رموز جميع الكائنات المتاحة لمشروعك الحالي. ومهمتك هي التقاط الكائن من مربع الأدوات، ووضعه على النموذج. · أظهر إطار مربع الأدوات، باختيارToolbox من القائمة View لفيجول بيسك. يستجيب فيجول بيسك بإظهار مربع الأدوات (الشكل 1-14). الشكل 1-14 إطار مربع الأدوات Toolbox. ملاحظة قد يختلف شكل إطار مربع الأدوات قليلاً عما هو عليه في الشكل 1-14، وذلك تبعاً للموقع الذي يأخذه على سطح مكتب فيجول بيسك (أي حسب المكان الذي تضعه فيه). كما أن إطار مربع الأدوات، قد يحوي رموزاً أكثر أو أقل، تبعاً لنوع نسخة فيجول بيسك 5 التي تملكها، وتبعاً لإعدادات فيجول بيسك 5. يبين الشكل 1-15 رمز زر الأمر مكبراً، وهو طبعاً أحد الرموز التي تظهر في مربع الأدوات. تستطيع التعرف بسهولة على مختلف الرموز في مربع الأدوات بوضع مؤشر الفأرة فوق أي رمز بدون النقر عليه، ليظهر مستطيل أصفر يحمل بداخله اسم الكائن الذي يمثله هذا الرمز. فمثلاً. عند وضع مؤشر الفأرة فوق رمز زر الأمر دون النقر عليه، يظهر مستطيل أصفر يحمل الرسالة CommandButton داخله. الشكل 1-15 رمز زر الأمر CommandButton في إطار مربع الأدوات. وضع الزر خروج على النموذج اتبع الخطوات التالية لوضع زر أمر على النموذج: · انقر نقراً مزدوجاً على رمز زر الأمر في مربع الأدوات. (انظر الشكل 1-15 للتعرف على شكل زر الرمز). يستجيب فيجول بيسك بوضع زر أمر في مركز النموذج (انظر الشكل 1-16). الشكل 1-16 النموذج مع زر الأمر بداخله. يتولى فيجول بيسك تعيين مختلف القيم الافتراضية لخصائص زر الأمر CommandButton الذي وضعته على النموذج. فمثلاً العنوان الافتراضي (Caption) لذلك الزر هو Command1. تغيير الخاصية Name للزر خروج (تغيير الاسم البرمجي) ستغير اسم زر الأمر من Command1 إلى cmdExit باعتبار أن هذا الزر سيعمل عمل زر الإنهاء خروج: · اختر Properties Window من القائمة View لفيجول بيسك. يستجيب فيجول بيسك بإظهار إطار الخصائص. · تحقق أن مربع السرد عند قمة إطار الخصائص يظهر البند التالي: Command1 CommandButton. (انظر الشكل 1-17 لتحديد موقع مربع السرد). الشكل 1-17 مربع السرد عند قمة إطار الخصائص ويظهر البند التالي: Command1 CommandButton. ملاحظة يمتلك النموذج الآن كائنين: النموذج frmHello وزر الأمر Command1. يُظهر إطار الخصائص، خصائص الكائن الذي يظهر اسمه حالياً في مربع السرد الواقع عند قمة إطار الخصائص. للانتقال بين الكائنات، انقر رمز السهم النازل، الموجود يمين مربع السرد واختر الكائن المطلوب من اللائحة المنسدلة للأسفل. · غير الخاصية Name للزر Command1 إلى cmdExit. لاحظ كيف وضعنا الحروف الثلاثة cmd قبل كلمة Exit، وذلك كما اتفقنا سابقاً، للدلالة على نوع الكائن ووظيفته في آن واحد (تعتبر وظيفة زر الأمر في مثالنا هذا، تنفيذ أمر الخروج من البرنامج)، هذا العمل ليس من متطلبات لغة فيجول بيسك، ولكن لتسهيل قراءة وفهم البرنامج، فعندما نشاهد الاسم cmdExit، نستطيع القول مباشرة، أن هذا الاسم يخص زر أمر وأن وظيفته هي إنهاء البرنامج. تغيير الخاصية Caption للزر خروج (تغيير العنوان) العنوان الافتراضي الذي يعطيه فيجول بيسك لزر الأمر هو Command1. وبما أن وظيفة زر الأمر هذا الخروج من البرنامج، فأنسب عنوان له هو خروج: · غير الخاصية Caption لزر الأمر cmdExit من Command1 إلى &خروج. للحصول على الرمز (&)، اضغط المفتاحين Shift+7 على لوحة المفاتيح. عند استخدام الرمز & (مثل استخدامه قبل الحرف خ في الخطوة السابقة)، يتسبب بقيام فيجول بيسك بوضع خط تحت الحرف الذي يليه (الحرف الذي يأتي بعد الرمز &)، ولاحظ وجود خط تحت الحرف خ في عنوان الزر خروج. انظر الشكل 1-1. والآن، عند تنفيذ البرنامج، يؤدي الضغط على المفتاحين (خAlt+) من لوحة المفاتيح إلى نفس تأثير النقر على الزر خروج. ملاحظة يُنصح دائماً باستخدام الرمز & قبل أحد حروف عنوان زر ما. يتسبب هذا الرمز & بظهور خط تحت الحرف الذي يليه مباشرة، وأثناء التنفيذ يصبح المستخدم قادراً، إما على نقر الزر بالفأرة أو ضغط المفتاح Alt إضافة لضغط الحرف المحدد (ضغط المفتاح Alt والمفتاح الذي تحته خط). والذي يمثل حرف وصول سريع. تبديل موقع الزر خروج كما ترى من الشكل 1-1، يجب أن يقع الزر خروج بقرب الحافة السفلى من النموذج. اسحب الزر خروج إلى الموقع المطلوب بضغط زر الفأرة الأيسر على أي مكان من الزر، ثم سحب وتحريك مؤشر الفأرة دون تحرير الزر الأيسر للفأرة، ثم تحرير زر الفأرة عند الوصول للموقع المناسب. تبديل خصائص الخط (Font) للزر خروج كما تلاحظ من الشكل 1-1، يختلف نوع الخط المستخدم في الزر خروج عن الخط الافتراضي الذي استخدمه فيجول بيسك لعنوان الزر، الذي وضعته على النموذج. اتبع الخطوات التالية لتبديل نوع الخط للزر خروج: · انقر على الخلية الواقعة يمين الخاصية Font التابعة للزر cmdExit. كما تلاحظ تحوي الخلية على مربع داخله ثلاث نقاط، يؤدي نقره إلى فتح مربع حوار تحديد الخطوط، يمكّنك من اختيار قيم معينة بواستطه. · انقر على الزر ذى الثلاث نقط الموجود جانب الخاصية Font للزر cmdExit. يستجيب فيجول بيسك بإظهار مربع الحوار Font. · غير نوع الخط إلى System. · غير حجم الخط إلى 10. · انقر على الزر Ok في مربع الحوار Font. · ألقِ نظرة على الزر خروج الآن، ولاحظ أن العنوان مكتوب بالخط الذي حددته مسبقاً بواسطة مربع الحوار Font. يشبه النموذج الذي نبينه حتى الآن، ذاك المبين في الشكل 1-18. الشكل 1-18 النموذج يحتوي الزر خروج على سطحه. ملاحظة لعل إحدى المزايا الرئيسية لفيجول بيسك، أنه يمكّنك من رؤية نتائج البرمجة المرئية لحظياً. تمرّن دوماً وجرّب خيارات مختلفة (كأن تجرب أنواع خطوط مختلفة، وأحجام وألوان مختلفة) حتى تقنع بالنتائج. احفظ العمل الذي أنجزته: · اختر Save Project من القائمة File لفيجول بيسك. إضافة أزرار أخرى إلى النموذج frmHello لعل الوقت قد حان، لإضافة زرين جديدين إلى النموذج؛ الزر إظهار الترحيب والزر مسح. وضع الزرين على النموذج يحوي النموذج حسب ما يفترضه الشكل 1-1، زري أمر آخرين: الزر إظهار الترحيب والزر مسح، سنضع هذين الزرين على النموذج: · أضف الزر إظهار الترحيب إلى النموذج بالنقر المزدوج على رمز زر الأمر · Command Button ضمن مربع الأدوات. اسحب زر الأمر الجديد إلى اليمين (سيأخذ هذا الزر دور الزر إظهار الترحيب). · انقر نقراً مزدوجاً رمز زر الأمر في مربع الأدوات مجدداً، ثم اسحب زر الأمر الجديد إلى اليسار. (يأخذ هذا الزر دور الزر مسح). تغيير حجم الأزرار الأحجام الافتراضية للزرين إظهار الترحيب و مسح أصغر مما هي عليه في الشكل 1-1. · كبّر الزرين الجديدين اللذين وضعتهما للتو في النموذج، يتم تكبير أو تصغير كائن باختياره أولاً. يحيط فيجول بيسك الكائن حال اختياره بمستطيل يتألف من ثماني مربعات سوداء، تدعى بالمقابض. اسحب أحد المقابض حتى يصل الكائن إلى الحجم المطلوب، فمثلاً لتغيير حجم الكائن أفقياً اسحب أحد المقابض أفقياً، أما لتغيير حجم الكائن عمودياً فاسحب أحد مقابضه عمودياً (انظر الشكل 1-19). الشكل 1-19 تغيير حجم كائن بسحب مقابضه. تبديل خاصية الاسم Name للزرين السابقين الاسمان الافتراضيان الذين يطلقهما فيجول بيسك على الزرين الذين وضعتهما للتو في النموذج هي Command1 و Command2، ولكننا سنستبدلهما باسمين يناسبان عملهما أكثر: · بدّل الخاصية Name لزر الأمر اليميني إلى cmdHello. · بدّل الخاصية Name لزر الأمر اليساري إلى cmdClear. تبديل عنواني الزرين السابقين حسب ما يوضحه الشكل 1-1، يجب أن يكون عنوان الزر الأيمن هو إظهار الترحيب، وأن يكون عنوان الزر الأيسر هو مسح. · بدّل الخاصية Caption للزر الأيمن إلى إ&ظهار الترحيب. · بدّل الخاصية Caption للزر الأيسر إلى م&سح. تبديل نوع الخط المستخدم في الزرين · بدّل الخاصية Font للزر cmdHello إلى System واجعل حجم الخط مساوياً إلى 10. · بدّل الخاصية Font للزر cmdClear إلى System واجعل حجم الخط مساوياً إلى 10. ستكتشف بعد هاتين الخطوتين أن مساحة الزر صغيرة جداً، لهذا كّبر مساحة الزر، بسحب مقابضه. يفترض أن يبدو النموذج لدى اكتماله كما في الشكل 1-20. الشكل 1-20 النموذج بعد انتهاء تصميمه مع ثلاثة أزرار داخله. احفظ العمل المنجز حتى الآن: · اختر Save Project من القائمة File لفيجول بيسك. إضافة كائن مربع نص (Text Box) إلى النموذج frmHello هناك كائن آخر يجب إضافته إلى النموذج، وهو كائن مربع النص. مربع النص عبارة عن مساحة مستطيلة، يتم إظهار نصوص أو كتابة نصوص فيها. يسمى مربع النص أحياناً بمربع تحرير. وضع مربع النص في النموذج يبين الشكل 1-21 موقع رمز مربع النص Text Box في مربع الأدوات، وطبعاً قد تختلف مواقع الرموز في إطار مربع الأدوات عما هي عليه في الشكل 1-21 تبعاً للإصدار المستخدم للغة ولإعداداتها. ملاحظة يظهر مستطيل أصفر يحوي النص TextBox بداخله، عند وضع مؤشر الفأرة فوق رمز مربع النص (دون ضغط أزرار الفأرة). اتبع الخطوتين التاليتين لوضع مربع نص Text Box على النموذج: · انقر نقراً مزدوجاً على رمز مربع النص Text Box ضمن إطار مربع الأدوات. · انقل وغير حجم مربع النص حتى يظهر كما في الشكل 1-22. الشكل 1-21 رمز أداة مربع النص Text Box في إطار مربع الأدوات. الشكل 1-22 النموذج بعد وضع مربع نص بداخله. تبديل خصائص مربع النص اتبع الخطوات التالية لتعديل بعض خصائص مربع النص: · غيّر الخاصية Name لمربع النص من الاسم الافتراضي Text1 إلى txtDisplay. خاصية Text الافتراضية لمربع النص هي Text1، وبالتالي فعند تنفيذ برنامج الترحيب يظهر النص Text1 ضمن مربع النص. نرغب أن يكون هذا المربع خالياً عند بدء تشغيل البرنامج، لهذا، احذف النص الذي يظهر في الخلية الواقعة يمين الخاصية Text للكائن txtDisplay. · غيّر الخاصية Font لمربع النص txtDisplay إلى System واجعل حجم الخط مساوياً إلى 10. تساوي القيمة الافتراضية للخاصية Alignment لمربع النص إلى 0-LeftJustify مما يعني أن النص في مربع النص يبدأ من اليسار. غيّر هذه الخاصية إلى 2-Center لأننا نريد للنص الظهور في وسط مربع النص. يرفض فيجول بيسك وضع النص في مركز مربع النص Text Box، ما لم يتم إسناد القيمة True إلى الخاصية MultiLine لمربع النص. لهذا يجب تغيير الخاصية MultiLine إلى True إلى جانب تغيير الخاصية Alignment إلى 2-Center. (يؤدي إسناد القيمة True إلى الخاصية MultiLine إلى تمكين فيجول بيسك من إظهار أكثر من سطر واحد من مربع النص). إذاً بدّل الخاصية MultiLine لمربع النص txtDisplay إلى True. احفظ العمل: · اختر Save Project من القائمة File لفيجول بيسك. ملاحظة حسب ما ذكرنا سابقاً، من الهام جداً حفظ العمل المنجز من وقت لآخر. طريقة أولى لحفظ العمل تتمثل باختيار Save Project من القائمة File لفيجول بيسك. لكن هنالك طريقة أسهل بكثير لحفظ العمل. ألقِ نظرة على الشكل 1-23، يظهر هذا الشكل شريط أدوات لغة فيجول بيسك. (إذا لم يكن شريط الأدوات ظاهراً، اذهب إلى القائمة View واختر Toolbars ثم انقر على العنصر Standard الذي يظهر في القائمة المنبثقة). نعود إلى الشكل 1-23. يوجد على شريط الأدوات رمز يظهر كقرص مرن، إذا وضعت مؤشر الفأرة (دون النقر على أحد أزرارها) فوق هذا الرمز، يظهر مستطيل أصفر يحمل الرسالة Save Project من القائمة File. أجل، لقد سهل مصممو فيجول بيسك كثيراً عملية حفظ المشروع، فنقرة واحدة من وقت لآخر تضمن لك السلامة. هناك طريقة سريعة أخرى لحفظ آخر التعديلات التي أجريتها على النموذج النشط الحالي، اضغط فقط المفتاحين Ctrl+S سوياً، ليحفظ فيجول بيسك تعديلات النموذج الحالي فقط، وليس كامل ملفات المشروع. الشكل 1-23 الرمز Save Project الواقع ضمن شريط أدوات لغة فيجول بيسك. عملية بناء النماذج انطلاقاً من الرسوم التوضيحية والجداول انتهى جزء التصميم المرئي الآن. سنطالبك في كتابنا هذا ببناء عدد هائل من النماذج. لكن لن نستمر بهذه الطريقة في بناء النماذج، أي لن نبني النموذج خطوة بخطوة، بل سنـزودك بشكل النموذج المكتمل (كما في الشكل 1-1)، كما سنعطيك جدولاً يدعى جدول خصائص النموذج. يحوي جدول خصائص النموذج كل الكائنات المحتواة في النموذج ويستعرض كل الخصائص التي تختلف عن الخصائص الافتراضية لهذه الكائنات. عملك هو اللحاق بالجدول، سطراً سطراً وتغيير قيم الخصائص إلى القيم التي تظهر في الجدول. الجدول 1-1 هو جدول خصائص النموذج frmHello الذي أنهينا بناءه للتو. الجدول 1-1. جدول خصائص النموذج frmHello. الكائن الخاصية القيمة Form Name FrmHello BackColor Blue Caption برنامج الترحيب RightToLeft True CommandButton Name cmdExit Caption &خروج FontName System FontSize 10 RightToLeft True CommandButton Name cmdClear Caption &مسح FontName System FontSize 10 RightToLeft True CommandButton Name cmdHello Caption إ&ظهار الترحيب FontName System FontSize 10 RightToLeft True TextBox Name txtDisplay Alignment 2-Center FontName System FontSize 10 MultiLine True RightToLeft True ربط الكائنات بنصوص برمجية باعتبار أننا وضعنا الكائنات في النموذج وحددنا خصائصها، فقد انتهى جزء التصميم المرئي (البرمجة المرئية Visual Programming). الآن، حان الوقت لكتابة النصوص البرمجية لهذه الكائنات. تعتبر لغة فيجول بيسك لغة مقادة بالأحداث event-driven programming language. هذا يعني أن نص البرنامج ينفذ استجابة لحادثة ما. فمثلاً يؤدي نقر الزر خروج أثناء تنفيذ برنامج الترحيب إلى توليد الحادثة Click آلياً، وبالتالي ينفذ نص البرنامج المرافق لحادثة نقر الزر خروج آلياً أيضاً. كذلك، تتولد الحادثة Click (حادثة النقر) أيضاً عند نقر الزر إظهار الترحيب، وينفذ نص البرنامج المرافق لحادثة نقر هذا الزر آلياً. عملك هو كتابة النص المناسب وربطه بالكائن والحادثة. هل يبدو هذا الأمر معقداً؟ بالواقع إنه سهل جداً!، إذاً لنبدأ بربط بعض النص البرمجي بالحادثة Click للزر خروج. ربط الزر خروج بنص برمجي اتبع الخطوات التالية لربط نص برمجي بالزر cmdExit: · انقر نقراً مزدوجاً على الزر cmdExit. يستجيب فيجول بيسك بإظهار إطار نص البرنامج (سنكتب برنامجاً في هذا الإطار) المبين في الشكل 1-24. الشكل 1-24 ربط الزر خروج بنص البرنامج المرافق، في إطار نص البرنامج Code Window. يُسهّل فيجول بيسك إلى حد كبير التعرف على النص الظاهر حالياً في إطار نص البرنامج. فكما يتبين من الشكل 1-24، يُظهر مربع السرد اليساري اسم الكائن cmdExit، ويُظهر مربع السرد اليميني اسم الحادثة Click. كما يظهر من الشكل 1-24 أيضاً، فقد أضاف فيجول بيسك مسبقاً سطري نص يمثلان بداية ونهاية الإجراء الخاص بالكائن المحدد والحادثة المختارة، في إطار نص البرنامج: Private Sub cmdExit_Click() End Sub سنكتب الآن نص البرنامج ضمن هذين السطرين. السطران الأول والأخير من نص البرنامج السطر الأول من النص (الذي كتبه عنك فيجول بيسك) يبدأ بالكلمتين Private Sub. الكلمة Sub عبارة عن كلمة محجوزة في لغة فيجول بيسك، تدل على أن الإجراء Procedure يبدأ من هنا. والإجراء Procedure عبارة عن نص برنامج مكرس لحادثة خاصة. اسم الإجراء في مثالنا هو cmdExit_Click(). السطر الأخير من النص، كُتب أيضاً من قبل لغة فيجول بيسك. وتشير العبارة End Sub لنهاية الإجراء. اسم الإجراء اسم الإجراء هو cmdExit_Click(). ما السبب الذي دفع فيجول بيسك إلى تعيين اسم الإجراء بنفسه؟. تسبب النقر المزدوج على الزر cmdExitبمعرفة فيجول بيسك أنك تحاول ربط ذلك الزر بنص برمجي، وبذلك حدد القسم الأول من اسم الإجراء وهو cmdExit. يمثل القسم الثاني من اسم الإجراء نوع الحادثة الناجمة (الحادثة Click). أيضاً ما الذي جعل فيجول بيسك يحدد هذا الاسم (Click) ؟!. السبب طبعاً أنها تُمثل الحادثة التي ترغب بكتابة برنامج لها. لاحظ أن القسمين الأول والثاني من اسم الإجراء يُفصلان عن بعضهما برمز الخط التحتي ( _ )، وبذلك يصبح اسم الإجراء كالتالي: cmdExit_Click(). ولاحظ أيضاً أن آخر رمزين في اسم الإجراء هما القوسين (). نص برنامج الإجراء cmdExit_Click() ما هو نص البرنامج الذي يتوجب عليك كتابته في الإجراء cmdExit_Click()؟. باعتبار أن هذا الإجراء يُنفذ عند نقر الزر خروج (إنهاء البرنامج)، فالنص الواجب عليك كتابته ضمن هذا الإجراء يجب أن يتسبب بإنهاء البرنامج. تُستخدم العبارة End لإنهاء البرنامج، وبالتالي فنص البرنامج اللازم كتابته ما هو إلا العبارة End فحسب. · اكتب End في الإجراء cmdExit_Click(). يُفترض أن يبدو الإجراء بعد كتابة هذه العبارة بالشكل التالي: Private Sub cmdExit_Click() End End Sub هذا كل ما في الأمر، لقد انتهيت للتو من ربط الإجراءcmdExit_Click() بنص البرنامج المناسب. تنفيذ برنامج الترحيب رغم أنك لم تنته بعد من ربط باقي الكائنات بنصوصها البرمجية، لكن هذا لا يمنع من تنفيذ برنامج الترحيب ورؤية كيف يعمل نص البرنامج الذي ربطناه بالزر خروج. · احفظ المشروع باختيار Save Project من القائمة File، أو انقر رمز · Save Project (رمز القرص المرن) على شريط أدوات فيجول بيسك. · اختر Start من القائمة Run لفيجول بيسك. يستجيب فيجول بيسك بتنفيذ البرنامج. يظهر إطار هذا البرنامج بشكل يماثل ذلك المبين في الشكل 1-1. تستطيع النقر على الزر إظهار الترحيب أو على الزر مسح، لكن لن يحدث شيء، والسبب طبعاً أننا لم نربط بعد هذين الزرين بأي نص برمجي. · انقر الآن الزر خروج، فينفذ الإجراء cmdExit_Click() استجابة لحادثة النقر، وباعتبار أن نص هذا الإجراء يحوي العبارة End، فسيؤدي تنفيذه إلى إنهاء عمل برنامج الترحيب. إضافة المزيد إلى نص الإجراء cmdExit_Click() اتبع الخطوات التالية لربط الإجراء cmdExit_Click() بالمزيد من النص البرمجي: · انقر نقراً مزدوجاً على الزر cmdExit_Click(). يستجيب فيجول بيسك بإظهار cmdExit_Click() جاهزاً للتعديل من قبلك. · أضف العبارة Beep قبل العبارة End كما يلي: Private Sub cmdExit_Click() Beep End End Sub · احفظ العمل المنجز. · نفّذ برنامج الترحيب باختيار Start من القائمة Run لفيجول بيسك. تتسبب العبارة Beep بإصدار رنين (صافرة) من قبل الحاسب الشخصي. وبالتالي يؤدي نقر الزر خروج إلى إصدار صوت صافرة، ثم إنهاء برنامج الترحيب. · انقر الزر خروج وتحقق من أن البرنامج أصدر رنيناً، ثم أنهى نفسه. ربط الزر إظهار الترحيب بنص البرنامج المناسب اتبع الخطوات التالية لربط الزر إظهار الترحيب بنص برنامج: · أظهر النموذج، ثم انقر نقراً مزدوجاً على الزر إظهار الترحيب، (افترضنا أنك ستُظهر النموذج باختيار Project Explorer من القائمة View، ثم نقر البند frmHello في إطار المشروع Project، ثم نقر الرمز View Object الذي يظهر كثاني رمز على اليسار عند قمة إطار المشروع). يستجيب فيجول بيسك بعد النقر المزدوج على الزر إظهار الترحيب بإظهار الإجراء cmdHelloDisplay_Click() مع سطري البرنامج التاليين: Private Sub cmdHelloDisplay_Click() End Sub يُنفذ الإجراء السابق عند نقر الزر إظهار الترحيب أثناء تنفيذ برنامج الترحيب. يا ترى ما هو نص البرنامج الواجب ربطه بهذا الإجراء؟ يعتمد هذا على ما سيحصل عند نقر الزر إظهار الترحيب. ففي مثالنا هذا يُطلب من برنامج الترحيب إظهار رسالة الترحيب مرحباً بكم في مربع النص. · أدخل النص التالي ضمن الإجراء cmdExit_Click(): txtDisplay.Text = "مرحباً بكم" يفترض أن يبدو الإجراء كما يلي عند الانتهاء: Private Sub cmdHelloDisplay_Click() txtDisplay.Text = "مرحباً بكم" End Sub يمثل txtDisplay اسم الكائن Text Box (مربع النص الذي سيُظهر الكلمتين مرحباً بكم داخله). تسند العبارة التالية: txtDisplay.Text = "مرحباً بكم" القيمة مرحباً بكم إلى الخاصية Text لمربع النص txtDisplay. (تمثل قيمة الخاصية Text النص الذي سيظهر في مربع النص txtDisplay). ملاحظة يُمكن استخدام الصيغة التالية لإسناد قيمة جديدة إلى خاصية ما، ضمن نص برنامج: ObjectName.Property = قيمة جديدة فمثلاً، لتبديل الخاصية Text لمربع النص txtDisplay إلى القيمة مرحباً بكم استخدم العبارة التالية: txtDisplay.Text = "مرحباً بكم" انتبه لكتابة النقطة (.) بين اسم الكائن txtDisplay واسم الخاصية Text وبدون فراغات بينهما. ربط الزر مسح بنص برنامج مناسب اتبع الخطوات التالية لربط الزر مسح بنص برنامج الحادثة Click: · أظهر النموذج، وانقر نقراً مزدوجاً على الزر مسح. يستجيب فيجول بيسك للنقر المزدوج على الزر مسح، بإظهار إطار نص البرنامج Code Window عند الإجراء cmdClear_Click() وجاهزاً للتعديل. يفترض أن يقوم هذا الإجراء بمسح محتويات مربع النص. أي بمعنى آخر يجب تحويل قيمة الخاصية Text لمربع النص، إلى سلسلة صفرية (فراغ "")، يمكن إنجاز ذلك بإضافة العبارة التالية إلى الإجراء cmdClear_Click(): txtDisplay.Text = "" · اكتب العبارة التالية في الإجراء cmdClear_Click(): txtDisplay.Text = "" يُفترض أن يبدو الإجراء لدى اكتماله كما يلي: Private Sub cmdClear_Click() txtDisplay.Text = "" End Sub · احفظ العمل المنجز باختيار Save Project من القائمة File لفيجول بيسك (أو انقر على رمز القرص المرن على شريط أدوات لغة فيجول بيسك). تنفيذ برنامج الترحيب مرة ثانية اكتمل برنامج الترحيب الآن. اتبع الخطوات التالية لتنفيذه: · اختر Start من القائمة Run لفيجول بيسك أو اضغط المفتاح F5 لبدء البرنامج. ملاحظة إحدى الأسباب الرئيسية التي تجعل فيجول بيسك بهذا الشيوع حقيقة، أنك تستطيع تطوير برنامجك قليلاً ثم تنفيذه ورؤية نتائج عملية التطوير على أرض الواقع، ثم متابعة تطوير البرنامج بعض الشيء وتشغيل التطبيق لاختيار عملية التطوير . . . وهكذا دواليك. ذكرنا، أنك تستطيع تنفيذ التطبيق المكتوب بلغة فيجول بيسك باختيار Start من القائمة Run لفيجول بيسك. كما تلاحظ، تتطلب عملية تطوير التطبيق تكرار تنفيذه كثيراً، ولذلك راعى مصممو اللغة هذا الجانب، فوضعوا رمز التنفيذ على شريط أدوات لغة فيجول بيسك ويدعى هذا الرمز Start (انظر الشكل 1-25). ويكفي نقر الرمز Start على شريط الأدوات لتنفيذ التطبيق الراهن. إذا كان شريط الأدوات غير ظاهر على سطح مكتب فيجول بيسك لسبب ما، اختر Toolbars من القائمة View لفيجول بيسك ثم اختر Standard من القائمة التي تظهر. إذاً، تعتبر ميزة تنفيذ البرامج أثناء عملية التطوير، أمراً بالغ الأهمية، ففي لغات البرمجة الأخرى مثل Visual C++، يتوجب أولاً ترجمة ثم ربط البرنامج (Compile ثم Link) قبل التمكن من تنفيذه. وهذه العملية تأخذ وقتاً طويلاً نوعاً ما. يُسهل فيجول بيسك عملية تنفيذ التطبيق الذي يجري تطويره إلى حد بعيد، لكن قد يظهر خطأ ما في البرنامج ويتسبب بانهيار النظام كاملاً، مما يُجبرك على إعادة تشغيل Windows أو فيجول بيسك مرة أخرى. يعني هذا أن عدم حفظ العمل قد يتسبب بضياعه وسنضطر إلى بدء عملية التطوير من جديد. لهذا كن حكيماً، واجعل عملية حفظ العمل قبل تنفيذه قانوناً تسير عليه. والأمر جداً بسيط، فكما ذكرنا يقع رمز حفظ المشروع Save Project على شريط الأدوات. ويكفي نقره لحفظ العمل عند المرحلة الراهنة. لهذا انقر أولاً على الرمز Save Project ثم انقر بعد ذلك الرمز Start (انظر الشكل 1-25) لتنفيذ التطبيق. وبهذه الطريقة، فإن وقوع خطأ ما أثناء تنفيذ البرنامج، لن يتسبب بضياع المشروع أو العمل، وتستطيع إعادة تشغيل فيجول بيسك مجدداً، وفتح المشروع المخزن وتصحيح الخطأ ومعاودة تنفيذ التطبيق. الشكل 1-25 رمز التنفيذ على شريط أدوات فيجول بيسك. · انقر الزر إظهار الترحيب وأيضاً الزر مسح لإظهار ثم مسح الرسالة مرحباً بكم، في مربع النص. يجب أن يظهر إطار برنامج الترحيب كما في الشكل 1-2، بعد · نقر الزر إظهار الترحيب. بينما سيظهر كما في الشكل 1-1 عند نقر الزر مسح. · تستطيع استخدام المفاتيح ظAlt+ و سAlt+ للحصول على نفس الاستجابة عند نقر الزر إظهار الترحيب وعند نقر الزر مسح. (طبعاً، بسبب وجود خط تحت الحرف ظ في عنوان الزر إظهار الترحيب، وخط تحت الحرف س في عنوان الزر مسح). · يمكن إنهاء البرنامج بنقر الزر خروج، أو بضغط المفتاحين خAlt+ على لوحة المفاتيح. أحداث أخرى يستخدم برنامج الترحيب الحادثة Click لأزرار الأوامر، (فمثلاً، تقع الحادثة Click لزر الأمر cmdExit عند نقر الزر خروج مما يتسبب بالتنفيذ الآلي للإجراء cmdExit_Click(). هنالك حوادث أخرى يمكن استخدامها في البرنامج. وكل حادثة تمتلك بدورها إجراءها الخاص. الحادثة KeyDown سنتعرف على الإجراء الذي يرافق الحادثة KeyDown، والتي تحصل عند ضغط مفتاح ما على لوحة المفاتيح. · اتبع الخطوات التالية لرؤية الإجراء KeyDown للزر خروج. · انقر نقراً مزدوجاً على الزر خروج. يظهر فيجول بيسك في الحالة الافتراضية الإجراء المرافق للحادثة Click. · باعتبار أننا لا نريد تعديل الإجراء المرافق للحادثة Click وإنما نريد تعديل إجراء الحادثة KeyDown، لهذا انقر على مربع السرد الذي يظهر في الجانب الأيمن عند قمة إطار النص. يستجيب فيجول بيسك بسرد لائحة تحوي كل الحوادث المتاحة للكائن المدعو cmdExit (انظر الشكل 1-26). · اختر البند KeyDown من اللائحة. يستجيب فيجول بيسك بإظهار الإجراء cmdExit_KeyDown(): Private Sub cmdExit_KeyDown(KeyCode AS Integer,Shift As Integer) End Sub الشكل 1-26 إظهار الحوادث المتاحة للزر cmdExit. لاحظ أن السطر الأول من الإجراء والذي يكتبه فيجول بيسك آلياً، يختلف قليلاً عن السطر الأول للحادثة Click فقوسي الإجراء cmdExit_Click()، لا يحويان شيئاً داخلهما. أما قوسي الإجراء cmdExit_ KeyDown() فيحويان قدراً من النص البرمجي. سنتعرف خلال الفصول القادمة على هذا الاختلاف بشكل أوضح. أما عند هذه النقطة، فلا تُضف شيئاً إلى الإجراء cmdExit_ KeyDown() (مضينا في هذا المثال، لمجرد إطلاعك على أشكال أخرى من الحوادث التي ترافق كائن ما في فيجول بيسك). إنشاء الملف التنفيذي للمشروع (Hello.exe) نفذنا سابقاً برنامج الترحيب باختيار Start من القائمة Run. طبعاً يختلف الأمر عند الانتقال إلى الواقع العملي، فلا أحد يرضى أن يُشغل التطبيق الذي بحوزته بهذه الطريقة، بل قد لا يملك المستخدم الذي اقتنى التطبيق، لغة فيجول بيسك أصلاً. يجب أن تكون قادراً إذاً على تحويل البرنامج إلى ملف تنفيذي، حتى نتمكن من توزيع التطبيق الذي طورناه. فمثلاً يجب تحويل برنامج الترحيب إلى ملف تنفيذي Hello.exe: · اختر Make Hello.exe File من القائمة File لفيجول بيسك. يستجيب فيجول بيسك بإظهار مربع الحوار Make. (لا تنقر الزر OK في مربع الحوار في هذه اللحظة). · استخدم مربع الحوار لحفظ الملف Hello.exe في الدليل C:\VB5Prg\Ch01. · انقر الزر OK الآن. يستجيب فيجول بيسك بحفظ الملف Hello.EXE في الدليل C:\VB5Prg\Ch01. تستطيع الآن تنفيذ Hello.exe كأي برنامج آخر في Windows!، تستطيع مثلاً استخدام مستكشف Windows ثم النقر المزدوج على الملف Hello.exe. ملف تنفيذي EXE صغير الحجم ألقِ نظرة على الملف Hello.exe الموجود حالياً ضمن الدليل C:\VB5Prg\Ch01. كيف يتمكن ملف بحجم 8 كيلو بايت فقط من إنجاز كل الأشياء التي يستطيع Hello.exe إنجازها؟. فكر بالأمر، ينجز البرنامج Hello.exe أموراً كثيرة، فيمكنك نقر الأزرار الثلاثة، ويسمح مثلاً بسحب إطار البرنامج، يمتلك البرنامج أيضاً مربع نص داخله، بمعنى آخر، يمتلك هذا البرنامج الصغير كل معالم البرامج القياسية في Windows. والسبب وراء صغر حجم الملف التنفيذي Hello.exe، أن البرنامج يفترض وجود الملف Msvbvm50.DLL في الدليل System. والدليل System موجود طبعاً ضمن دليل Windows. فمثلاً ترى الدليل C:\Windows\System إذا كان نظام التشغيل المستخدم هو Windows95 أو في الدليل C:\WinNT\System32 عندما يكون نظام التشغيل المستخدم هو Windows NT. المهم بغض النظر عن نظام التشغيل المستخدم يحتاج البرنامج Hello.exe أن يكون الملف Msvbvm50.DLL موجوداً ضمن دليل النظام System حتى يعمل. تستطيع العودة إلى ذلك الدليل والتأكد من وجود الملف المذكور. لقد تم تثبيت هذا الملف عند تثبيت فيجول بيسك 5 على قرصك الصلب. حجم الملف Msvbvm50.DLL يساوي 1.3 ميجا بايت تقريباً، طبعاً يعتبر كبيراً، لكن حال توفر هذا الملف يصبح بوسع المستخدمين تنفيذ برامج بالغة القوة كتبت بلغة فيجول بيسك 5. النبأ السار أن هذه البرامج القوية صغيرة الحجم جداً. تستطيع أيضاً رؤية الملف Hello.vbw في الدليل الذي حفظنا فيه الملف Hello.exe. الملف Hello.vbw يستخدم من قبل فيجول بيسك، ولا يتوجب عليك تزويد المستخدمين بهذا الملف. ملاحظة يتوجب عليك تزويد البرامج التي توزعها بملفات DLL اللازمة لها. فمثلاً يجب أن يكون الملف Msvbvm50.DLL موجوداً ضمن الدليل System على الحاسب الذي ستنفذ فيه البرامج المطورة بلغة V.B.5. الخلاصة كتبنا في هذا الفصل أول برنامج لك بلغة Visual Basic فتعلمت الخطوتين اللازمتين لكتابة البرنامج، وهما خطوة البرمجة المرئية Visual Programming Step وخطوة كتابة نص البرنامج Code Programming Step. يضع المبرمج الكائنات Objects في النموذج ويسند خصائصها بالقيم المناسبة أثناء خطوة البرمجة المرئية. أما فى خطة كتابة النص Code Programming، فيتم انتقال الإجراء المرافق لكائن ما باختيار الكائن والحادثة ثم يكتب نص البرنامج المناسب فى الإجراء. ينفذ جزء البرنامج المكتوب هذا زمن التنفيذ عند وقوع الحادثة. الفصل الثاني الخصائص وعناصر التحكم والكائنات يركز هذا الفصل على عناصر تحكم لغة فيجول بيسك، مثل شريطي التمرير الأفقي والعمودي Scroll Bar، ومربعات النص Text Boxes، وأزرار الخيارات Option Button، وأزرار الأوامر Command Button. ستتعلم من هذا الفصل كيف تضع هذه العناصر داخل برامجك، وكيفية تغيير خصائصها، وكيفية ربط النصوص البرمجية بها، (أي ربطها ببرامج متعلقة بها). تُقدم معظم البرامج، معلومات إلى المستخدم، وتتلقى منه معلومات أيضاً. تُدعى عملية تبادل المعلومات بين التطبيق وبين المستخدم، بواجهة المستخدم User Interface. تَستخدم جميع برامج الويندوز، عناصر التحكم Controls، لتزويد المستخدم بواجهة سهلة ومفهومة (هذا من أهم أسباب شيوع النظام ويندوز). يوضح هذا الفصل مدى سهولة بناء واجهة استخدام جذابة في لغة فيجول بيسك. عنصر تحكم شريط التمرير يستخدم شريط التمرير Scroll Bar بكثرة في برامج ويندوز. يمكّنك استخدام هذا العنصر، من اختيار قيمة معينة، بوضع مؤشّر شريط التمرير عند موقع محدد منه، بدلاً من كتابة القيمة. ملاحظة أطلقنا على شريط التمرير في الفصل الأول كلمة كائن Object، لكن اعتباراً من هذا الفصل سنشير إليه بمصطلح عنصر تحكم Control. في معظم الأحوال، يعتبر الكائن هو نفسه عنصر تحكم، لكن ليس دائماً، فالنموذج Form هو كائن، لكنه ليس عنصر تحكم. نستطيع استخدام كلمة كائن للدلالة على عنصر تحكم، إذا كان هذا العنصر سيوضع في نموذج. برنامج السرعة يوضح برنامج السرعة، كيفية استخدام شريط التمرير للحصول على قيمة معينة من المستخدم. يُفترض في برنامج السرعة إنجاز ما يلي: يظهر الإطار المبين في الشكل 2-1 عند بدء تشغيل برنامج السرعة، يُفترض أن يوضع مؤشّر شريط التمرير عند مركز شريط التمرير (الموقع الافتراضي)، وأن تظهر الرسالة "50 كم / ساعة" (قيمة السرعة) ضمن مربع النص. الشكل 2-1 نافذة برنامج السرعة. ينبغي على مربع النص، إظهار التغير في السرعة عند تغيير موضع مؤشّر شريط التمرير. فمثلاً يجب إظهار القيمة صفر عندما يوضع المؤشّر عند أقصى اليمين، أما عند وضعه عند أقصى اليسار فيجب إظهار القيمة 100. يؤدي نقر الزر خروج لإنهاء البرنامج. التمثيل المرئي لبرنامج السرعة يَستخدم برنامج السرعة عنصر تحكم شريط التمرير الأفقي. يبين الشكل 2-2 شكل عنصر التحكم هذا. طبعاً يختلف موضع هذا العنصر ضمن مربع الأدوات Toolbox تبعاً لاختلاف إصدار لغة فيجول بيسك المستخدم. ويؤدي وضع مؤشّر الفأرة فوق رمز شريط التمرير الأفقي، دون النقر عليه إلى ظهور مستطيل أصفر يحمل الرسالة HscrollBar داخله. بهذه الطريقة، تتمكن من التحقق من وجود رمز شريط التمرير الأفقي في إطار مربع الأدوات. نفّذ فيجول بيسك، ثم انقر الزر إلغاء الأمر في الإطار New Project في حال ظهوره لإغلاق هذا الإطار، ثم اختر البند New Project من قائمة File للغة فيجول بيسك. يستجيب فيجول بيسك بإظهار الإطار New Project. اختر الرمز Standard EXE من ضمن الإطار New Project، ثم انقر الزر موافق. يستجيب فيجول بيسك بإنشاء مشروع جديد. الشكل 2-2 رمز شريط التمرير الأفقي داخل إطار مربع الأدوات. سنحفظ الآن المشروع الجديد الذي أنشأناه: أنشئ الدليل C:\VB5Prg\Ch02. تحقق من اختيار النموذج Form1، ثم اختر البند Save Form1 As من قائمة File. يستجيب فيجول بيسك بإظهار مربع الحوار Save File As. استخدم مربع الحوار Save File As لحفظ النموذج باسم Speed.Frm في الدليل C:\VB5Prg\Ch02 واختر البند Save Project As من قائمة File، ثم استخدم مربع الحوار Save Project As لحفظ المشروع باسم Speed.vbp في الدليل نفسه. عدّل النموذج Form1 طبقاً للجدول 2-1. يُفترض أن يبدو النموذج لدى اكتماله، كما في الشكل 2-3. الشكل 2-3 النموذج frmSpeed في طور التصميم. الجدول 2-1. جدول خصائص النموذج frmSpeed. الكائن الخاصية القيمة Form Name FrmSpeed BackColor Light gray Caption برنامج السرعة RightToLeft True CommandButton Name cmdExit Caption &خروج RightToLeft True Horizontal Scroll Bar Name hsbSpeed Min 0 Max 100 RightToLeft True TextBox Name txtSpeed Alignment 2-Center Font (اختر ما شئت) BackColor Red ForeColor White Text 50 كم / ساعة MultiLine True RightToLeft True ذكرنا في الفصل الأول، أن النقر المزدوج على رمز عنصر التحكم ضمن مربع الأدوات، يؤدي إلى وضع عنصر التحكم ذاك، ضمن النموذج الحالي. يستجيب فيجول بيسك بوضع عنصر التحكم في وسط النموذج الحالي. تستطيع بعد ذلك نقله إلى مكان آخر عن طريق سحبه بمؤشّر الفأرة. كما تستطيع تكبيره أو تصغيره بسحب المقابض التي تظهر حوله. للولوج إلى خصائص عنصر التحكم، تأكد من اختيار هذا العنصر على النموذج (أي توضّع المقابض حوله)، ثم اختر البند Properties Windows من قائمة View. أو تستطيع بدلاً من ذلك، النقر بالزر الأيمن للفأرة على العنصر، ثم اختيار البند Properties من القائمة الفرعية السريعة التي ظهرت. يستجيب فيجول بيسك بإظهار إطار الخصائص Properties لعنصر التحكم المختار. تستطيع الآن تغيير خصائص هذا العنصر. احفظ المشروع باختيار البند Save Project من قائمة File التابعة لفيجول بيسك. كتابة نص برنامج السرعة سنكتب الآن نص برنامج السرعة: اكتب النص التالي ضمن الإجراء cmdExit_Cilck() التابع للنموذج frmSpeed: Private Sub cmdExit_Click() End End Sub يُنفذ نص البرنامج السابق آلياً، عند نقر الزر خروج، ويُنهي تنفيذ برنامج السرعة. ملاحظة لإدخال نص البرنامج للزر خروج، انقر نقراً مزدوجاً على الزر خروج في مرحلة التصميم، فيظهر إطار البرنامج للإجراء cmdExit_Cilck(). ويكون هذا الإجراء جاهزاً للتعديل من قبل المستخدم. تأكد أن مربع السرد الواقع في الزاوية العليا اليسارية، من إطار البرنامج يحوي البند cmdExit، وأن المربع المجاور له يحوي البند Click. احفظ المشروع باختيار البند Save Project من قائمة File التابعة لفيجول بيسك. تنفيذ برنامج السرعة لم ننته بعد من كتابة نصوص برنامج السرعة، لكن رغم ذلك، سننفذ برنامج السرعة لرؤية نتائج ما أنجزناه حتى الآن. نفّذ برنامج السرعة (ضغط مفتاح F5 أو اختيار البند Start من قائمة Run). يظهر إطار برنامج السرعة كما هو مبين في الشكل 2-4. الشكل 2-4 إطار برنامج السرعة. غيّر موضع مؤشّر شريط التمرير بواسطة الفأرة. كما تلاحظ، لا يظهر أي شيء ضمن مربع النص، والسبب في ذلك طبعاً، هو أننا لم نكتب نص البرنامج اللازم لإظهار القيم الموافقة لتغيير مؤشّر شريط التمرير. انقر الزر خروج لإنهاء البرنامج. الخصائص Min و Max و Value لشريط التمرير تشرح الفقرات التالية بعض خصائص شريط التمرير: الخاصيتان Min و Max يمثّل شريط التمرير مجموعة من القيم. تحدد الخاصية Min القيمة الدنيا، وتحدد الخاصية Max القيمة العليا. مثلاً، تأخذ الخاصية Min في الجدول 2-1 القيمة صفر، وتأخذ الخاصية Max القيمة 100، وهذا يعني أن شريط التمرير يمكن أن يعطي أية قيمة بين الصفر و 100. الخاصية Value تمثل الخاصية Value التابعة لشريط التمرير، القيمة الراهنة لهذا الشريط، وبالتالي فقد تكون أية قيمة صحيحة بين الرقم صفر والرقم 100 حسب مثالنا هذا. لم نعط الخاصية Value قيمة معينة أثناء مرحلة التصميم، وبالتالي ستستخدم القيمة الافتراضية (القيمة صفر) لهذه الخاصية، وعند تنفيذ البرنامج، يوضع مؤشّر شريط التمرير عند الموضع المرافق للخاصية Value (أي عند أقصى يمين شريط التمرير، وهو الموضع المرافق للقيمة صفر للخاصية Value). الآن، وباعتبار أن السرعة الافتراضية يجب أن تكون 50، لهذا يجب إسناد القيمة 50 للخاصية Value التابعة لشريط التمرير: أسند القيمة 50 للخاصية Value. الآن، ستجد عند تنفيذ البرنامج، أن الموضع الافتراضي لمؤشّر شريط التمرير سيكون في وسطه (أي منتصف المسافة بين صفر و 100). لاحظ أن الجدول 2-1 يطالبك بإسناد القيمة "50 كم / الساعة" للخاصية Text التابعة لمربع النص. فعند تشغيل البرنامج، ستجد أن مربع النص يُظهر القيمة الابتدائية "50 كم / الساعة" والمشابهة للموضع الراهن لمؤشّر شريط التمرير (Value = 50). تركيز Focus لوحة المفاتيح تستطيع ضغط المفتاح Tab من على لوحة المفاتيح، أثناء عمل البرنامج، لنقل التركيز من عنصر تحكم إلى آخر. وتستطيع تمييز عنصر التحكم الذي يمتلك التركيز بسهولة، لأن ويندوز يعطي دلالة على ذلك، (توضّع الإضاءة عنده، أو يظهر حول عنوانه مستطيل منقط .. الخ). فمثلاً، يظهر مؤشّر وامض في مربع النص، إذا كان التركيز موضوعاً عنده، بينما يومض مؤشّر شريط التمرير عندما يكون التركيز موضوعاً عنده. كما يظهر مستطيل منقط حول عنوان الزر خروج (مثلاً) إذا كان هذا الزر يمتلك التركيز، وهكذا. ما المقصود بأن عنصر تحكم ما، يمتلك التركيز ؟!. المقصود من ذلك، هو أنك تستطيع استخدام لوحة المفاتيح للتحكم به عند امتلاكه للتركيز. جرب مثلاً ما يلي لرؤية ظاهرة تركيز لوحة المفاتيح على أرض الواقع: نفّذ برنامج السرعة. (لاحظ أن مؤشّر شريط التمرير يتوضع في الوسط وهذا طبعاً بسبب إسناد القيمة 50 للخاصية Value التابعة لشريط التمرير). اضغط المفتاح Tab في لوحة المفاتيح، إلى أن يصل التركيز إلى شريط التمرير، (ستجد أن مؤشّر شريط التمرير يُومض). يمتلك شريط التمرير الآن التركيز، استخدم مفتاحي الأسهم اليميني واليساري على لوحة المفاتيح لتحريك مؤشّر شريط التمرير. باعتبار أن شريط التمرير يمتلك تركيز لوحة المفاتيح فإن الضغط على مفتاحي الأسهم على لوحة المفاتيح يكافئ نقر زري السهمين اليساري واليميني لشريط التمرير. جرب ضغط المفاتيح Home و End و PgUp و PgDn وراقب النتائج. اضغط المفتاح Tab حتى يصل التركيز إلى الزر خروج، ثم اضغط مفتاح Space أو مفتاح Enter. وهذا يكافئ نقر الزر خروج لإنهاء البرنامج. لاحظ كم من العمليات تستطيع إنجازها بواسطة برنامج السرعة!. تستطيع تبديل موضع مؤشّر شريط التمرير، وتكبير أو تصغير إطار البرنامج (بسحب حواف الإطار)، ونقل إطار البرنامج بسحب شريط عنوانه، وإنجاز الكثير من مهام ويندوز القياسية الأخرى. الجميل في الموضوع، أنه لا يلزم كتابة أي نص برمجي لإنجاز ذلك. بل لعل ذلك من أهم محاسن كتابة برامج تحت بنية ويندوز. فالمعالم القياسية لويندوز تكون مبرمجة أصلاً في برامجك، ولست بحاجة كمستخدم ويندوز (أو مستخدم لبرامجك)، الإلمام بكل المظاهر القياسية لويندوز حتى تتمكن من العمل بكفاءة وفق هذه البنية. تحسين برنامج السرعة سنحسّن برنامج السرعة الآن: انقر نقرة مزدوجة على عنصر تحكم شريط التمرير ضمن النموذج لإظهار الإجراء hsbSpeed_Change(). تحقق بأنّ مربع السرد في الزاوية اليسرى العليا من إطار نص البرنامج يحمل العبارة النصية hsbSpeed، وأنّ مربع السرد المجاور له، يحمل العبارة النصية Change، وبالتالي، عند قراءتهما سوياً تنتج العبارة hsbSpeed_Change(). أدخل النص التالي ضمن الإجراء hsbSpeed_Change(): Private Sub hsbSpeed_Change() txtSpeed.Text = Str(hsbSpeed.Value) + " كم / ساعة" End Sub ينفذ الإجراء hsbSpeed_Change() (حسب ما يتبدى من اسمه)، عند تغيير موضع مؤشّر شريط التمرير. وبالتالي تتغير الخاصية Value تلقائياً تبعاً لذلك التغيير. فمثلاً، تُصبح قيمة الخاصية Value مساوية الصفر، عند وضع مؤشّر شريط التمرير عند أقصى يمين الشريط، وذلك بسبب إسناد القيمة صفر إلى الخاصية Min. ملاحظة تنتقل بداية شريط التمرير من الجهة اليسرى إلى الجهة اليمنى، عند إسناد القيمة True للخاصية RightToLeft. لمزيد من المعلومات عن الخاصية RightToLeft اقرأ الفصل الثاني والعشرين، (إنشاء تطبيقات عربية السمة مع فيجول بيسك). يتوجب على مربع النص إظهار قيمة الموضع الجديد لمؤشّر شريط التمرير، عند تغيير موقعه. أي بكلمة أخرى، يلزمنا إسناد قيمة الخاصية Value لشريط التمرير، إلى الخاصية Text لمربع النص، وهذا هو دور العبارة التالية: txtSpeed.Text = Str(hsbSpeed.Value) + " كم / ساعة" فمثلاً، إذا كانت قيمة الخاصية Value لشريط التمرير تساوي 20، فقيمة الخاصية Text لمربع النص ستساوي 20 كم / ساعة. تتوقع الخاصية Text أن يُسند لها قيمة نصية (سلسلة كتابية)، أما الخاصية Value فهي عبارة عن قيمة عددية. مما يعني أنّه يجب استخدام التابع الوظيفي Str() لتحويل القيمة العددية للخاصية Value إلى سلسلة كتابية. يُكتب ضمن قوسي التابع الوظيفي Str()، القيمة العددية المطلوب تحويلها إلى سلسلة كتابية، فمثلاً، يُستخدم التابع Str(11) لتحويل العدد 11 إلى السلسلة الكتابية "11". كما يُستخدم التابع Str(12345) لتحويل العدد 12345 إلى السلسلة الكتابية "12345". ملاحظة عند تحويل القيمة الرقمية إلى قيمة نصية، فإنها تفقد قيمتها الرقمية، وتصبح كأي حرف آخر. طبعاً، يوجد تابع وظيفي معاكس للوظيفة Str() وهو التابع Val()، الذي يحول القيمة النصية ("1234") إلى قيمة عددية (1234). في حالتنا هذه، يُطلب من الإجراء تحويل القيمة العددية hsbSpeed.Value إلى سلسلة كتابية، ولهذا استخدمنا العبارة التالية: Str(hsbSpeed.Value) وبالتالي، فإذا فرضنا مثلاً، أنّ الموضع الحالي لمؤشّر شريط التمرير يساوي 32 (hsbSpeed.Value = 32)، والعبارة التالية: txtSpeed.Text = Str(hsbSpeed.Value) + " كم / ساعة" تُسند للخاصية Text التابعة لمربع النص، القيمة التالية: 32 كم / ساعة والآن لنشاهد نتائج ما كتبناه على أرض الواقع: احفظ المشروع باختيار Save Project من القائمة File. نفّذ برنامج السرعة. انقل مؤشّر شريط التمرير، وستجد أنّ محتويات مربع النص تتغير تبعاً لموضع مؤشّر الشريط. أَنهِ برنامج السرعة بنقر الزر خروج. تغيير محتويات مربع النص مع سحب مؤشّر شريط التمرير أنهينا برنامج السرعة تقريباً، ولكن بقيت مشكلة واحدة ينبغي حلها. وللتعرف على هذه المشكلة، اتبع الخطوات التالية: نفّذ برنامج السرعة. جرّب سحب مؤشّر شريط التمرير (دون إفلاته)، وستجد أنّ محتوى مربع النص لا يتغير أثناء عملية السحب! وإنما يتغير فقط بعد تحرير المؤشّر. كم سيكون جميلاً لو يترافق تغير محتوى مربع النص مع حركة مؤشّر شريط التمرير. يُنفذ الإجراء hsbSpeed_Scroll() آلياً، عند سحب مؤشّر شريط التمرير، لهذا: انقر نقرة مزدوجة على عنصر تحكم شريط التمرير ضمن النموذج، لإظهار الإجراء hsbSpeed_Scroll() في مربع السرد الموجود في الزاوية اليسرى والعليا من إطار نص البرنامج ووجود عبارة النص Scroll في مربع السرد المجاور له. أدخل النص التالي في الإجراء hsbSpeed_Scroll(): Private Sub hsbSpeed_Scroll() hsbSpeed_Change End Sub احفظ المشروع باختيار Save Project من القائمة File لفيجول بيسك. النص الذي أدخلناه في الإجراء hsbSpeed_Scroll() هو التالي: hsbSpeed.Change يتسبب نص الإجراء هذا، بتنفيذ الإجراء hsbSpeed_Change()، الذي كتبناه مسبقاً، مما يعني أنّ نص الإجراء hsbSpeed_Change() سينفذ عند سحب مؤشّر شريط التمرير، الذي يعمل على إسناد الموقع الحالي لشريط التمرير إلى الخاصية Text لمربع النص، دعنا نشاهد بأنفسنا أثر ما كتبناه: نفّذ برنامج السرعة. اسحب مؤشّر شريط التمرير، وتحقق أن محتويات مربع النص، تتغير تبعاً لسحب مؤشّر شريط التمرير. انقر الزر خروج لإنهاء برنامج السرعة. ملاحظة ينفذ الإجراء hsbSpeed_Change() من ضمن الإجراء hsbSpeed_Scroll() كما يلي: لاحظ، عدم استخدام الأقواس بعد الكلمة hsbSpeed_Change، أي عند استدعاء الإجراء hsbSpeed_Change(). سيؤدي استخدام القوسين بعد اسم الإجراء في مثل هذه الحالة إلى ظهور رسالة خطأ. وبالواقع يُظهر فيجول بيسك جزء البرنامج الذي يحمل الخطأ بلون أحمر، وهي دلالة مرئية على وجود خطأ ضمن نص البرنامج. كلمة أخيرة حول برنامج السرعة يوضح برنامج السرعة، كيف تتمكن من تشكيل واجهة مستخدم محكمة، لإدخال الأعداد. فبدلاً من إجبار المستخدم على إدخال الأعداد بين صفر و 100 يدوياً، قدمنا للمستخدم شريط تمرير، يمكّن المستخدم من إعطاء أي قيمة صحيحة ضمن المجال المسموح باستخدام شريط التمرير هذا، والحصول على تغذية عكسية (أو تغذية راجعة Feedback وهي الاستجابة الناتجة عن مربع النص) عن مجال الأرقام المسموح بإدخالها. برنامج الخيارات يوضّح هذا البرنامج كيف يمكنك كتابة برامج تسمح للمستخدم بانتقاء خيار ما Options. التمثيل المرئي لبرنامج الخيارات يستخدم برنامج الخيارات عنصر تحكم زر الخيار Options Button. انظر الشكل 2 - 5 لرؤية شكل وموقع عنصر التحكم هذا ضمن مربع الأدوات. علماً بأن الموقع يتغير حسب الإصدار المستخدم، يؤدي وضع مؤشّر الفأرة فوق أي عنصر تحكم ضمن مربع الأدوات إلى ظهور مستطيل أصغر يحمل بداخله اسم ذلك العنصر (مثلاً Options Button في حالتنا هذه). الشكل 2-5 رمز زر الخيار Options ضمن إطار مربع الأدوات. أنشئ مشروعاً جديداً باختيار New Project من القائمة File لفيجول بيسك، ثم اختر الرمز Standard EXE وانقر الزر فتح ضمن الإطار New Project. تحقق بأن إطار النموذج Form1 هو الإطار الراهن (أي أنه تم اختياره، أو بكلمة أخرى، الإضاءة متوضعة لديه). ثم اختر Save Form1 As من القائمة File لفيجول بيسك. استخدم الآن مربع الحوار Save File As لحفظ الملف بالاسم Options.Frm في الدليل C:\VB5Prg\Ch02. اختر الآن Save Project As من القائمة File لفيجول بيسك، واستخدم مربع الحوار Save Project لحفظ المشروع بالاسم Options.Vbp في الدليل C:\VB5Prg\Ch02. أنشئ النموذج frmOptions طبقاً للجدول 2-2. يفترض أن يبدو النموذج لدى اكتماله كذاك المبين في الشكل 2-6. الشكل 2-6 النموذج frmOptions في طور التصميم. الجدول 2-2. جدول خصائص النموذج frmOptions. الكائن الخاصية القيمة Form Name frmOptions BackColor Red Caption برنامج الخيارات RightToLeft True CommandButton Name cmdExit Caption &خروج RightToLeft True Check Box Name chkSound BackColor Red Caption أ&صوات Font (اختر ما شئت) ForeColor White RightToLeft True Check Box Name chkMouse BackColor Red Caption ال&فأرة Font (اختر ما شئت) ForeColor White RightToLeft True الكائن الخاصية القيمة Check Box Name chkColors BackColor Red Caption ال&ألوان Font (اختر ما شئت) ForeColor White RightToLeft True Option Button Name optLevel1 BackColor Red Caption المستوى &1 Font (اختر ما شئت) ForeColor White RightToLeft True Option Button Name optLevel2 BackColor Red Caption المستوى &2 Font (اختر ما شئت) ForeColor White RightToLeft True Option Button Name optLevel3 BackColor Red Caption المستوى &3 Font (اختر ما شئت) ForeColor White RightToLeft True Label Name lblChoice Alignment 2-Center BorderStyle 1-Fixed Single Font (اختر ما شئت) RightToLeft True ملاحظة ستضطر غالباً إلى زيادة ارتفاع النموذج frmOptions عند بنائه طبقاً للجدول 2-2 وذلك حتى تتسع كل العناصر فيه. ولزيادة الارتفاع اسحب الحافة السفلى للإطار باتجاه الأسفل. قسم التصاريح العامة General Declarations للنموذج سنُدخل في هذا القسم جزءاً من برنامج، علماً بأنّ هذا القسم عبارة عن منطقة ضمن إطار نص البرنامج يكتب فيها شتى العبارات العامة. تعتبر العبارة Option Explicit مثالاً على عبارة عامة. سنتناول المعنى الدقيق لهذه العبارة لاحقاً في هذا الفصل. أما الآن فيكفينا تعلم كيفية تناول قسم التصاريح العامة، وكيفية كتابة نص برمجي داخله. اتبع الخطوات التالية: انقر نقراً مزدوجاً على أي منطقة خالية من النموذج frmOptions لإظهار إطار نص البرنامج (Code Window). يستجيب فيجول بيسك بإظهار إطار نص البرنامج. انقر على رمز السهم النازل لمربع السرد الموجود في الزاوية اليسرى العليا من إطار نص البرنامج، ثم اختر البند (General) من القائمة. انقر رمز السهم النازل لمربع السرد المجاور للمربع السرد السابق، والمتوضع عند الزاوية العليا اليمنى من إطار نص البرنامج، ثم اختر البند (Declarations) منه. يُظهر إطار نص البرنامج الآن قسم التصاريح العامة General Declarations، حسب ما يوضحه الشكل 2-7. ستُلاحظ النص التالي في الشكل 2-7: Private Sub Form_Load() End Sub حسب ما هو واضح في الشكل 2-7، يقع قسم التصاريح العامة فوق الإجراء Form_Load()، وقد تجد عبارات مكتوبة مسبقاً في هذا القسم، مثلاً: Option Explicit الشكل 2-7 إظهار قسم التصاريح العامة General Declarations لإطار نص البرنامج Code Window. تستطيع الآن نقر قسم التصاريح العامة، وكتابة أي نص برنامج إضافي تريد. فمثلاً إذا لم تشاهد العبارة Option Explicit في هذا القسم، فاكتب العبارة التالية: Option Explicit ربط حادثة Click للزر خروج بنص البرنامج المناسب أدخل النص التالي ضمن الإجراء cmdExit_Click() للنموذج frmOptions: Private Sub cmdExit_Click() End End Sub يُنفذ جزء البرنامج الذي أدخلته، آلياً عند نقر الزر خروج. علماً بأنّ جزء البرنامج هذا يُنهي عمل برنامج الخيارات. تنفيذ برنامج الخيارات رغم أننا لم ننته بعد من تصميم برنامج الخيارات لكن دعنا ننفذه: نَفّذ برنامج الخيارات. انقر زر الخيار المستوى1. يستجيب البرنامج، باختيار زر الخيار المستوى1، (تظهر دائرة مصمتة ضمن زر الخيار المستوى1). انقر زر الخيار المستوى2. يستجيب البرنامج بإلغاء اختيار زر الخيار المستوى1 (إزالة الدائرة المصمتة من زر الخيار المستوى1)، واختيار زر الخيار المستوى2 بدلاً عنه (وضع دائرة مصمتة داخله). انقر زر الخيار المستوى3. يستجيب البرنامج بإلغاء اختيار الزر المستوى2 ويختار بدلاً منه الزر المستوى3. إذاً يسمح فقط باختيار زر خيار واحد في نفس الوقت. تستخدم أزرار الخيارات ضمن البرامج عندما يرغب المستخدم باختيار خيار واحد فقط من أجل عدة خيارات. (لاحظ أنّ بعض كتب ويندوز، تُطلق على هذا الزر اسم الزر الراديوي Radio Button، تشبيهاً له بأزرار الراديو التي لا يسمح بضغط أكثر من زر واحد في نفس الوقت). انقر خانة الاختيار أصوات. يستجيب البرنامج بوضع علامة اختيار في خانة الاختيار أصوات. انقر خانات الاختيار الأخرى. كما تشاهد، يُسمح باختيار أكثر من خانة اختيار واحدة في نفس الوقت. استخدم خانات الاختيار، عندما ترغب في أن يتمكن المستخدم من اختيار عدة وضعيات في نفس الوقت. فمثلاً. قد يختار المستخدم إذا كان البرنامج عبارة عن لعبة!، اللعب مع صوت أو بدونه، وبفأرة أو بدونها، وبألوان أو بدون ألوان. كما يستطيع المستخدم اللعب وفق مستوى أول أو ثاني أو ثالث، لكن لا حكمة من وراء اللعب بثلاثة مستويات مثلاً دفعة واحدة (عملياً، لا يمكن اللعب بثلاث مستويات في نفس الوقت، حسب المثال). لإلغاء اختيار خانة الاختيار، انقر مجدداً عليه، فتزول علامة الاختيار من داخله. أَنهِ البرنامج بنقر الزر خروج. التحقق من أزرار الاختيار وخانات الاختيار التي يتم اختيارها سنكتب الآن نصاً يتحقق من أزرار الخيار وخانات الاختيار التي يتم اختيارها. أدخل النص التالي ضمن الإجراء chkColors_Click() للنموذج frmOptions: Private Sub chkColors_Click() UpdateLabel End Sub أدخل النص التالي ضمن الإجراء chkMouse_Click(): Private Sub chkMouse_Click() UpdateLabel End Sub أدخل النص التالي ضمن الإجراء chkSound_Click(): Private Sub chkSound_Click() UpdateLabel End Sub أدخل النص التالي ضمن الإجراء optLevel1_Click(): Private Sub optLevel1_Click() UpdateLabel End Sub أدخل النص التالي ضمن الإجراء optLevel2_Click(): Private Sub optLevel2_Click() UpdateLabel End Sub أدخل النص التالي ضمن الإجراء optLevel3_Click(): Private Sub OptLevel3_Click() UpdateLabel End Sub ما الذي فعلناه خلال الخطوات السابقة هذه ؟! لقد كتبنا العبارة التالية: UpdateLabel في جميع الإجراءات السابقة. يقصد بالعبارة UpdateLabel اسم إجراء جديد، وسنباشر بعد قليل بكتابته. يُنفذ هذا الإجراء آلياً فور اختيار أي من أزرار الخيار أو خانات الاختيار في هذا المثال: اتبع الآن الخطوات التالية لإضافة الإجراء UpdateLabel إلى النموذج: انقر نقراً مزدوجاً في أي منطقة خالية من النموذج. يستجيب فيجول بيسك بإظهار إطار نص البرنامج (Code Window). اختر Add Procedure من القائمة Tool لفيجول بيسك. يستجيب فيجول بيسك بإظهار مربع الحوار Add Procedure. أدخل UpdateLabel في الحقل Name من مربع الحوار Add Procedure. (لأن UpdateLabel هو اسم الإجراء الجديد الذي سنضيفه). تحقق الآن بأن أزرار الخيارات في مربع الحوار Add Procedure مطابقة للشكل 2-8. الشكل 2-8 إضافة الإجراء الجديد UpdateLabel. انقر الزر OK في مربع الحوار Add Procedure. يستجيب فيجول بيسك بإظهار إطار نص البرنامج عند الإجراء UpdateLabel جاهزاً للتعديل. ملاحظة لقد أضاف فيجول بيسك الإجراء UpdateLabel في المنطقة العامة General Area من النموذج frmOptions. ونستطيع التحقق من ذلك كما يلي: - ضع قراءة مربع السرد الواقع أعلى يسار إطار نص البرنامج على General. - ضع قراءة مربع السرد الواقع أعلى يمين إطار نص البرنامج علىDeclarations. إذا تفقدت محتوى مربع السرد اليميني فستجد بندين فيه: وهما Declarations وUpdateLabel. يوجد لدينا في قسم التصاريح العامة General Declarations العبارة Option Explicit. الإجراءات التي تضاف إلى النموذج (مثالنا الإجراء UpdateLabel)، تضاف إلى المنطقة العامة General Area. من الهام طبعاً معرفة أين تضاف الإجراءات للرجوع إليها لاحقاً بغية قراءتها أو تعديلها. إذاً، تضاف الإجراءات في المنطقة العامة من النموذج. وللوصول إلى إجراء ما، ضع قراءة مربع السرد الواقع أعلى يسار إطار نص البرنامج على General ثم ضع قراءة مربع السرد اليميني المجاور على اسم الإجراء الذي تريد تعديله أو قراءته. يكتب فيجول بيسك نيابة عنك، السطرين الأول والأخير من الإجراء، ويبقى عليك كتابة نص الإجراء المناسب: أدخل النص التالي ضمن الإجراء UpdateLabel: Public Sub UpdateLabel() Dim Info Dim LFCR LFCR = Chr(13) + Chr(10) ' الصوت If chkSound.Value = 1 Then Info = "الصوت : تشغيل" Else Info = "الصوت : إيقاف" End If ' الفأرة If chkMouse.Value = 1 Then Info = Info + LFCR + "الفأرة : تشغيل" Else Info = Info + LFCR + "الفأرة : إيقاف" f' الألوان If chkColors.Value = 1 Then Info = Info + LFCR + "الألوان : تشغيل" Else Info = Info + LFCR + "الألوان : إيقاف" End If ' المستوى 1 If optLevel1.Value = True Then Info = Info + LFCR + "المستوى : 1" End If ' If optLevel2.Value = True Then Info = Info + LFCR + "المستوى : 2" End If If optLevel3.Value = True Then Info = Info + LFCR + "المستوى : 3" End If lblChoice.Caption = Info End Sub احفظ المشروع باختيار Save Project من القائمة File. تنفيذ برنامج الخيارات دعنا نُنفّذ البرنامج قبل المضي في دراسة نص الإجراء UpdateLabel: نفّذ برنامج الخيارات. انقر خانات الاختيار وأزرار الخيار المختلفة. يستجيب برنامج الخيارات، بإظهار حالة خانات الاختيار وأزرار الخيارات ضمن اللافتة lblCHoice (انظر الشكل 2-9). أَنهِ برنامج الخيارات بنقر الزر خروج. الشكل 2-9 إطار برنامج الخيارات مع حالة التوضعات الحالية لكل من أزرار الخيارات وخانات الاختيار. كيف يعمل برنامج الخيارات يُنفّذ برنامج الخيارات، الإجراء UpdateLabel عند نقر أحد أزرار الخيارات أو خانات الاختيار. نص برنامج الإجراء chkColors_Click() للنموذج frmOptions يُنفّذ هذا الإجراء آلياً، عند نقر خانة الاختيارchkColors: Private Sub chkColors_Click() UpdateLabel End Sub ينفذ بعد ذلك نص الإجراء UpdateLabel والذي سنشرحه بعد قليل. بطريقة مشابهة، يؤدي نقر أي زر من أزرار الخيارات أو خانات الاختيار الأخرى إلى تنفيذ الإجراء المرافق لذلك العنصر (زر خيار أو خانة اختيار)، وبالتالي تنفيذ الإجراء UpdateLabel. نص برنامج الإجراء UpdateLabel إذاً، ينفذ هذا الإجراء حسب ما ذكرنا، عند اختيار أي من أزرار الخيارات أو خانات الاختيار في هذا المثال. هذا الإجراء ليس إجراء حادثة خاصة بأحد كائنات فيجول بيسك، أي لا ينفذ تلقائياً عند وقوع حادثة ما، وإنما هو إجراء أنشأناه بأنفسنا باستخدام مربع الحوار Add Procedure كما مرّ معنا سابقاً. من الهام التمييز بين إجراءات مثل cmdExit_Click() (إجراءات مرتبطة بحادثة ما)، وبين إجراءات مثل UpdateLabel، فالإجراء cmdExit_Click() ينفذ آلياً عند وقوع حادثته، ولا حاجة لكتابة أي نص برمجي للتسبب بعملية تنفيذه. ما هو السبب؟!. السبب أنّ فيجول بيسك يعمل!، ففي اللحظة التي يتم فيها نقر الزر خروج. تقع حادثة النقر Click، وبالتالي ينفذ الإجراء cmdExit_Click(). لا ينفذ الإجراء UpdateLabel آلياً، بل يجب على برنامجك أن يستدعيه للتنفيذ، ويتم ذلك بذكر اسمه، وهو السبب الذي دفعنا إلى كتابة العبارة pdateLabel في ستة مواقع، فالعبارة: UpdateLabel تتسبب بتنفيذ الإجراء UpdateLabel. مما يعني أنّ هذا الإجراء سينفذ عند نقر أي من أزرار الخيار أو خانات الاختيار في هذا المثال. التصريح عن المتحول Info تصرح أول عبارة كتبناها في الإجراء UpdateLabel عن المتحول Info بالشكل التالي: Dim Info تعتبر Dim تعليمة فيجول بيسك، وتدل أن الكلمة التي تليها (Info في مثالنا هذا)، هي اسم لمتحول سوف نستخدمه لاحقاً في الإجراء. يُستخدم المتحول Info كمتحول نصي، يقوم بتخزين سلسلة من الأحرف الكتابية أثناء تنفيذ الإجراء UpdateLabel. تستطيع التصريح عن هذا المتحول بالطريقة التالية أيضاً: Dim Info As String لحسن الحظ، يعتبر فيجول بيسك متساهلاً من هذه الناحية، ولا يُجبرك على التصريح عن نوع المتحول، بل يفترض نوعه حسب طريقة استخدامه. يعرف من لديه شيئاً من الخبرة في لغات البرمجة الأخرى، أنّ بعض لغات البرمجة لا تتطلب من المستخدم التصريح عن المتحولات، لكن تبقى عادةُ التصريح عن المتحولات عادة حسنة، ولمعرفة السبب افترض أنّ الإجراء يحوي على الحسابات التالية: Time = 10 Velocity = 50 Distance = Velocity * Time lblDistance.Caption = "المسافة = " + Str(Distance) تُسند العبارات الأربعة السابقة، القيمة 10 إلى المتحول Time، والقيمة 50 إلى المتحول Velocity، ثم تحسب حاصل ضرب هذين المتحولين وتظهر المسافة Distance، بإسناد قيمة المسافة Distance إلى الخاصية Caption للافتة lblDistance. لنفترض الآن، أنك كتبت أحد المتحولات بشكل خاطئ، (نسيت مثلاً كتابة الحرف a بعد الحرف t في كلمة Distance) كالتالي: lblDistance.Caption = "المسافة = " + Str(Distnce) يَعتبر فيجول بيسك أنّ Distnce (المتحول المكتوب بشكل خاطئ)، هو متحول جديد مختلف عن المتحول الأساسي Distance، ويُسند له آلياً القيمة صفر، وبالتالي تُظهر اللافتة lblDistance الجملة التالية: المسافة = 0 وهذا بالطبع خطأ جسيم، قد تهدر كثيراً من الوقت لاكتشافه. تستطيع تلافي حدوث أمثال هذه الأخطاء، بأن تدعو فيجول بيسك إلى التذمر عند استخدام متحول في فيجول بيسك بدون التصريح عنه مسبقاً. وبالتالي، في مثالنا هذا يجب أن تؤول العبارات السابقة إلى ما يلي: Dim Time Dim Velocity Dim Distance Time = 10 Velocity = 50 Distance = Velocity * Time lblDistance.Caption = "المسافة = " + Str(Distnce) إذا تم إعداد فيجول بيسك، بحيث يتذمر لدى مصادفته متحول غير مصرح عنه ضمن نص البرنامج، فإنه سوف يعطيك رسالة خطأ أثناء تنفيذ البرنامج ويخبرك بأن المتحول غير معروف لديه. فمثلاً يضيء فيجول بيسك المتحول Distnce في حالتنا هذه، ويخبرك بأن فيه شيئاً ما خاطئ. أما كيف يتم إعداد فيجول بيسك للتذمر عند مصادفة متحولات غير مصرح عنها في نص برنامج ؟! فيتم ذلك بوضع العبارة التالية: Option Explicit ضمن قسم التصاريح العامة General Declarations، وهو السبب الذي دفعنا إلى وضع العبارة Option Explicit في قسم التصاريح العامة عبر الأمثلة السابقة. ملاحظة ضع العبارة Option Explicit دائماً ضمن قسم التصاريح العامة للنموذج. فبهذه الطريقة تخبر فيجول بيسك بعدم قبول المتحولات غير المصرح عنها وتوفر على نفسك ساعات طويلة من تنقيح الأخطاء. لنتكلم بعمومية أكثر، يؤدي تجاهل العبارة Option Explicit إلى إنفاق ساعات طويلة في تنقيح أخطاء قد تكون بسيطة ناتجة من أخطاء في التهجي، لهذا كن حكيماً ودع فيجول بيسك يجد عنك المتحولات التي كتبتها بشكل خاطئ. التصريح عن المتحول LFCR صرحنا أيضاً عن المتحول LFCR ضمن الإجراء UpdateLabel: Dim LFCR ثم أسندنا إلى المتحول LFCR ما يلي: LFCR = Chr(13) + Chr(10) يمثل الرمز Chr(13) رمز المفتاح Enter على لوحة المفاتيح، كما أنّ الرمز Chr(10) هو رمز التغذية السطرية (أي ينقل مؤشر الكتابة إلى سطر جديد). وكما سنرى، تُظهر اللافتة lblChoice سلسلة طويلة تنتشر على عدة أسطر، وذلك بالاستعانة بالمتحول LFCR. التحقق من قيمة الخاصية Value يأتي بعد التصريح عن المتحولات في الإجراء UpdateLabel كتلة الشرط If .Else.End: 'الصوت If chkSound.Value = 1 Then Info = "الصوت : تشغيل" Else Info = "الصوت : إيقاف" End If تستطيع في فيجول بيسك، إضافة تعليقات ضمن نص البرنامج، باستخدام رمز الفاصلة العلوية ( ' ) أو الكلمة Rem. فمثلاً السطر التالي: 'الصوت يطابق السطر: Rem الصوت يَستخدم هذا الكتاب الفاصلة العلوية للدلالة على أسطر التعليقات. كما يمكن إضافة التعليقات في أسط |