8、滾動條(ScrollBar)
作用:當應用程序或控件不能自動支持滾動時,用水平和垂直的滾動條控件,為它們提供這一功能。
滾動條控件有兩類:水平滾動條HscrollBar、垂直滾動條VscrollBar。
(1)常用屬性
見教材P135表5-13。
經(jīng)常用到的屬性有:
value——當前滑動塊的位置
在滾動條中,滾動塊所處的位置可以代表一個輸入值。value屬性值即為體現(xiàn)滾動塊在滾動條中位置的數(shù)值。對于水平滾動條,當滾動塊處于最左邊時,value取最小值Min;對于垂直波動條,當滾動塊處于最頂端時,value取最小值Min。反之,則value值取值。在中間的各個位置,value值與位置是嚴格按照比例來設定的。
改變滾動條value屬性的方法有四種;
直接在屬性窗口中設定value值;
鼠標單擊兩端箭頭鍵改變滾動條數(shù)值;
可將滾動框沿滾動條拖動到任意位置;
用鼠標單擊滾動條中滾動塊兩側的部分,使?jié)L動塊以翻頁的速度移動。
value屬性的缺省值為O到32,767,缺省情況下,value取0和32,767中的某個數(shù)值(包括0和32,767)。
max——滾動條值
min——滾動條最小值
滾動條的value屬性有取值范圍的限制,取值范圍由max屬性和min屬性設置,一般情況,max代表value的值,min代表value的最小值。
如果希望滾動條顯示的信息從較大數(shù)值向較小數(shù)值變化.可將Min設置成大于max的值。
largechange——變化量(單擊滑動塊)
smallchange——最小變化量(單擊箭頭)
(2)常用事件
Change事件和Scroll事件
單擊滾動條的滾動箭頭、滾動區(qū)域或滾動條的Value屬性改變時、滾動條具有焦點時再按下PageUp、Pagedown鍵,都可以引發(fā)Change事件和Scroll事件。
兩者的不同在于:單擊滾動條的滾動箭頭、滾動區(qū)域或拖動滾動塊后,才能引發(fā)Change事件,而拖動滾動塊時,就可引發(fā)Scroll事件。
(3)例子
例1見教材P136。
界面:
代碼:
Private Sub Form_Load()
HScroll1.Max = 50 '水平滾動條的值
HScroll1.Min = 0 '水平滾動條的最小值
HScroll1.SmallChange = 1 '單擊水平滾動條的滾動箭頭按鈕而產(chǎn)生的變化值
HScroll1.LargeChange = 10 '單擊水平滾動區(qū)域而產(chǎn)生的變化值
VScroll1.Max = 50 '垂直滾動條的值
VScroll1.Min = 0 '垂直滾動條的最小值
VScroll1.SmallChange = 1 '單擊垂直滾動條的滾動箭頭按鈕而產(chǎn)生的變化值
VScroll1.LargeChange = 5 '單擊垂直滾動區(qū)域而產(chǎn)生的變化值
End Sub
--------------------------------------------------------------------------------
Private Sub HScroll1_Change()
Label2.Caption = HScroll1.Value
End Sub
--------------------------------------------------------------------------------
Private Sub VScroll1_Change()
Label1.Caption = VScroll1.Value
End Sub
[程序演示] [程序下載]
在上例中,將Change事件改為Scroll事件,再試一試。
例2:在窗體的范圍內跟蹤鼠標的位置。見教材P137。
在窗體上放置一個圖片框、一個水平和一個垂直滾動條。
界面:
代碼:
Private Sub Form_Load()
HScroll1.Min = 0
VScroll1.Min = 0 '設置滾動條的最小值
HScroll1.Max = 100
VScroll1.Max = 100 '設置滾動條的值
VScroll1.Value = 50
HScroll1.Value = 50 '初始化滾動塊的位置
End Sub
--------------------------------------------------------------------------------
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > Picture1.Top And Y < Picture1.Top + Picture1.Height Then
VScroll1.Value = (Y - Picture1.Top) / (Picture1.Height) * 100 '跟蹤垂直位置(按照比例來設定)
End If
If X > Picture1.Left And Y < Picture1.Left + Picture1.Width Then
HScroll1.Value = (X - Picture1.Left) / (Picture1.Width) * 100 '跟蹤水平位置
End If
End Sub
--------------------------------------------------------------------------------
Private Sub HScroll1_Change()
Label1.Caption = "X=" & HScroll1.Value
End Sub
--------------------------------------------------------------------------------
Private Sub VScroll1_Change()
Label2.Caption = "Y=" & VScroll1.Value
End Sub
[程序演示] [程序下載]
例3:通過單擊滾動塊顯示一年12個月。
界面:
代碼:
Private Sub Command1_Click()
Unload Form1
End Sub
--------------------------------------------------------------------------------
Private Sub Form_Load()
HScroll1.Value = Month(Now)
HScroll1.Min = 1
HScroll1.Max = 12
End Sub
--------------------------------------------------------------------------------
Private Sub HScroll1_Change()
Label4.Caption = HScroll1.Value
End Sub
作用:當應用程序或控件不能自動支持滾動時,用水平和垂直的滾動條控件,為它們提供這一功能。
滾動條控件有兩類:水平滾動條HscrollBar、垂直滾動條VscrollBar。
(1)常用屬性
見教材P135表5-13。
經(jīng)常用到的屬性有:
value——當前滑動塊的位置
在滾動條中,滾動塊所處的位置可以代表一個輸入值。value屬性值即為體現(xiàn)滾動塊在滾動條中位置的數(shù)值。對于水平滾動條,當滾動塊處于最左邊時,value取最小值Min;對于垂直波動條,當滾動塊處于最頂端時,value取最小值Min。反之,則value值取值。在中間的各個位置,value值與位置是嚴格按照比例來設定的。
改變滾動條value屬性的方法有四種;
直接在屬性窗口中設定value值;
鼠標單擊兩端箭頭鍵改變滾動條數(shù)值;
可將滾動框沿滾動條拖動到任意位置;
用鼠標單擊滾動條中滾動塊兩側的部分,使?jié)L動塊以翻頁的速度移動。
value屬性的缺省值為O到32,767,缺省情況下,value取0和32,767中的某個數(shù)值(包括0和32,767)。
max——滾動條值
min——滾動條最小值
滾動條的value屬性有取值范圍的限制,取值范圍由max屬性和min屬性設置,一般情況,max代表value的值,min代表value的最小值。
如果希望滾動條顯示的信息從較大數(shù)值向較小數(shù)值變化.可將Min設置成大于max的值。
largechange——變化量(單擊滑動塊)
smallchange——最小變化量(單擊箭頭)
(2)常用事件
Change事件和Scroll事件
單擊滾動條的滾動箭頭、滾動區(qū)域或滾動條的Value屬性改變時、滾動條具有焦點時再按下PageUp、Pagedown鍵,都可以引發(fā)Change事件和Scroll事件。
兩者的不同在于:單擊滾動條的滾動箭頭、滾動區(qū)域或拖動滾動塊后,才能引發(fā)Change事件,而拖動滾動塊時,就可引發(fā)Scroll事件。
(3)例子
例1見教材P136。
界面:
代碼:
Private Sub Form_Load()
HScroll1.Max = 50 '水平滾動條的值
HScroll1.Min = 0 '水平滾動條的最小值
HScroll1.SmallChange = 1 '單擊水平滾動條的滾動箭頭按鈕而產(chǎn)生的變化值
HScroll1.LargeChange = 10 '單擊水平滾動區(qū)域而產(chǎn)生的變化值
VScroll1.Max = 50 '垂直滾動條的值
VScroll1.Min = 0 '垂直滾動條的最小值
VScroll1.SmallChange = 1 '單擊垂直滾動條的滾動箭頭按鈕而產(chǎn)生的變化值
VScroll1.LargeChange = 5 '單擊垂直滾動區(qū)域而產(chǎn)生的變化值
End Sub
--------------------------------------------------------------------------------
Private Sub HScroll1_Change()
Label2.Caption = HScroll1.Value
End Sub
--------------------------------------------------------------------------------
Private Sub VScroll1_Change()
Label1.Caption = VScroll1.Value
End Sub
[程序演示] [程序下載]
在上例中,將Change事件改為Scroll事件,再試一試。
例2:在窗體的范圍內跟蹤鼠標的位置。見教材P137。
在窗體上放置一個圖片框、一個水平和一個垂直滾動條。
界面:
代碼:
Private Sub Form_Load()
HScroll1.Min = 0
VScroll1.Min = 0 '設置滾動條的最小值
HScroll1.Max = 100
VScroll1.Max = 100 '設置滾動條的值
VScroll1.Value = 50
HScroll1.Value = 50 '初始化滾動塊的位置
End Sub
--------------------------------------------------------------------------------
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > Picture1.Top And Y < Picture1.Top + Picture1.Height Then
VScroll1.Value = (Y - Picture1.Top) / (Picture1.Height) * 100 '跟蹤垂直位置(按照比例來設定)
End If
If X > Picture1.Left And Y < Picture1.Left + Picture1.Width Then
HScroll1.Value = (X - Picture1.Left) / (Picture1.Width) * 100 '跟蹤水平位置
End If
End Sub
--------------------------------------------------------------------------------
Private Sub HScroll1_Change()
Label1.Caption = "X=" & HScroll1.Value
End Sub
--------------------------------------------------------------------------------
Private Sub VScroll1_Change()
Label2.Caption = "Y=" & VScroll1.Value
End Sub
[程序演示] [程序下載]
例3:通過單擊滾動塊顯示一年12個月。
界面:
代碼:
Private Sub Command1_Click()
Unload Form1
End Sub
--------------------------------------------------------------------------------
Private Sub Form_Load()
HScroll1.Value = Month(Now)
HScroll1.Min = 1
HScroll1.Max = 12
End Sub
--------------------------------------------------------------------------------
Private Sub HScroll1_Change()
Label4.Caption = HScroll1.Value
End Sub

