مثالی ديگر: استفاده از Option Buttonها

همانطور که قبلاً نيز ذکر شد، هرگاه بخواهيم کاربر (User) از بين چند مورد، يک و فقط يک مورد را انتخاب کند (مثلاً سؤال چهار گزينه ای و ...) از کنترل Option Button استفاده می کنيم.

کنترل مذکور (مانند CheckBoxها) دارای مشخصه ای به نام Value می باشد که اگر مقدار آن برابر True باشد، انتخاب شده و در صورتی که برابر False باشد، انتخاب نشده خواهد بود. بنابراين اگر برروی فرمی مثلاً دو OptionButton قرار دهيم، مسلماً اگر مقدار Value از يکی را True کنيم، به طور خودکار مقدار Value برای ديگری False خواهد شد.زيرا فقط يکی از OptionBotton ها را می توان انتخاب کرد.

حال اگر بخواهيم OptionButtonها را روی يک فرم به صورت موضوعی دسته بندی کنيم و از هر دسته بتوانيم يکی را انتخاب کنيم، بايد به تعداد دسته ها، کنترل Frame به شکل  برروی فرم قرار دهيم و آنگاه OpiontButtonها را بر روی Frameها (نه با دابل کليک بلکه با انتخاب کنترل OptionButton و قرار دادن آن بوسيله Drag & Drop روی Frame) قرار می دهيم و سپس می توان Caption مربوط به Frameها (آن چيزی که به عنوان تيتر در بالای هر فريم نوشته می شود) و OptionButtonها (آن چيزی که جلوی هر Option Button برای معرفی آن نوشته می شود) را به دلخواه تغيير داد.

يک Label به نام lblDisplay و دو فريم به نامهای fraProcessor و fraOS بر روی صفحه قرار می دهيم. بر روی fraProcessor (و بوسيله انتخاب کنترل و Drag & Drop بر روی فريم) ، سه OptionButton به نامهای واحد optProcessor و با Captionهای Pentium، Pentium II و Pentium III قرار می دهيم. همچنين بر روی fraOS نيز سه OptionButton ديگر به نامهای واحد optOS و با Captionهای Windows98، Windows2000 و WindowsNT قرار می دهيم. (توجه داريم که در اينصورت دو Control Array به نامهای optProcessor و optOS ساخته ايم).

حال کدهای زير را در يونيت اين فرم می نويسيم:

Option Explicit

Dim proc As string

Dim os As string

 

Private Sub Clicked ( )

          lblDisplay = “You select” + proc + “and” + os

End Sub

 

Private Sub Form1_load ( )

          optProcessor(Ø).Value = True

          optOS(Ø).Value = True

End Sub

 

Private Sub optOS_Click (Index As Integer)

          os = optOS(Index).Caption

          Call Clicked

End Sub

 

Private Sub optProcessor_Click (Index As Integer)

          proc = optProcessor(Index).Caption

          Call Clicked

End Sub

توجه داريم که:

  1. روال clicked در برنامه فوق هرگاه فراخوانی شود پيغام مناسب را در lblDisplay نمايش خواهد داد.

  2. رويداد load برای يک فرم بلافاصله پس از load شدن آن فرم روی می دهد. در Event Procedure مربوط به رويداد load از Form1 در برنامه فوق، دستور داده ايم که اولين OptionButton هر فريم (با انديس برابر صفر) را انتخاب شده نمايد.

  3. در رويدادهای Click مربوط به آرايه های optOS و optProcessor دستور داده ايم که مقدار Caption هر OptionButtonای که کليک شده را (توسط مثلاً optOS(Index).Caption ) در متغيرهای os و proc قرار دهد و سپس روال Clicked که برای نمايش بر روی label بود را فراخوانی نمايد.