為用戶提供選擇的控件
大多數應用程序需要向用戶提供選擇,如簡單的“Yes/No”選項、或者從包含成百個可能性的列表中進行選擇。VisualBasic包含幾種用于提供選擇的標準控件。下列表格總結了這些控件及其用途。
用CheckBox選擇單個選項
CheckBox表明一個特定的狀態是選定(on)還是清除(off)。在應用程序中使用CheckBox為用戶提供了“True/False”或“yes/no”的選擇。因為CheckBox彼此獨立工作,所以用戶可以同時選擇任意多個CheckBox。例如,在圖3.9中,可同時選定粗體和斜體。
CheckBox應用程序
這個例子使用一個CheckBox來決定文本用普通
選定粗體或斜體時,CheckBox的Value屬性值設置為1,不選定時為0。缺省Value值為0,所以除非改變Value屬性值,否則第一次顯示時不會選定CheckBox??梢杂贸A縱bChecked和vbUnchecked表示數值1和0。
checkbox應用程序中的事件
當單擊CheckBox時,會發生CheckBox的Click事件。此事件過程測試是否選定CheckBox(即是否Value=vbChecked)。如果選定,通過設置Font對象的Bold或Italic屬性,將文本轉換為粗體或斜體;該Font對象是由TextBox的Font屬性返回的。
在Frame中畫了一組選項按鈕后,用戶只能在組內選擇一個選項按鈕。要在Frame中為控件分組,請按照以下步驟執行:
1.在“工具箱”中選擇Frame控件,并在窗體上畫出Frame。
2.在“工具箱”中選擇OptionButton控件,并在Frame內畫出控件。
3.如果還想在Frame中增加選項按鈕,重復步驟2。先畫Frame,再在Frame上畫每個控件,這樣移動Frame時控件會一起移動。如果將已經存在的控件移到Frame上,此控件不會和Frame一起移動。
注意如果將已存在的控件分組到一個Frame中去,可以選擇這些控件,然后剪貼到Frame或Picture控件上去。
控件的容器
當控件是獨立的對象時,窗體和控件之間存在著某種父子關系。圖3.12表明選項按鈕怎樣才能包含在一個窗體或一個Frame控件中。
要理解容器的概念,首先要把所有的控件都想象為所在窗體的孩子。實際上,大多數控件都支持只讀Parent屬性,它的值就是控件所在的窗體。作為孩子,控件決定其在父窗體上的位置。控件的Left屬性和Top屬性是相對父窗體而言,且控件不能移出父窗體的邊界。移動容器的同時也移動了控件,因此控件與容器的相對位置不變(即控件的Left屬性和Top屬性不變)。
選定或禁止選項按鈕
一個選項按鈕可以用以下方法選擇:
1.在運行期間用鼠標單擊選項按鈕。
2.用Tab鍵定位到選項按鈕組,然后在組內使用方向鍵(箭頭鍵)定位選項按鈕。
3.用代碼將它的Value屬性設置為True:optChoice.Value=True
4.使用在Label的標題中指定的快捷鍵。
5.要使某個按鈕成為選項按鈕組中的缺省按鈕,只要在設計時將其Value屬性設置成True。它保持被選中狀態,直到用戶選擇另一個不同的選項按鈕或用代碼改變它。
要禁用選項按鈕,將其Enabled屬性設置為False。程序運行時,若此選項按鈕變灰,表示無法選取此選項按鈕。
Options應用程序
圖3.13所示的窗體使用選項按鈕為一臺計算機選擇處理器類型和操作系統。當用戶在組內選擇了選項按鈕后,Label的標題就改變,反映當前的選擇。關于此例的工作版本,請參閱應用程序示例Controls.vbp中的Options.frm。
下表列出了應用程序中對象屬性的設置。
Options應用程序中的事件
選項應用程序對事件的響應如下:
前三個選項按鈕的Click事件為窗體級的string變量strComputer分配一個相應的描述。
后兩個選項按鈕的Click事件為第二個窗體級變量strSystem分配一個相應的描述。
這個方法的關鍵就在于使用這兩個窗體級變量,strComputer和strSystem。這兩個變量具有不同的string值,選項按鈕的最后選定就依賴于這些值。
每次選擇新的選項按鈕,其Click事件的代碼就更新相應變量的值。
PrivateSubopt586_Click()
strComputer="Pentium"
CallDisplayCaption
EndSub
然后它調用一個名為DisplayCaption的過程,此過程把兩個變量連在一起并改變Label的Caption屬性。
SubDisplayCaption()
lblDisplay.Caption="Youselecteda"&
_strComputer&"running"&strSystem
EndSub
使用子過程是因為改變Caption屬性的過程對所有五個選項按鈕來說基本是一樣的,只不過變量的值因情況而異。這就可以避免在每個Click事件中重復同樣的代碼。
詳細信息變量和子過程將在第五章“編程基礎”中討論。
使用ListBox和ComboBox
ListBox和ComboBox為用戶提供了選擇。按照缺省規定,選項以垂直單列方式顯示,也可以設置成多列方式。如果項目數量超過ComboBox或ListBox所能顯示的數目,ScrollBar自動出現在控件上。于是用戶可以在列表中上下左右滾動。圖3.14為一個單列ListBox。
ComboBox兼有TextBox和ListBox兩者的功能。該控件允許用戶通過鍵入文本或選擇列表中的項目來進行選擇。圖3.15為一個ComboBox。
與其它含有單值的控件相反,例如Label的Caption屬性或TextBox的text屬性,ListBox和ComboBox含有多個值或值的集合。在運行時用內置的方法增加、刪除及保持集合中的值。要將幾條項目添加到名為List1的ListBox中,其代碼如下: List1.AddItem"Paris"
List1.AddItem"NewYork"
List1.AddItem"SanFrancisco"
ListBox和ComboBox是在有限空間為用戶提供大量選項的有效方法。
詳細信息關于ListBox和ComboBox控件的詳細信息,請參閱第七章“使用VisualBasic的標準控件”。
新聞熱點
疑難解答