VB入门教程-第七章 输入(三)

[复制链接]
查看1929 | 回复3 | 2006-4-23 23:07:00 | 显示全部楼层 |阅读模式

第六章 输入(三)

  滚动条(ScrollBar)在视窗中也是一个不可缺少的部分,由于面积所限,我们不得把屏幕上的内容滚来滚去,以显示大量的内容,这就是我们经常要用到的滚动条。但滚动条除去滚动窗口,还有一个很重要的作用――输入,想想你经常用到的一些家用电器上调节声音或别的什么东西的滑块,你把它滑向大的一方音量就会增大,而你把它滑向小的一方音量就会减小,或者一个控制左右两个音箱的均衡器,当滑块在正中央的时候,两个音箱的音量是相同的,当你把滑块偏向一方时,音箱的音量有了大小之分,在Windows操作中,我们也经常要用到类似的效果。

  在VB中提供了两个常规的滚动条控件――VscrollHscroll,分别代表垂直的和水平的滚动条,它们只不过是方向不同而已,而它们的属性,以及会发生的事件都是相同的。,滚动条有几个特殊的属性:

Value属性,当滑块挪动后停在某一位置时,就改变了滚动条的Value属性。

MaxMin属性,用来设置滚动条的最大值和最小值,譬如把Max设为100,把Min设为0时,滚动条的Value就在0100之间移动,当MaxMin倒置时,滚动条的方向也会相反,也就是说,当Max<Min时,原来Value增加的方向就会变成相反的方向。MaxMin也可设为负值。

SmallChangeLargeChange属性,当鼠标在滚动条两头的箭头上单击时,就会把滚动条向相应的方向挪动一点,这时用到的就是SmallChange属性,当你把它设为1时,每点一下,滚动条的Value就改变1;当鼠标在滚动条上点击时,用到的就是LargeChange,当设为10时,每点击一下滚动条,Value就改变10

下面我们看一个实例。

  大家都知道,物体之所以会有颜色是因为物体表面的材料吸收了太阳光中的部分色光,而还有部分色光没被吸收而被反射回来,它就成了我们看到的颜色,黑色就是物体吸收了所有的太阳光的所有色光,没有反射颜色,所以在我们看来是黑的,而当物体反射了所有的色光,我们看到的就是白色。在计算机中,颜色的表示就是象我们刚才描述的样子,它把颜色分为红(R)、绿(G)和蓝(B)。众所周知,计算机的机器语言是使用二进制表示的,为了方便查阅我们看到的往往是十六进制代码,一个字节包括两位十六进制数字,从0255(十六进制表示0FF),而一个字节是由八位二进制数值表示(2^828次方),计算机中用分别用一个字节,也就是八位表示一种颜色,和在一起也就是三个字节(24位)表示所有的颜色,这就是我们平时常说的24位真彩,它一共可以组成256×256×2562^24)种颜色,对于我们的肉眼,是根本分辨不出来相邻两个不同的颜色的,比如用FFFFFF表示白色,就好象我们刚才说的物体反射了所有的色光,相反的可以用000000表示黑色,它吸收了所有的色光,还可以用FF0000表示红色,在HTML语言中就是这样表示颜色的。

小知识:现在你可以根据你的显卡的显存来计算一下显卡在24位真彩下可以以多大的分辨率显示,计算是这样的,用显存的字节数÷3(24位色)=显示器宽的象素数×显示器高的象素数,宽的象素数:高的象素数=4:3,比如4兆显存,就应该是4×1024×1024÷3=1365×1024。

在下面的小程序中,我们通过三个滚动条分别代表RGB,滚动滚动条,将在右边的图片框中显示相应的颜色,并且在下面的文本框中显示颜色的十六进制数值。

现在,新建一个项目文件,在Form1中如图612布局控件,各控件属性如下表:

HsrollBar

Name Hscroll1

Index 012

(共同属性)

Max 255

Min 0

LargeChange 10

SmallChange 1

Label

Name Label1

Index 012

Index 0 Caption “红:”

Index 1 Caption “绿:”

Index 2 Caption “蓝:”

Label

Name Label2

Caption “颜色值”

TextBox

Name Text1

Text “”

PictureBox

Name Picuture1

 

为了把十进制数值换成十六进制数值,要使用一个叫做Hex()的函数,它把十进制数值转化为十六进制的字符,但对于只有一位的十六进制字符,这个函数并不在高位补零,为了视觉上的正确,我设计了一个小函数帮助它给一位的十六进制字符补零.

程序代码很简单,见下:

Dim RedStr, GreenStr, BlueStr As String’RGB的字符
Dim RedNum, GreenNum, BlueNum As Integer’RGB的数值

 

Function GetColorValue() As String

获得输入值
RedNum = HScroll1(0).Value
GreenNum = HScroll1(1).Value
BlueNum = HScroll1(2).Value

RedStr = Hex(RedNum)
If Len(RedStr) < 2 Then RedStr = "0" + RedStr补零

GreenStr = Hex(GreenNum)
If Len(GreenStr) < 2 Then GreenStr = "0" + GreenStr

BlueStr = Hex(BlueNum)
If Len(BlueStr) < 2 Then BlueStr = "0" + BlueStr

GetColorValue = RedStr + GreenStr + BlueStr合并

End Function

Private Sub Form_Load()

初始化程序
Text1.Text = GetColorValue
Picture1.BackColor = RGB(RedNum, GreenNum, BlueNum)
RGB函数返回颜色值

End Sub

 

Private Sub HScroll1_Change(Index As Integer)

当滚动条被改变时
Text1.Text = GetColorValue
Picture1.BackColor = RGB(RedNum, GreenNum, BlueNum)

End Sub

运行如图613

loveplc | 2006-4-23 23:10:00 | 显示全部楼层

列表框(ListBox)和复合列表框(ComboBox)也是我们经常见到的视窗元素,我们从它所列示的条目中选出所需的,两种列表框只是在外观上略有不同,但从本质和操作方法来说它们是很相象的,它们也有一些特殊的属性:

List属性,你可以利于该属性象列表框或复合列表框中添加条目,但也可以在程序设计中通过AddItem方法添加。

ListCount属性,返回列表框或复合列表框中条目的数目。

ListIndex属性,表示列表框或复合列表框的第几项条目。(从0ListCount-1

Sorted属性,可以通过该属性对列表框或复合列表框中的条目根据字母顺序排序。

MultiSelect属性,0表示不能多选,1表示简单多选,2表示宽展多选,仅限于列表框。

Columns属性,表示条目是以一列显示还是两列显示,仅限于列表框。

Style属性:表示列表框或复合列表框以何种风格显示,二者参数不同。

举两个简单的例子。

例子一,建立一个新项目文件,在Form1上添加一个List控件,调整适当的尺寸,无需改变任何属性。填写以下代码。

Private Sub Form_Load()

With List1

.AddItem \"0-Default\"
.AddItem \"1-Arrow\"
.AddItem \"2-Cross\"
.AddItem \"3-I-Beam\"
.AddItem \"4-Icon\"
.AddItem \"5-Size\"
.AddItem \"6-Size NE SW\"
.AddItem \"7-Size NS\"
.AddItem \"8-Size NW SE\"
.AddItem \"9-Size WE\"
.AddItem \"10-Up Arrow\"
.AddItem \"11-Hourglass\"
.AddItem \"12-NoDrag\"
.AddItem \"13-Arrow And Hourglass\"
.AddItem \"14-Arrow And Question\"
.AddItem \"15-Size All\"

End With

End Sub

 

Private Sub List1_Click()

MousePointer = List1.ListIndex这里的MousePointer是窗体全局内的属性

End Sub

当你点在不同项上面鼠标指针也会随着改变,如图614

AddItem方法语法如下:

ListObject “字符串”,数值

字符串后的数值可以指定条目加入在第几个条目的位置上,如果没有的话,添加项将逐次排下去。

下面举一个复合列表框的例子,例子通过选择复合列表框中的选项来改变文本框的字体。请新建一个项目文件,在窗体中添加一个ComboBoxCombo1)和一个TextBoxText1),添加如下代码。

Private Sub Combo1_Click()

Text1.FontName = Combo1.List(Combo1.ListIndex)

End Sub

 

Private Sub Form_Load()

With Combo1

.AddItem \"宋体\"
.AddItem \"
隶书\"
.AddItem \"
黑体\"
.AddItem \"
楷体\"
.ListIndex = 0把第一个条目作为初始项

End With

Text1.FontSize = 30放大字体
Text1.FontName = Combo1.List(0)初始字体为“宋体”

End Sub

如图615

zjl1031 | 2006-5-30 15:38:00 | 显示全部楼层
多谢楼主,[s:300]
xuliang987 | 2007-5-16 20:15:00 | 显示全部楼层
学习中
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则