تزويد المستخدمين بعناصر تحكم للاختيار من بينها
تحتاج معظم التطبيقات إلى تزويد المستخدم بخيارات، مثل خيار "نعم/لا" البسيط، أو الاختيار من قائمة تضم مئات الاحتمالات. يتضمن Visual Basic عدة عناصر تحكم قياسية لتوفير التحديدات. ويلخص الجدول التالي عناصر التحكم هذه واستخداماتها.
حدد خيارًا واحدًا باستخدام CheckBox
يشير CheckBox إلى ما إذا تم تحديد حالة معينة (تشغيل) أو مسحها (إيقاف). يوفر استخدام CheckBox في أحد التطبيقات للمستخدم خيار "صواب/خطأ" أو "نعم/لا". نظرًا لأن CheckBoxes تعمل بشكل مستقل عن بعضها البعض، يمكن للمستخدمين تحديد العدد الذي يريدونه من CheckBoxes في نفس الوقت. على سبيل المثال، في الشكل 3.9، يمكن تحديد كل من الخط الغامق والمائل.
تطبيق CheckBox
يستخدم هذا المثال CheckBox لتحديد ما إذا كان يجب عرض النص بخط عادي أم بخط مائل. للحصول على نسخة صالحة للعمل من هذا المثال، راجع Check.frm في مثال التطبيق Controls.vbp. كما هو موضح في الشكل 3.10، يحتوي هذا التطبيق على TextBox، وLabel، وCommandButton، وCheckboxes.
يسرد الجدول التالي إعدادات الخصائص للكائنات الموجودة في التطبيق.
عند تحديد غامق أو مائل، يتم تعيين خاصية القيمة لـ CheckBox على 1، وعلى 0 عند عدم تحديدها. القيمة الافتراضية هي 0، لذا ما لم تقم بتغيير خاصية القيمة، فلن يتم تحديد CheckBox عند عرضه لأول مرة. يمكنك استخدام الثوابت vbChecked وvbUnchecked لتمثيل القيمتين 1 و0.
حدث في تطبيق خانة الاختيار
عند النقر فوق CheckBox، يقع حدث النقر الخاص بـ CheckBox. يختبر إجراء الحدث هذا ما إذا كان CheckBox محددًا (أي ما إذا كانت القيمة=vbChecked). إذا تم تحديده، فسيتم تحويل النص إلى غامق أو مائل عن طريق تعيين خاصية غامق أو مائل لكائن الخط الذي يتم إرجاعه بواسطة خاصية الخط الخاصة بـ TextBox.
PRivateSubchkBold_Click()
IfChkBold.Value=vbCheckedThen 'إذا تم تحديده.
txtDisplay.Font.Bold=صحيح
آخر "إذا لم يتم تحديده.
txtDisplay.Font.Bold=False
EndIf
EndSub
PrivateSubchkItalic_Click()
IfChkItalic.Value=vbCheckedThen 'إذا تم تحديده.
txtDisplay.Font.Italic=صحيح
آخر "إذا لم يتم تحديده.
txtDisplay.Font.Italic=False
EndIf
EndSub
خيارات المجموعة باستخدام أزرار الخيارات
تمثل أزرار الخيارات مجموعة من خيارين أو أكثر يتم منحها للمستخدم. ومع ذلك، على عكس CheckBox، تعمل أزرار الخيارات دائمًا كجزء من مجموعة؛ وبالتالي، يؤدي تحديد زر خيار إلى مسح الأزرار الأخرى في المجموعة على الفور. حدد مجموعة أزرار خيار تخبر المستخدم، "هذه مجموعة من الاختيارات، اختر واحدًا وواحدًا فقط."
على سبيل المثال، في مجموعة أزرار الخيارات الموضحة في الشكل 3.11، يمكن للمستخدم تحديد واحد فقط من أزرار الخيارات الثلاثة.
إنشاء مجموعة أزرار خيار
كافة أزرار الخيارات الموضوعة مباشرة في نموذج (أي، ليس في إطار أو PictureBox) تشكل مجموعة. إذا كنت تريد إنشاء مجموعات أزرار خيارات أخرى، فيجب عليك وضع بعضها في إطار أو PictureBox.
تشكل كافة أزرار الخيارات الموجودة في إطار معين مجموعة منفصلة، كما هو الحال مع جميع أزرار الخيارات الموجودة في PictureBox. عند استخدام هذه الطريقة لإنشاء مجموعة مستقلة، يجب عليك أولاً رسم إطار أو PictureBox، ثم رسم أزرار الخيارات بداخله. يوضح الشكل 3.12 نموذجًا يحتوي على مجموعتين من أزرار الخيارات.
بعد رسم مجموعة من أزرار الخيارات في الإطار، يمكن للمستخدم تحديد زر خيار واحد فقط داخل المجموعة. لتجميع عناصر التحكم في إطار، اتبع الخطوات التالية:
1. حدد عنصر تحكم الإطار في "مربع الأدوات" وارسم الإطار على النموذج.
2. حدد عنصر التحكم OptionButton في "Toolbox" وارسم عنصر التحكم في الإطار.
3. إذا كنت تريد أيضًا إضافة أزرار الخيارات إلى الإطار، كرر الخطوة 2. ارسم الإطار أولاً، ثم ارسم كل عنصر تحكم على الإطار، بحيث تتحرك عناصر التحكم معًا عند تحريك الإطار. إذا قمت بنقل عنصر تحكم موجود إلى الإطار، فلن يتحرك عنصر التحكم مع الإطار.
لاحظ أنه إذا قمت بتجميع عناصر التحكم الموجودة في إطار، فيمكنك تحديد عناصر التحكم هذه ثم قصها ولصقها في الإطار أو عنصر تحكم الصورة.
حاوية التحكم
عندما يكون عنصر التحكم كائنًا مستقلاً، يكون هناك نوع من العلاقة بين الأصل والطفل بين النموذج وعنصر التحكم. يوضح الشكل 3.12 كيف يمكن احتواء أزرار الخيارات داخل نموذج أو عنصر تحكم الإطار.
لفهم مفهوم الحاويات، تخيل أولاً أن كافة عناصر التحكم هي عناصر فرعية للشكل الذي توجد فيه. في الواقع، تدعم معظم عناصر التحكم الخاصية الأصل للقراءة فقط، والتي تكون قيمتها هي النموذج الذي يوجد به عنصر التحكم. كطفل، يحدد عنصر التحكم موضعه في النموذج الأصلي. الخاصية Left والخاصية Top لعنصر التحكم مرتبطة بالنموذج الأصلي، ولا يمكن لعنصر التحكم تجاوز حدود النموذج الأصلي. عند نقل الحاوية، يتم نقل عنصر التحكم أيضًا، بحيث يظل الموضع النسبي لعنصر التحكم والحاوية بدون تغيير (أي أن الخاصية Left والخاصية Top لعنصر التحكم تظل دون تغيير).
تحديد أو تعطيل أزرار الخيارات
يمكن تحديد زر خيار بالطرق التالية:
1. انقر فوق زر الخيار بالماوس أثناء وقت التشغيل.
2. استخدم المفتاح Tab لتحديد موقع مجموعة أزرار الخيار، ثم استخدم مفاتيح الأسهم (مفاتيح الأسهم) لتحديد موقع زر الخيار داخل المجموعة.
3. قم بتعيين خاصية القيمة الخاصة بها على True باستخدام الكود: optChoice.Value=True
4. استخدم مفتاح الاختصار المحدد في عنوان الملصق.
5. لجعل الزر هو الزر الافتراضي في مجموعة أزرار الخيارات، ما عليك سوى تعيين خاصية القيمة الخاصة به إلى True في وقت التصميم. ويظل محددًا حتى يحدد المستخدم زر خيار مختلف أو يغيره باستخدام الكود.
لتعطيل زر خيار، قم بتعيين خاصية Enabled الخاصة به إلى False. عند تشغيل البرنامج، إذا تحول زر الخيار هذا إلى اللون الرمادي، فهذا يعني أنه لا يمكن تحديد زر الخيار هذا.
تطبيق الخيارات
يستخدم النموذج الموضح في الشكل 3.13 أزرار الخيارات لتحديد نوع المعالج ونظام التشغيل للكمبيوتر. عندما يحدد المستخدم زر خيار داخل المجموعة، يتغير عنوان التسمية ليعكس التحديد الحالي. للحصول على نسخة صالحة للعمل من هذا المثال، راجع Options.frm في مثال التطبيق Controls.vbp.
يسرد الجدول التالي إعدادات خصائص الكائن في التطبيق.
الأحداث في تطبيق الخيارات
يستجيب تطبيق الخيارات للأحداث كما يلي:
تقوم أحداث النقر لأزرار الخيارات الثلاثة الأولى بتعيين وصف مطابق لمتغير السلسلة على مستوى النموذج strComputer.
تقوم أحداث النقر لزري الخيار الأخيرين بتعيين وصف مناظر للمتغير الثاني على مستوى النموذج strSystem.
مفتاح هذه الطريقة هو استخدام هذين المتغيرين على مستوى النموذج، strComputer وstrSystem. يحتوي هذان المتغيران على قيم سلسلة مختلفة، ويعتمد التحديد النهائي لزر الخيار على هاتين القيمتين.
في كل مرة يتم فيها تحديد زر خيار جديد، يقوم رمز حدث Click الخاص به بتحديث قيمة المتغير المقابل.
PrivateSubopt586_Click()
strComputer=بنتيوم
CallDisplayCaption
EndSub
ثم يقوم بعد ذلك باستدعاء إجراء يسمى DisplayCaption، والذي يقوم بربط المتغيرين وتغيير خاصية التسمية التوضيحية الخاصة بالتسمية.
SubDisplayCaption()
lblDisplay.Caption=Youselecteda&
_strComputer&running&strSystem
EndSub
يتم استخدام الروتين الفرعي لأن عملية تغيير خاصية Caption هي في الأساس نفس أزرار الخيارات الخمسة، فيما عدا أن قيمة المتغير تختلف وفقًا للحالة. يؤدي هذا إلى تجنب تكرار نفس الكود في كل حدث Click.
تمت مناقشة تفاصيل المتغيرات والعمليات الفرعية في الفصل الخامس، "أساسيات البرمجة".
باستخدام ListBox وComboBox
يوفر ListBox وComboBox للمستخدمين الاختيارات. افتراضيًا، يتم عرض الخيارات في عمود رأسي واحد، ولكن يمكن أيضًا تعيينها إلى أعمدة متعددة. إذا تجاوز عدد العناصر العدد الذي يمكن لـ ComboBox أو ListBox عرضه، فسيظهر شريط التمرير تلقائيًا في عنصر التحكم. يمكن للمستخدم بعد ذلك التمرير لأعلى ولأسفل ولليسار ولليمين خلال القائمة. يوضح الشكل 3.14 ListBox ذو عمود واحد.
يحتوي ComboBox على وظائف كل من TextBox وListBox. يسمح عنصر التحكم هذا للمستخدم بإجراء التحديدات عن طريق كتابة النص أو تحديد العناصر في القائمة. يوضح الشكل 3.15 مربع تحرير وسرد.
على عكس عناصر التحكم الأخرى التي تحتوي على قيمة واحدة، مثل خاصية التسمية التوضيحية أو خاصية النص في TextBox، يحتوي ListBox وComboBox على قيم متعددة أو مجموعات من القيم. استخدم الطرق المضمنة لإضافة القيم وحذفها واستمرارها في المجموعة في وقت التشغيل. لإضافة عدة عناصر إلى ListBox المسمى List1، يكون الرمز كما يلي: List1.AddItemParis
List1.AddItemNewYork
List1.AddItemSanFrancisco
تعد ListBox وComboBox من الطرق الفعالة لتزويد المستخدمين بعدد كبير من الخيارات في مساحة محدودة.
لمزيد من المعلومات حول عناصر التحكم ListBox وComboBox، راجع الفصل 7، "استخدام عناصر التحكم القياسية الخاصة بـ Visual Basic."
->