azharo
03-10-2005, 09:42 AM
بسم الله الرحمن الرحيم
الدرس الرابـــــع
اولاً : اتمنى ان تكونوا قد طبقتم كل ما تم شرحه في الدرسين السابقين لان ما ساشرحه في هذا الدرس سيكون مكملاً لما تم شرحه سابقاً.
سنقوم في هذا الدرس إن شاء الله بكتابة برنامج جديد نتعرف من خلاله على مجموعة اخرى من عناصر تحكم لغة فيجول بيسك (Objects) مثل شريطي التمرير الأفقي والعمودي Scroll Bar ومربع النص Text Box وأزرار الأوامر Command Button.
ذكرت في الدرس السابق ان مرحلة كتابة البرنامج في فيجول بيسك تمر بثلاث خطوت أساسية هي :
- خطوة التصميم المرئي للبرنامج وتسمى بالتمثيل المرئي Visual Implementation.
- ضبط الخصائص Setting the Properties على مستوى المشروع Project والفورمز Forms و الادوات Controls او (العناصر) (Objects)
- خطوة كتابة نص البرنامج Code Programming.
لذا ستتعلم ايضاً في هذا الدرس كيف تضع هذه العناصر داخل برامجك وكيفية تغيير خصائصها وكيفية ربط النصوص البرمجية بها (أي ربطها ببرامج متعلقة بها).
تُقدم معظم البرامج معلومات إلى المستخدم وتتلقى منه معلومات أيضاً. تُدعى عملية تبادل المعلومات بين التطبيق وبين المستخدم بواجهة المستخدم User Interface. تَستخدم جميع برامج الويندوز عناصر التحكم Controls لتزويد المستخدم بواجهة سهلة ومفهومة (هذا من أهم أسباب شيوع النظام ويندوز). وستلاحظون مدى سهولة بناء واجهة استخدام جذابة في لغة فيجول بيسك.
برنامج السرعة
يوضح برنامج السرعة كيفية استخدام شريط التمرير للحصول على قيمة معينة من المستخدم.
يُفترض في برنامج السرعة إنجاز ما يلي:
لاحظوا الصورة التالية :
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_1.png
عند بدء تشغيل برنامج السرعة يُفترض أن يوضع مؤشّر شريط التمرير العمودي عند المركز (الموقع الافتراضي) وأن تظهر الرسالة "50 كم/ ساعة" (قيمة السرعة) ضمن مربع النص.
ينبغي على مربع النص إظهار التغير في السرعة عند تغيير موضع مؤشّر شريط التمرير العمودي. فمثلاً يجب إظهار القيمة صفر عندما يوضع المؤشّر عند أقصى اليمين أما عند وضعه عند أقصى اليسار فيجب إظهار القيمة 100.
ايضا سيكون هناك 3 اشرطة تمرير افقية للتحكم في لون خلفية مربع النص حيث سيتم مزج خليط من الالوان لتكوين لون واحد لخلفية مربع النص.
يؤدي نقر الزر خروج لإنهاء البرنامج.
عنصر تحكم شريط التمرير Scroll Bar
يستخدم شريط التمرير Scroll Bar بكثرة في برامج النوافذ Windows حيث انه عندما تختفي بعض المعلومات في النافذة يظهر الشريط فنستخدمه لعرض باقي المعلومات.
ويمكّنك استخدام هذا العنصر من تغيير قيمة معينة زيادة أو نقصان بوضع مؤشّر شريط التمرير عند موقع محدد منه بدلاً من كتابة القيمة.
لهذه الأداة نوعان :
شريط تمرير أفقي : HScrollBar
شريط تمرير عمودي : VScrollBar
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_2.png
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_3.png
ملاحظة:
يطلق على شريط التمرير اسم كائن Object او عنصر تحكم Control.
في معظم الأحوال يعتبر الكائن هو نفسه عنصر تحكم، لكن ليس دائماً فالنموذج Form هو كائن لكنه ليس عنصر تحكم. نستطيع استخدام كلمة كائن للدلالة على عنصر تحكم إذا كان هذا العنصر سيوضع في نموذج.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_4.png
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_5.png
صندوق النصوص :
ويستخدم لادخال القيم (على هيئة سلسلة رموز) وكذلك لعرض نصوص قابلة للتعديل بصورة مباشرة.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_6.png
التمثيل المرئي لبرنامج السرعة (مرحلة Design Mode )
يَستخدم برنامج السرعة عنصر تحكم شريط التمرير العمودي والأفقي. طبعاً يختلف موضع هذا العنصر ضمن مربع الأدوات Toolbox تبعاً لاختلاف إصدار لغة فيجول بيسك المستخدم. ويؤدي وضع مؤشّر الفأرة فوق رمز شريط التمرير الأفقي دون النقر عليه إلى ظهور مستطيل أصفر يحمل الرسالة HscrollBar او VscrollBar داخله.
بهذه الطريقة تتعرف على رمز شريط التمرير في إطار مربع الأدوات.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_7.png
نفّذ فيجول بيسك ثم انقر الزر إلغاء الأمر في الإطار New Project في حال ظهوره لإغلاق هذا الإطار ثم اختر البند New Project من قائمة File للغة فيجول بيسك.
يستجيب فيجول بيسك بإظهار الإطار New Project.
اختر الرمز Standard EXE من ضمن الإطار New Project ثم انقر الزر موافق.
يستجيب فيجول بيسك بإنشاء مشروع جديد.
سنحفظ الآن المشروع الجديد الذي أنشأناه:
أنشئ الدليل C:\VB6\Speed
تحقق من اختيار النموذج Form1 ثم اختر البند Save Form1 As من قائمة File.
يستجيب فيجول بيسك بإظهار مربع الحوار Save File As.
استخدم مربع الحوار Save File As لحفظ النموذج باسم Speed.Frm في الدليل C:\VB6\Speed واختر البند Save Project As من قائمة File ثم استخدم مربع الحوار Save Project As لحفظ المشروع باسم Speed.vbp في الدليل نفسه.
تصميم شاشة البرنامج:
قم بعمل تصميم لشاشة البرنامج وذلك بوضع الادوات Objects المطلوبة كما في الصورة التالية :
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_8.png
ذكرت في الدرس السابق أن النقر المزدوج على رمز عنصر التحكم Object ضمن مربع الأدوات يؤدي إلى وضع هذا العنصر ضمن النموذج الحالي.
يستجيب فيجول بيسك بوضع عنصر التحكم في وسط النموذج الحالي. تستطيع بعد ذلك نقله إلى مكان آخر عن طريق سحبه بمؤشّر الفأرة. كما تستطيع تكبيره أو تصغيره بسحب المقابض التي تظهر حوله.
لتغيير خصائص عنصر التحكم تأكد من اختيار هذا العنصر على النموذج (أي توضّع المقابض حوله) ثم اختر البند Properties Windows من قائمة Viewاو اضغط مفتاح F4. أو تستطيع بدلاً من ذلك النقر بالزر الأيمن للفأرة على العنصر ثم اختيار البند Properties من القائمة الفرعية السريعة التي ظهرت.
يستجيب فيجول بيسك بإظهار إطار الخصائص Properties لعنصر التحكم المختار. تستطيع الآن تغيير خصائص هذا العنصر.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_9.png
ملاحظة :
تعرفنا حتى الآن على كيفية ضبط الخصائص من خلال نافذة الخصائص الخاصة بكل كائن وذلك في مرحلة التصميم (Design Mode). ولكن هناك طريقة اخرى يمكننا بها تغيير بعض خصائص الكائنات وذلك خلال مرحلة تنفيذ البرنامج (Run Mode)
لذلك سنقوم بضبط خاصية اثنين من اشرطة التمرير الافقية في مرحلة التنفيذ بحيث تأخذ نفس الخصائص التى قمنا بضبطها لشريط التمرير الافقي الأول الموجود في الجدول السابق.
كتابة نص برنامج السرعة :
اكتب النص التالي ضمن الإجراء cmdExit_Cilck() التابع للنموذج FrmSpeed:
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_10.png
ملاحظة :
لإدخال نص البرنامج للزر خروج انقر نقراً مزدوجاً على الزر خروج في مرحلة التصميم فيظهر إطار البرنامج للإجراء cmdExit_Cilck(). ويكون هذا الإجراء جاهزاً للتعديل من قبل المستخدم.
تأكد أن مربع السرد الواقع في الزاوية العليا اليسارية من إطار البرنامج يحوي البند cmdExit وأن المربع المجاور له يحوي البند Click.
احفظ المشروع باختيار البند Save Project من قائمة File التابعة لفيجول بيسك.
تنفيذ برنامج السرعة :
لم ننته بعد من كتابة نصوص برنامج السرعة لكن رغم ذلك سننفذ برنامج السرعة لرؤية نتائج ما تم انجازه حتى الآن.
ملاحظة :
من الافضل ان يقوم المبرمج بتنفيذ البرنامج كلما اضاف تعديلاً عليه فهذا يساعد في تتبع الاخطاء التى قد تحدث ويقلل من الوقت المستغرق في البحث عن الاخطاء.
نفّذ برنامج السرعة (ضغط مفتاح F5 أو اختيار البند Start من قائمة Run).
غيّر موضع مؤشّر شريط التمرير العمودي بواسطة الماوس.
كما تلاحظ لا يظهر أي شيء ضمن مربع النص والسبب في ذلك طبعاً هو أننا لم نكتب الكود اللازم لإظهار القيم الموافقة لتغيير مؤشّر شريط التمرير العمودي.
انقر الزر خروج لإنهاء البرنامج.
الخصائص Min و Max و Value لشريط التمرير
تشرح الفقرات التالية بعض خصائص شريط التمرير:
الخاصيتان Min و Max
يمثّل شريط التمرير مجموعة من القيم. تحدد الخاصية Min القيمة الدنيا، وتحدد الخاصية Max القيمة العليا. مثلاً، تأخذ الخاصية Min في الجدول السابق القيمة صفر، وتأخذ الخاصية Max القيمة 100، وهذا يعني أن شريط التمرير يمكن أن يعطي أية قيمة بين الصفر و 100.
اما في شريط التمرير الافقي فيعطي قيم بين الصفر و 250 (هذه الارقام خاصة بنظام الألوان في بيئة ويندوز)
الخاصية Value
تمثل الخاصية Value التابعة لشريط التمرير القيمة الراهنة لهذا الشريط وبالتالي فقد تكون أية قيمة صحيحة بين الرقم صفر والرقم 100 حسب مثالنا هذا. القيمة الافتراضية لهذه الخاصية هي الصفر وعند تنفيذ البرنامج يوضع مؤشّر شريط التمرير عند الموضع المرافق للخاصية Value (أي عند أقصى يمين شريط التمرير وهو الموضع المرافق للقيمة صفر للخاصية Value).
الآن وباعتبار أن السرعة الافتراضية يجب أن تكون 50 لهذا يجب إسناد القيمة 50 للخاصية Value التابعة لشريط التمرير وستجد عند تنفيذ البرنامج أن الموضع الافتراضي لمؤشّر شريط التمرير سيكون في وسطه (أي منتصف المسافة بين صفر و 100).
لاحظ أن الجدول السابق يطالبك بإسناد القيمة "50 كم/ الساعة" للخاصية Text التابعة لمربع النص. فعند تشغيل البرنامج، ستجد أن مربع النص يُظهر القيمة الابتدائية "50 كم/ الساعة" والمشابهة للموضع الراهن لمؤشّر شريط التمرير (Value = 50).
تركيز Focus لوحة المفاتيح
تستطيع ضغط المفتاح Tab من على لوحة المفاتيح أثناء عمل البرنامج لنقل التركيز من عنصر تحكم إلى آخر. وتستطيع تمييز عنصر التحكم الذي يمتلك التركيز بسهولة لأن ويندوز يعطي دلالة على ذلك (توضّع الإضاءة عنده أو يظهر حول عنوانه مستطيل منقط .. الخ).
فمثلاً يظهر مؤشّر وامض في مربع النص إذا كان التركيز موضوعاً عنده بينما يومض مؤشّر شريط التمرير
عندما يكون التركيز موضوعاً عنده. كما يظهر مستطيل منقط حول عنوان الزر خروج (مثلاً) إذا كان هذا الزر يمتلك التركيز…. وهكذا.
ما المقصود بأن عنصر تحكم ما يمتلك التركيز ؟ المقصود من ذلك هو أنك تستطيع استخدام لوحة المفاتيح للتحكم به عند امتلاكه للتركيز. جرب مثلاً ما يلي لرؤية ظاهرة تركيز لوحة المفاتيح:
نفّذ برنامج السرعة. (لاحظ أن مؤشّر شريط التمرير العمودي يكون في الوسط وهذا طبعاً بسبب إسناد القيمة 50 للخاصية Value التابعة لشريط التمرير).
اضغط المفتاح Tab في لوحة المفاتيح إلى أن يصل التركيز إلى شريط التمرير (ستجد أن مؤشّر شريط التمرير يُومض).
يمتلك شريط التمرير الآن التركيز استخدم مفتاحي الأسهم الأيمن والأيسر على لوحة المفاتيح لتحريك مؤشّر شريط التمرير. باعتبار أن شريط التمرير يمتلك تركيز لوحة المفاتيح فإن الضغط على مفتاحي الأسهم على لوحة المفاتيح يكافئ نقر زري السهمين الايسر والأيمن لشريط التمرير. جرب ضغط المفاتيح Home و End و PgUp و PgDn وراقب النتائج.
اضغط المفتاح Tab حتى يصل التركيز إلى الزر خروج ثم اضغط مفتاح Space أو مفتاح Enter. وهذا يكافئ نقر الزر خروج لإنهاء البرنامج.
لاحظ كم من العمليات تستطيع إنجازها بواسطة برنامج السرعة. تستطيع تبديل موضع مؤشّر شريط التمرير وتكبير أو تصغير إطار البرنامج (بسحب حواف الإطار) ونقل إطار البرنامج بسحب شريط عنوانه وإنجاز الكثير من مهام ويندوز القياسية الأخرى. الجميل في الموضوع أنه لا يلزم كتابة أي كود برمجي لإنجاز كل ذلك. ولعل ذلك من أهم محاسن كتابة برامج تحت بنية ويندوز.
فالمعالم القياسية لويندوز تكون مبرمجة أصلاً في برامجك ولست بحاجة كمستخدم ويندوز إلى الإلمام بكل المظاهر القياسية لويندوز حتى تتمكن من العمل بكفاءة وفق هذه البنية.
لاحظ عندما تضغط على المفتاح Tab كيفية تسلسل الانتقال بين الكائنات. يمكن التحكم في هذا التسلسل باستخدام خاصية تسمى TabIndex وتأخذ هذه الخاصية قيمة عددية تبدأ من الصفر حيث ان الكائن الذي يحمل هذا الرقم في الخاصية TabIndex سيكون التركيز Focus عليه عند بدء تشغيل البرنامج ثم يليه الكائن الذي يحمل الرقم التالي (ليس من الضروري بدء تسلسل الارقام من الصفر فيمكن اختيار اى رقم ولكن المهم هو تسلسل الترقيم يمكن استخدام 10-20-30 .... ) .
سنقوم الآن بتغيير خاصية TabIndex لجميع الكائنات على النموذج كالتالي :
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_11.png
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_12.png
نفذ البرنامج ولاحظ كيفية انتقال التركيز Focus من كائن الى آخر حسب الارقام التى تم تحديدها
وهذه الخاصية مهمة جداً عند البدء بتصميم برامج فعلية ليستخدمها الآخرون ويجب فهمها جيداً.
تحسين برنامج السرعة :
انقر نقرة مزدوجة على عنصر تحكم شريط التمرير العمودي ضمن النموذج لإظهار الإجراء VsbSpeed_Change(). تحقق بأنّ مربع السرد في الزاوية اليسرى العليا من إطار نص البرنامج يحمل العبارة النصية VsbSpeed وأنّ مربع السرد المجاور له يحمل العبارة النصية Change وبالتالي عند قراءتهما سوياً تنتج العبارة VsbSpeed_Change().
أدخل النص التالي ضمن الإجراء VsbSpeed_Change():
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_13.png
ينفذ الإجراء VsbSpeed_Change() (كما هو واضح من اسمه) عند تغيير موضع مؤشّر شريط التمرير. وبالتالي تتغير الخاصية Value تلقائياً تبعاً لذلك التغيير. فمثلاً تُصبح قيمة الخاصية Value مساوية الصفر عند وضع مؤشّر شريط التمرير عند أقصى يمين الشريط وذلك بسبب إسناد القيمة صفر إلى الخاصية Min.
يتوجب على مربع النص إظهار قيمة الموضع الجديد لمؤشّر شريط التمرير عند تغيير موقعه. أي بكلمة أخرى يلزمنا إسناد قيمة الخاصية Value لشريط التمرير إلى الخاصية Text لمربع النص وهذا هو دور العبارة التالية الكود البرمجي الذي تمت كتابته:
فمثلاً إذا كانت قيمة الخاصية Value لشريط التمرير تساوي 20 فقيمة الخاصية Text لمربع النص ستساوي 20 كم/ ساعة.
تتوقع الخاصية Text أن يُسند لها قيمة نصية (سلسلة كتابية) أما الخاصية Value فهي عبارة عن قيمة عددية. مما يعني أنّه يجب استخدام التابع الوظيفي Str() لتحويل القيمة العددية للخاصية Value إلى سلسلة كتابية. يُكتب ضمن قوسي التابع الوظيفي Str()، القيمة العددية المطلوب تحويلها إلى سلسلة كتابية، فمثلاً يُستخدم التابع Str(11) لتحويل العدد 11 إلى السلسلة الكتابية "11" . كما يُستخدم التابع Str(12345) لتحويل العدد 12345 إلى السلسلة الكتابية "12345".
وسنتطرق الى هذه المفاهيم بتفصيل اكثر عند دراسة انواع البيانات Data Typesفي لغات البرمجة.
ملاحظة :
عند تحويل القيمة الرقمية إلى قيمة نصية فإنها تفقد قيمتها الرقمية وتصبح كأي حرف آخر. طبعاً يوجد تابع وظيفي معاكس للوظيفة Str() وهو التابع Val()، الذي يحول القيمة النصية ("1234") إلى قيمة عددية (1234).
في حالتنا هذه يُطلب من الإجراء تحويل القيمة العددية VsbSpeed.Value إلى سلسلة كتابية ولهذا استخدمنا العبارة التالية: Str(hsbSpeed.Value)
وبالتالي فإذا فرضنا مثلاً أنّ الموضع الحالي لمؤشّر شريط التمرير يساوي 32
(hsbSpeed.Value = 32)
فيتم اسناد القيمة 32 كم/ ساعة للخاصية Text التابعة لمربع النص
والآن لنشاهد نتائج ما كتبناه:
احفظ المشروع باختيار Save Project من القائمة File.
نفّذ برنامج السرعة.
انقل مؤشّر شريط التمرير وستجد أنّ محتويات مربع النص تتغير تبعاً لموضع مؤشّر الشريط.
قم بانهاء برنامج السرعة بنقر الزر خروج.
تغيير محتويات مربع النص مع سحب مؤشّر شريط التمرير
أنهينا برنامج السرعة تقريباً ولكن بقيت مشكلة واحدة ينبغي حلها. وللتعرف على هذه المشكلة اتبع الخطوات التالية:
نفّذ برنامج السرعة.
جرّب سحب مؤشّر شريط التمرير (دون إفلاته) وستجد أنّ محتوى مربع النص لا يتغير أثناء عملية السحب وإنما يتغير فقط بعد تحرير المؤشّر.
كم سيكون جميلاً لو يترافق تغير محتوى مربع النص مع حركة مؤشّر شريط التمرير.
يُنفذ الإجراء VsbSpeed_Scroll() آلياً عند سحب مؤشّر شريط التمرير لهذا:
انقر نقرة مزدوجة على عنصر تحكم شريط التمرير العمودي ضمن النموذج لإظهار الإجراء VsbSpeed_Scroll() في مربع السرد الموجود في الزاوية اليسرى والعليا من إطار نص البرنامج ووجود عبارة النص Scroll في مربع السرد المجاور له.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_14.png
أدخل النص التالي في الإجراء VsbSpeed_Scroll():
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_15.png
يتسبب كود الإجراء هذا بتنفيذ الإجراء VsbSpeed_Change() الذي كتبناه مسبقاً مما يعني أنّ كود الإجراء VsbSpeed_Change() سينفذ عند سحب مؤشّر شريط التمرير الذي يعمل على إسناد الموقع الحالي لشريط التمرير إلى الخاصية Text لمربع النص دعنا نشاهد بأنفسنا أثر ما كتبناه:
احفظ المشروع باختيار Save Project من القائمة File لفيجول بيسك.
نفّذ برنامج السرعة.
اسحب مؤشّر شريط التمرير وتحقق أن محتويات مربع النص تتغير تبعاً لسحب مؤشّر شريط التمرير.
انقر الزر خروج لإنهاء برنامج السرعة.
ملاحظة :
ينفذ الإجراء VsbSpeed_Change() من ضمن الإجراء VsbSpeed_Scroll() كما يلي:
لاحظ عدم استخدام الأقواس بعد الكلمة VsbSpeed_Change أي عند استدعاء الإجراء VsbSpeed_Change().
سيؤدي استخدام القوسين بعد اسم الإجراء في مثل هذه الحالة إلى ظهور رسالة خطأ. وبالواقع يُظهر فيجول بيسك جزء البرنامج الذي يحمل الخطأ بلون أحمر وهي دلالة مرئية على وجود خطأ ضمن نص البرنامج.
ملاحظة :
يوضح برنامج السرعة كيف تتمكن من تشكيل واجهة مستخدم محكمة لإدخال الأعداد.
فبدلاً من إجبار المستخدم على إدخال الأعداد بين صفر و 100 يدوياً قدمنا للمستخدم شريط تمرير يمكّن المستخدم من إعطاء أي قيمة صحيحة ضمن المجال المسموح باستخدام شريط التمرير هذا والحصول على تغذية عكسية (أو تغذية راجعة Feedback وهي الاستجابة الناتجة عن مربع النص) عن مجال الأرقام المسموح بإدخالها.
ايضا يمكنك باستخدام اشرطة التمرير الافقية تغيير لون خلفية مربع النص ومزج الالوان معاُ حاول تغيير مؤشر شريط التمريرولاحظ كيف تتغير الالوان
ملاحظة :
الالوان في البرمجة قد يتم التعبير عنها باسم اللون مثلاً (Red – Blue – Black ….)
او باستخدام ارقام معينة حيث انه لكل لون رقم محدد
قمنا في بداية البرنامج بتغيير خصائص شريط التمرير الافقي الاول من خلال نافذة الخصائص بينما بقيت خصائص الشريطين الآخريين على قيمهما الافتراضية.
سنرى الآن كيف سنقوم بتغيير خصائصهما برمجيا اى في مرحلة تتنفيذ البرنامج
فعليا سيتم تغيير هذه الخصائص عند تحميل الفورم أي قبل ان نرى شاشة البرنامج هنا نعبر عن هذا الحدث بـ Load اى ان الكود اللازم لأداء هذه المهمة يجب وضعه في حدث Load الخاص بالفورم لذلك قم بالضغط المزدوج على الفورم FrmSpeed لاظهار نافذته البرمجية
تأكد من اختيار الحدث Load كما بالصورة التالية
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_16.png
لاضافة خاصية اثناء مرحلة التنفيذ نقوم بكتابة اسم الكائن ثم نضع نقطة ثم نكتب اسم الخاصية المراد تغييرها بدون استخدام اى مسافات وكما تلاحظ فانه بمجرد كتابة اسم الكائن ووضع نقطة ستظهر تلقائياُ قائمة منسدلة بالخصائص الممكن تغييرها برمجياُ لهذا الكائن كما بالصورة
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_17.png
مع ملاحظة انه ليس كل الخصائص الموجودة في نافذة الخصائص في مرحلى التصميم Design Mode يمكن تغييرها في مرحلة البرمجة Run Mode
وكما واضح من الصورة السابفة سيظهر في القائمة المنسدلة فقط الخصائص المسموح بتغييرها في مرحلة البرمجة وليس كل خصائص الكائن.
قم بكتابة هذه الاكواد في حدث تحميل الفورم Form Load
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_18.png
الأن قم بكتابة الاكواد التالية في الحدث Change لأشرطة التمرير الأفقية الثلاثة كما بالصورة التالية حيث ان هذا الأكواد وظيفتها تغيير اللون في خلقية صندوق النص
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_19.png
• قم بتغيير موضع مؤشّر شريط التمرير في أشرطة التمرير الثلاثة بحيث يأخذ قيماً مختلفة ولاحظ اللون الناتج.
• قم بسحب موضع مؤشّر شريط التمرير في أشرطة التمرير الثلاثة الى اقصى اليمين ولاحظ اللون الناتج.
• قم بسحب موضع مؤشّر شريط التمرير في أشرطة التمرير الثلاثة الى اقصى اليسار ولاحظ اللون الناتج.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_20.png
المرجع دار الكتب العلمية للنشر والتوزيع
تم شرح الدرس الرابع بحمد الله
وفي انتظار اسئلتكم واستفساراتكم
اختكم في الله
أزهارو
الدرس الرابـــــع
اولاً : اتمنى ان تكونوا قد طبقتم كل ما تم شرحه في الدرسين السابقين لان ما ساشرحه في هذا الدرس سيكون مكملاً لما تم شرحه سابقاً.
سنقوم في هذا الدرس إن شاء الله بكتابة برنامج جديد نتعرف من خلاله على مجموعة اخرى من عناصر تحكم لغة فيجول بيسك (Objects) مثل شريطي التمرير الأفقي والعمودي Scroll Bar ومربع النص Text Box وأزرار الأوامر Command Button.
ذكرت في الدرس السابق ان مرحلة كتابة البرنامج في فيجول بيسك تمر بثلاث خطوت أساسية هي :
- خطوة التصميم المرئي للبرنامج وتسمى بالتمثيل المرئي Visual Implementation.
- ضبط الخصائص Setting the Properties على مستوى المشروع Project والفورمز Forms و الادوات Controls او (العناصر) (Objects)
- خطوة كتابة نص البرنامج Code Programming.
لذا ستتعلم ايضاً في هذا الدرس كيف تضع هذه العناصر داخل برامجك وكيفية تغيير خصائصها وكيفية ربط النصوص البرمجية بها (أي ربطها ببرامج متعلقة بها).
تُقدم معظم البرامج معلومات إلى المستخدم وتتلقى منه معلومات أيضاً. تُدعى عملية تبادل المعلومات بين التطبيق وبين المستخدم بواجهة المستخدم User Interface. تَستخدم جميع برامج الويندوز عناصر التحكم Controls لتزويد المستخدم بواجهة سهلة ومفهومة (هذا من أهم أسباب شيوع النظام ويندوز). وستلاحظون مدى سهولة بناء واجهة استخدام جذابة في لغة فيجول بيسك.
برنامج السرعة
يوضح برنامج السرعة كيفية استخدام شريط التمرير للحصول على قيمة معينة من المستخدم.
يُفترض في برنامج السرعة إنجاز ما يلي:
لاحظوا الصورة التالية :
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_1.png
عند بدء تشغيل برنامج السرعة يُفترض أن يوضع مؤشّر شريط التمرير العمودي عند المركز (الموقع الافتراضي) وأن تظهر الرسالة "50 كم/ ساعة" (قيمة السرعة) ضمن مربع النص.
ينبغي على مربع النص إظهار التغير في السرعة عند تغيير موضع مؤشّر شريط التمرير العمودي. فمثلاً يجب إظهار القيمة صفر عندما يوضع المؤشّر عند أقصى اليمين أما عند وضعه عند أقصى اليسار فيجب إظهار القيمة 100.
ايضا سيكون هناك 3 اشرطة تمرير افقية للتحكم في لون خلفية مربع النص حيث سيتم مزج خليط من الالوان لتكوين لون واحد لخلفية مربع النص.
يؤدي نقر الزر خروج لإنهاء البرنامج.
عنصر تحكم شريط التمرير Scroll Bar
يستخدم شريط التمرير Scroll Bar بكثرة في برامج النوافذ Windows حيث انه عندما تختفي بعض المعلومات في النافذة يظهر الشريط فنستخدمه لعرض باقي المعلومات.
ويمكّنك استخدام هذا العنصر من تغيير قيمة معينة زيادة أو نقصان بوضع مؤشّر شريط التمرير عند موقع محدد منه بدلاً من كتابة القيمة.
لهذه الأداة نوعان :
شريط تمرير أفقي : HScrollBar
شريط تمرير عمودي : VScrollBar
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_2.png
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_3.png
ملاحظة:
يطلق على شريط التمرير اسم كائن Object او عنصر تحكم Control.
في معظم الأحوال يعتبر الكائن هو نفسه عنصر تحكم، لكن ليس دائماً فالنموذج Form هو كائن لكنه ليس عنصر تحكم. نستطيع استخدام كلمة كائن للدلالة على عنصر تحكم إذا كان هذا العنصر سيوضع في نموذج.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_4.png
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_5.png
صندوق النصوص :
ويستخدم لادخال القيم (على هيئة سلسلة رموز) وكذلك لعرض نصوص قابلة للتعديل بصورة مباشرة.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_6.png
التمثيل المرئي لبرنامج السرعة (مرحلة Design Mode )
يَستخدم برنامج السرعة عنصر تحكم شريط التمرير العمودي والأفقي. طبعاً يختلف موضع هذا العنصر ضمن مربع الأدوات Toolbox تبعاً لاختلاف إصدار لغة فيجول بيسك المستخدم. ويؤدي وضع مؤشّر الفأرة فوق رمز شريط التمرير الأفقي دون النقر عليه إلى ظهور مستطيل أصفر يحمل الرسالة HscrollBar او VscrollBar داخله.
بهذه الطريقة تتعرف على رمز شريط التمرير في إطار مربع الأدوات.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_7.png
نفّذ فيجول بيسك ثم انقر الزر إلغاء الأمر في الإطار New Project في حال ظهوره لإغلاق هذا الإطار ثم اختر البند New Project من قائمة File للغة فيجول بيسك.
يستجيب فيجول بيسك بإظهار الإطار New Project.
اختر الرمز Standard EXE من ضمن الإطار New Project ثم انقر الزر موافق.
يستجيب فيجول بيسك بإنشاء مشروع جديد.
سنحفظ الآن المشروع الجديد الذي أنشأناه:
أنشئ الدليل C:\VB6\Speed
تحقق من اختيار النموذج Form1 ثم اختر البند Save Form1 As من قائمة File.
يستجيب فيجول بيسك بإظهار مربع الحوار Save File As.
استخدم مربع الحوار Save File As لحفظ النموذج باسم Speed.Frm في الدليل C:\VB6\Speed واختر البند Save Project As من قائمة File ثم استخدم مربع الحوار Save Project As لحفظ المشروع باسم Speed.vbp في الدليل نفسه.
تصميم شاشة البرنامج:
قم بعمل تصميم لشاشة البرنامج وذلك بوضع الادوات Objects المطلوبة كما في الصورة التالية :
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_8.png
ذكرت في الدرس السابق أن النقر المزدوج على رمز عنصر التحكم Object ضمن مربع الأدوات يؤدي إلى وضع هذا العنصر ضمن النموذج الحالي.
يستجيب فيجول بيسك بوضع عنصر التحكم في وسط النموذج الحالي. تستطيع بعد ذلك نقله إلى مكان آخر عن طريق سحبه بمؤشّر الفأرة. كما تستطيع تكبيره أو تصغيره بسحب المقابض التي تظهر حوله.
لتغيير خصائص عنصر التحكم تأكد من اختيار هذا العنصر على النموذج (أي توضّع المقابض حوله) ثم اختر البند Properties Windows من قائمة Viewاو اضغط مفتاح F4. أو تستطيع بدلاً من ذلك النقر بالزر الأيمن للفأرة على العنصر ثم اختيار البند Properties من القائمة الفرعية السريعة التي ظهرت.
يستجيب فيجول بيسك بإظهار إطار الخصائص Properties لعنصر التحكم المختار. تستطيع الآن تغيير خصائص هذا العنصر.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_9.png
ملاحظة :
تعرفنا حتى الآن على كيفية ضبط الخصائص من خلال نافذة الخصائص الخاصة بكل كائن وذلك في مرحلة التصميم (Design Mode). ولكن هناك طريقة اخرى يمكننا بها تغيير بعض خصائص الكائنات وذلك خلال مرحلة تنفيذ البرنامج (Run Mode)
لذلك سنقوم بضبط خاصية اثنين من اشرطة التمرير الافقية في مرحلة التنفيذ بحيث تأخذ نفس الخصائص التى قمنا بضبطها لشريط التمرير الافقي الأول الموجود في الجدول السابق.
كتابة نص برنامج السرعة :
اكتب النص التالي ضمن الإجراء cmdExit_Cilck() التابع للنموذج FrmSpeed:
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_10.png
ملاحظة :
لإدخال نص البرنامج للزر خروج انقر نقراً مزدوجاً على الزر خروج في مرحلة التصميم فيظهر إطار البرنامج للإجراء cmdExit_Cilck(). ويكون هذا الإجراء جاهزاً للتعديل من قبل المستخدم.
تأكد أن مربع السرد الواقع في الزاوية العليا اليسارية من إطار البرنامج يحوي البند cmdExit وأن المربع المجاور له يحوي البند Click.
احفظ المشروع باختيار البند Save Project من قائمة File التابعة لفيجول بيسك.
تنفيذ برنامج السرعة :
لم ننته بعد من كتابة نصوص برنامج السرعة لكن رغم ذلك سننفذ برنامج السرعة لرؤية نتائج ما تم انجازه حتى الآن.
ملاحظة :
من الافضل ان يقوم المبرمج بتنفيذ البرنامج كلما اضاف تعديلاً عليه فهذا يساعد في تتبع الاخطاء التى قد تحدث ويقلل من الوقت المستغرق في البحث عن الاخطاء.
نفّذ برنامج السرعة (ضغط مفتاح F5 أو اختيار البند Start من قائمة Run).
غيّر موضع مؤشّر شريط التمرير العمودي بواسطة الماوس.
كما تلاحظ لا يظهر أي شيء ضمن مربع النص والسبب في ذلك طبعاً هو أننا لم نكتب الكود اللازم لإظهار القيم الموافقة لتغيير مؤشّر شريط التمرير العمودي.
انقر الزر خروج لإنهاء البرنامج.
الخصائص Min و Max و Value لشريط التمرير
تشرح الفقرات التالية بعض خصائص شريط التمرير:
الخاصيتان Min و Max
يمثّل شريط التمرير مجموعة من القيم. تحدد الخاصية Min القيمة الدنيا، وتحدد الخاصية Max القيمة العليا. مثلاً، تأخذ الخاصية Min في الجدول السابق القيمة صفر، وتأخذ الخاصية Max القيمة 100، وهذا يعني أن شريط التمرير يمكن أن يعطي أية قيمة بين الصفر و 100.
اما في شريط التمرير الافقي فيعطي قيم بين الصفر و 250 (هذه الارقام خاصة بنظام الألوان في بيئة ويندوز)
الخاصية Value
تمثل الخاصية Value التابعة لشريط التمرير القيمة الراهنة لهذا الشريط وبالتالي فقد تكون أية قيمة صحيحة بين الرقم صفر والرقم 100 حسب مثالنا هذا. القيمة الافتراضية لهذه الخاصية هي الصفر وعند تنفيذ البرنامج يوضع مؤشّر شريط التمرير عند الموضع المرافق للخاصية Value (أي عند أقصى يمين شريط التمرير وهو الموضع المرافق للقيمة صفر للخاصية Value).
الآن وباعتبار أن السرعة الافتراضية يجب أن تكون 50 لهذا يجب إسناد القيمة 50 للخاصية Value التابعة لشريط التمرير وستجد عند تنفيذ البرنامج أن الموضع الافتراضي لمؤشّر شريط التمرير سيكون في وسطه (أي منتصف المسافة بين صفر و 100).
لاحظ أن الجدول السابق يطالبك بإسناد القيمة "50 كم/ الساعة" للخاصية Text التابعة لمربع النص. فعند تشغيل البرنامج، ستجد أن مربع النص يُظهر القيمة الابتدائية "50 كم/ الساعة" والمشابهة للموضع الراهن لمؤشّر شريط التمرير (Value = 50).
تركيز Focus لوحة المفاتيح
تستطيع ضغط المفتاح Tab من على لوحة المفاتيح أثناء عمل البرنامج لنقل التركيز من عنصر تحكم إلى آخر. وتستطيع تمييز عنصر التحكم الذي يمتلك التركيز بسهولة لأن ويندوز يعطي دلالة على ذلك (توضّع الإضاءة عنده أو يظهر حول عنوانه مستطيل منقط .. الخ).
فمثلاً يظهر مؤشّر وامض في مربع النص إذا كان التركيز موضوعاً عنده بينما يومض مؤشّر شريط التمرير
عندما يكون التركيز موضوعاً عنده. كما يظهر مستطيل منقط حول عنوان الزر خروج (مثلاً) إذا كان هذا الزر يمتلك التركيز…. وهكذا.
ما المقصود بأن عنصر تحكم ما يمتلك التركيز ؟ المقصود من ذلك هو أنك تستطيع استخدام لوحة المفاتيح للتحكم به عند امتلاكه للتركيز. جرب مثلاً ما يلي لرؤية ظاهرة تركيز لوحة المفاتيح:
نفّذ برنامج السرعة. (لاحظ أن مؤشّر شريط التمرير العمودي يكون في الوسط وهذا طبعاً بسبب إسناد القيمة 50 للخاصية Value التابعة لشريط التمرير).
اضغط المفتاح Tab في لوحة المفاتيح إلى أن يصل التركيز إلى شريط التمرير (ستجد أن مؤشّر شريط التمرير يُومض).
يمتلك شريط التمرير الآن التركيز استخدم مفتاحي الأسهم الأيمن والأيسر على لوحة المفاتيح لتحريك مؤشّر شريط التمرير. باعتبار أن شريط التمرير يمتلك تركيز لوحة المفاتيح فإن الضغط على مفتاحي الأسهم على لوحة المفاتيح يكافئ نقر زري السهمين الايسر والأيمن لشريط التمرير. جرب ضغط المفاتيح Home و End و PgUp و PgDn وراقب النتائج.
اضغط المفتاح Tab حتى يصل التركيز إلى الزر خروج ثم اضغط مفتاح Space أو مفتاح Enter. وهذا يكافئ نقر الزر خروج لإنهاء البرنامج.
لاحظ كم من العمليات تستطيع إنجازها بواسطة برنامج السرعة. تستطيع تبديل موضع مؤشّر شريط التمرير وتكبير أو تصغير إطار البرنامج (بسحب حواف الإطار) ونقل إطار البرنامج بسحب شريط عنوانه وإنجاز الكثير من مهام ويندوز القياسية الأخرى. الجميل في الموضوع أنه لا يلزم كتابة أي كود برمجي لإنجاز كل ذلك. ولعل ذلك من أهم محاسن كتابة برامج تحت بنية ويندوز.
فالمعالم القياسية لويندوز تكون مبرمجة أصلاً في برامجك ولست بحاجة كمستخدم ويندوز إلى الإلمام بكل المظاهر القياسية لويندوز حتى تتمكن من العمل بكفاءة وفق هذه البنية.
لاحظ عندما تضغط على المفتاح Tab كيفية تسلسل الانتقال بين الكائنات. يمكن التحكم في هذا التسلسل باستخدام خاصية تسمى TabIndex وتأخذ هذه الخاصية قيمة عددية تبدأ من الصفر حيث ان الكائن الذي يحمل هذا الرقم في الخاصية TabIndex سيكون التركيز Focus عليه عند بدء تشغيل البرنامج ثم يليه الكائن الذي يحمل الرقم التالي (ليس من الضروري بدء تسلسل الارقام من الصفر فيمكن اختيار اى رقم ولكن المهم هو تسلسل الترقيم يمكن استخدام 10-20-30 .... ) .
سنقوم الآن بتغيير خاصية TabIndex لجميع الكائنات على النموذج كالتالي :
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_11.png
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_12.png
نفذ البرنامج ولاحظ كيفية انتقال التركيز Focus من كائن الى آخر حسب الارقام التى تم تحديدها
وهذه الخاصية مهمة جداً عند البدء بتصميم برامج فعلية ليستخدمها الآخرون ويجب فهمها جيداً.
تحسين برنامج السرعة :
انقر نقرة مزدوجة على عنصر تحكم شريط التمرير العمودي ضمن النموذج لإظهار الإجراء VsbSpeed_Change(). تحقق بأنّ مربع السرد في الزاوية اليسرى العليا من إطار نص البرنامج يحمل العبارة النصية VsbSpeed وأنّ مربع السرد المجاور له يحمل العبارة النصية Change وبالتالي عند قراءتهما سوياً تنتج العبارة VsbSpeed_Change().
أدخل النص التالي ضمن الإجراء VsbSpeed_Change():
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_13.png
ينفذ الإجراء VsbSpeed_Change() (كما هو واضح من اسمه) عند تغيير موضع مؤشّر شريط التمرير. وبالتالي تتغير الخاصية Value تلقائياً تبعاً لذلك التغيير. فمثلاً تُصبح قيمة الخاصية Value مساوية الصفر عند وضع مؤشّر شريط التمرير عند أقصى يمين الشريط وذلك بسبب إسناد القيمة صفر إلى الخاصية Min.
يتوجب على مربع النص إظهار قيمة الموضع الجديد لمؤشّر شريط التمرير عند تغيير موقعه. أي بكلمة أخرى يلزمنا إسناد قيمة الخاصية Value لشريط التمرير إلى الخاصية Text لمربع النص وهذا هو دور العبارة التالية الكود البرمجي الذي تمت كتابته:
فمثلاً إذا كانت قيمة الخاصية Value لشريط التمرير تساوي 20 فقيمة الخاصية Text لمربع النص ستساوي 20 كم/ ساعة.
تتوقع الخاصية Text أن يُسند لها قيمة نصية (سلسلة كتابية) أما الخاصية Value فهي عبارة عن قيمة عددية. مما يعني أنّه يجب استخدام التابع الوظيفي Str() لتحويل القيمة العددية للخاصية Value إلى سلسلة كتابية. يُكتب ضمن قوسي التابع الوظيفي Str()، القيمة العددية المطلوب تحويلها إلى سلسلة كتابية، فمثلاً يُستخدم التابع Str(11) لتحويل العدد 11 إلى السلسلة الكتابية "11" . كما يُستخدم التابع Str(12345) لتحويل العدد 12345 إلى السلسلة الكتابية "12345".
وسنتطرق الى هذه المفاهيم بتفصيل اكثر عند دراسة انواع البيانات Data Typesفي لغات البرمجة.
ملاحظة :
عند تحويل القيمة الرقمية إلى قيمة نصية فإنها تفقد قيمتها الرقمية وتصبح كأي حرف آخر. طبعاً يوجد تابع وظيفي معاكس للوظيفة Str() وهو التابع Val()، الذي يحول القيمة النصية ("1234") إلى قيمة عددية (1234).
في حالتنا هذه يُطلب من الإجراء تحويل القيمة العددية VsbSpeed.Value إلى سلسلة كتابية ولهذا استخدمنا العبارة التالية: Str(hsbSpeed.Value)
وبالتالي فإذا فرضنا مثلاً أنّ الموضع الحالي لمؤشّر شريط التمرير يساوي 32
(hsbSpeed.Value = 32)
فيتم اسناد القيمة 32 كم/ ساعة للخاصية Text التابعة لمربع النص
والآن لنشاهد نتائج ما كتبناه:
احفظ المشروع باختيار Save Project من القائمة File.
نفّذ برنامج السرعة.
انقل مؤشّر شريط التمرير وستجد أنّ محتويات مربع النص تتغير تبعاً لموضع مؤشّر الشريط.
قم بانهاء برنامج السرعة بنقر الزر خروج.
تغيير محتويات مربع النص مع سحب مؤشّر شريط التمرير
أنهينا برنامج السرعة تقريباً ولكن بقيت مشكلة واحدة ينبغي حلها. وللتعرف على هذه المشكلة اتبع الخطوات التالية:
نفّذ برنامج السرعة.
جرّب سحب مؤشّر شريط التمرير (دون إفلاته) وستجد أنّ محتوى مربع النص لا يتغير أثناء عملية السحب وإنما يتغير فقط بعد تحرير المؤشّر.
كم سيكون جميلاً لو يترافق تغير محتوى مربع النص مع حركة مؤشّر شريط التمرير.
يُنفذ الإجراء VsbSpeed_Scroll() آلياً عند سحب مؤشّر شريط التمرير لهذا:
انقر نقرة مزدوجة على عنصر تحكم شريط التمرير العمودي ضمن النموذج لإظهار الإجراء VsbSpeed_Scroll() في مربع السرد الموجود في الزاوية اليسرى والعليا من إطار نص البرنامج ووجود عبارة النص Scroll في مربع السرد المجاور له.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_14.png
أدخل النص التالي في الإجراء VsbSpeed_Scroll():
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_15.png
يتسبب كود الإجراء هذا بتنفيذ الإجراء VsbSpeed_Change() الذي كتبناه مسبقاً مما يعني أنّ كود الإجراء VsbSpeed_Change() سينفذ عند سحب مؤشّر شريط التمرير الذي يعمل على إسناد الموقع الحالي لشريط التمرير إلى الخاصية Text لمربع النص دعنا نشاهد بأنفسنا أثر ما كتبناه:
احفظ المشروع باختيار Save Project من القائمة File لفيجول بيسك.
نفّذ برنامج السرعة.
اسحب مؤشّر شريط التمرير وتحقق أن محتويات مربع النص تتغير تبعاً لسحب مؤشّر شريط التمرير.
انقر الزر خروج لإنهاء برنامج السرعة.
ملاحظة :
ينفذ الإجراء VsbSpeed_Change() من ضمن الإجراء VsbSpeed_Scroll() كما يلي:
لاحظ عدم استخدام الأقواس بعد الكلمة VsbSpeed_Change أي عند استدعاء الإجراء VsbSpeed_Change().
سيؤدي استخدام القوسين بعد اسم الإجراء في مثل هذه الحالة إلى ظهور رسالة خطأ. وبالواقع يُظهر فيجول بيسك جزء البرنامج الذي يحمل الخطأ بلون أحمر وهي دلالة مرئية على وجود خطأ ضمن نص البرنامج.
ملاحظة :
يوضح برنامج السرعة كيف تتمكن من تشكيل واجهة مستخدم محكمة لإدخال الأعداد.
فبدلاً من إجبار المستخدم على إدخال الأعداد بين صفر و 100 يدوياً قدمنا للمستخدم شريط تمرير يمكّن المستخدم من إعطاء أي قيمة صحيحة ضمن المجال المسموح باستخدام شريط التمرير هذا والحصول على تغذية عكسية (أو تغذية راجعة Feedback وهي الاستجابة الناتجة عن مربع النص) عن مجال الأرقام المسموح بإدخالها.
ايضا يمكنك باستخدام اشرطة التمرير الافقية تغيير لون خلفية مربع النص ومزج الالوان معاُ حاول تغيير مؤشر شريط التمريرولاحظ كيف تتغير الالوان
ملاحظة :
الالوان في البرمجة قد يتم التعبير عنها باسم اللون مثلاً (Red – Blue – Black ….)
او باستخدام ارقام معينة حيث انه لكل لون رقم محدد
قمنا في بداية البرنامج بتغيير خصائص شريط التمرير الافقي الاول من خلال نافذة الخصائص بينما بقيت خصائص الشريطين الآخريين على قيمهما الافتراضية.
سنرى الآن كيف سنقوم بتغيير خصائصهما برمجيا اى في مرحلة تتنفيذ البرنامج
فعليا سيتم تغيير هذه الخصائص عند تحميل الفورم أي قبل ان نرى شاشة البرنامج هنا نعبر عن هذا الحدث بـ Load اى ان الكود اللازم لأداء هذه المهمة يجب وضعه في حدث Load الخاص بالفورم لذلك قم بالضغط المزدوج على الفورم FrmSpeed لاظهار نافذته البرمجية
تأكد من اختيار الحدث Load كما بالصورة التالية
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_16.png
لاضافة خاصية اثناء مرحلة التنفيذ نقوم بكتابة اسم الكائن ثم نضع نقطة ثم نكتب اسم الخاصية المراد تغييرها بدون استخدام اى مسافات وكما تلاحظ فانه بمجرد كتابة اسم الكائن ووضع نقطة ستظهر تلقائياُ قائمة منسدلة بالخصائص الممكن تغييرها برمجياُ لهذا الكائن كما بالصورة
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_17.png
مع ملاحظة انه ليس كل الخصائص الموجودة في نافذة الخصائص في مرحلى التصميم Design Mode يمكن تغييرها في مرحلة البرمجة Run Mode
وكما واضح من الصورة السابفة سيظهر في القائمة المنسدلة فقط الخصائص المسموح بتغييرها في مرحلة البرمجة وليس كل خصائص الكائن.
قم بكتابة هذه الاكواد في حدث تحميل الفورم Form Load
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_18.png
الأن قم بكتابة الاكواد التالية في الحدث Change لأشرطة التمرير الأفقية الثلاثة كما بالصورة التالية حيث ان هذا الأكواد وظيفتها تغيير اللون في خلقية صندوق النص
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_19.png
• قم بتغيير موضع مؤشّر شريط التمرير في أشرطة التمرير الثلاثة بحيث يأخذ قيماً مختلفة ولاحظ اللون الناتج.
• قم بسحب موضع مؤشّر شريط التمرير في أشرطة التمرير الثلاثة الى اقصى اليمين ولاحظ اللون الناتج.
• قم بسحب موضع مؤشّر شريط التمرير في أشرطة التمرير الثلاثة الى اقصى اليسار ولاحظ اللون الناتج.
http://bb.domaindlx.com/programmerazhar/ABSA/4/VB4_20.png
المرجع دار الكتب العلمية للنشر والتوزيع
تم شرح الدرس الرابع بحمد الله
وفي انتظار اسئلتكم واستفساراتكم
اختكم في الله
أزهارو