4.12 滚动条

在Windows中,会经常遇到滚动条,有垂直、水平两种,都附在窗口、组合框、列表框的上面,用来拖动观察窗口或框中未能显示出来的部分,这种滚动条是系统自动添加上的,不需要用户自己设计。而下面要介绍的不是这种滚动条。

Visual Basic提供了滚动条控件,编程人员可以利用滚动条输入数据或确定位置。在工具箱中,有水平滚动条和垂直滚动条两个控件,除方向不同外,这两个滚动条的结构和操作是一样的。滚动条的两端各有一个滚动箭头,在中间有一个滑块,如图4.34所示。

图4.34 滚动条

4.12.1 滚动条的属性

通常,垂直滚动条的值由上往下递增,最上端代表最小值(Min),最下端代表最大值(Max)。水平滚动条的值从左向右递增,最左端代表最小值,最右端代表最大值。滚动条的值均以整数表示,其取值范围在-32768~32767。

滚动条的坐标系与它当前的尺寸大小无关。可以把每个滚动条当作有数字刻度的直线,从一个整数到另一个整数。这条直线的最小值和最大值分别在该直线的左、右端或上、下端,其值分别用属性Min和Max代表。滚动条的长度与坐标系无关。

1. Max属性

滚动条所能表示的最大值,取值范围为-32768~32767。当滑块位于最右端或最下端时,滚动条的值(Value)为该值。

2. Min属性

滚动条所能表示的最小值,取值范围也为-32768~32767。当滑块位于最左端或最上端时,滚动条的值(Value)为该值。设置好Max、Min属性之后,滚动条的值就会在这两个数的范围内变化。

3. LargeChange属性

单击滚动条时,Value增加或减小的增量值。

4. SmallChange属性

单击滚动条两端的箭头时,Value增加或减小的增量值。

5. Value属性

该属性值表示滑块在滚动条上的当前位置。在运行阶段用该属性也可以设置滑块在滚动条中的位置。

4.12.2 滚动条的事件

滚动条最有用的事件只有两个,分别是Scroll和Change事件。当在滚动条内拖动滑块时触发Scroll事件,而改变滑块的位置后触发Change事件。这样听起来这两个事件好像没什么区别,实际上Scroll事件在拖动滑块的过程中不断地被触发,而Change事件只是在最后停止拖拽而且滑块位置被改变后才会被触发。例如,如果将滑块从最左侧拖拽到最右侧,并且在不松开鼠标左键的状态下再拖回到最左侧,整个过程中Scroll事件会不断地被触发,而Change事件因为滑块的位置最终没有被改变,所以一次都没有被触发。

4.12.3 应用案例—选择背景颜色

【实例4.17】如图4.35所示,窗体中有3个水平滚动条,分别用来控制红色、绿色和蓝色值,通过拖动滑块来控制窗体背景颜色。

窗体中,各控件的属性设置如表4.19所示。

图4.35 实例4.17的运行结果

表4.19 实例4.17中控件的属性设置

编写事件过程如下。

        01 Private Sub hsbBlue_Scroll()
        02       Form1.BackColor = RGB(hsbRed.Value, hsbGreen.Value, hsbBlue.Value)
        03 End Sub
        04
        05 Private Sub hsbGreen_Scroll()
        06       Form1.BackColor = RGB(hsbRed.Value, hsbGreen.Value, hsbBlue.Value)
        07 End Sub
        08
        09 Private Sub hsbRed_Scroll()
        10       Form1.BackColor = RGB(hsbRed.Value, hsbGreen.Value, hsbBlue.Value)
        11 End Sub

【代码说明】上面代码中第02、06、10行出现的RGB是一个可以代表颜色值的函数,其格式为:

        RGB(red, green, blue)

RGB函数有3个参数,从左至右分别代表颜色的红色成分、绿色成分和蓝色成分,其每一个参数的取值范围是0~255之间的整数。例如,RGB(255,0,0)代表红色,RGB(0,255,0)代表绿色而RGB(0,0,255)代表蓝色。众所周知,通过红绿蓝三色可以调制出几乎所有的可见色,因此,RGB函数可以通过控制其3个参数的值来代表所有可见色,上面的程序就是用了这种原理。