VB教程:滾動條(ScrollBar)

字號:

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