这里我要向您推荐一组高级的ActiveX控件—Common家族。这一家子共有八个兄弟。他们习性相似,却各有不同的本领。利用他们可以为您的应用程序添加漂亮的界面,强大实用的功能。比如,带有图标的快捷工具条、进度指示器等。而这并不复杂,您只需看完下文,一切立即搞定。
一、图像资料中心----ImageList
ImageList控件是一个向其它控件提供图像的资料中心,它包含了一组ListImage对象即一组图像的集合,该集合中的每个对象都可以通过其索引或关键字被其他控件所引用,但控件本身并不能单独使用。
ImageList控件可以和任何具有Picture属性的控件一起使用,如PictureBox、ListView、ToolBar、TabStrip和TreeView等控件。
ImageList控件的主要属性有ImageHeight属性,ImageWidth属性,MaskColor属性和UseMaskColor属性。
ImageHeight属性和ImageWidth属性
这两个属性返回或设置ImageList控件中ListImage对象的高度和宽度。可以在添加第一个ListImage对象之前预先设置ImageHeight和ImageWidth属性。如果没有预先设置,则第一个添加到集合中的ListImage对象保持原图大小,其后添加的所有ListImage对象都被强制与第一个ListImage对象大小相同。
MaskColor属性
该属性返回或设置在ImageList控件的图形操作中透明的颜色。具体地讲,就是设置一种颜色,使ImageList控件的图形中的此种颜色变为透明。
UseMaskColor属性
该属性决定是否能在ImageList控件中使用MaskColor属性。
Add方法
要给ImageList控件添加图像,在设计时,可以用“ImageList控件属性”对话框图1;在运行时,可以用Add方法。
Add方法的语法如下:
Add(index,key,picture)
Index是可选的参数。它是一个整数,指定了要插入的ListImage对象的位置。如果没有指定index,ListImage对象将被添加到ListImages集合的末尾。
Key也是可选的参数。它是用来标识ListImage对象的唯一字符串。ImageList控件用该值来检索某个特定的ListImage对象。
Picture是必需的参数。它指定了欲添加到集合中的图片。
Add方法的具体用法如下例:
Dim imgX As ListImage
Set imgX=ImageList1.ListImages.Add_
(,,LoadPicture("filename"))
Set imgX=ImageList1.ListImages.Add(,,Picture1.Picture)
Overlay方法
除了存储Picture对象外,ImageList控件还可以在把图像赋值给其它控件前,对它们执行图形操作。例如,Overlay方法可以从两个不同的图像出发创建一个复合图像。该方法从一个ListImages集合绘制一幅图像,叠加在另一幅上面,并返回结果。它的语法如下:
Overlay(index1,index2)
index1参数是必需的。它是一个整数(Index属性)或唯一的字符串(Key属性),指定了将被叠加的图像。
index2参数也是必需的。它指定了将被绘制在由index1指定的对象上的图像。该图像中与MaskColor属性相匹配的颜色被设置成透明的。如果没有任何颜色与之匹配,该图像将不透明地绘制在其它图像上。
下面,我们介绍一个具体的例子。
先在窗体上放置一个ImageList控件和一个Image框,然后添加如下代码:
Private Sub Form_Load()
Dim imgX As ListImage
'加载位图
SetimgX=ImageList1.ListImages.Add(,"No",_
LoadPicture("graphics\bitmaps\assorted\Intl_No.bmp"))
SetimgX=ImageList1.ListImages.Add(,,_LoadPicture("graphics\bitmaps\assorted\smokes.bmp"))
SetimgX=ImageList1.ListImages.Add(,,_LoadPicture("graphics\bitmaps\assorted\beany.bmp"))
ScaleMode=vbPixels
'设置MaskColor属性
ImageList1.MaskColor=vbGreen
'设置窗体的BackColor为白色
Form1.BackColor=vbWhite
End Sub
Private Sub Form_Click()
'静态变量,用于图像计数。
Static int Count As Integer
'如果变量超过ListImages.Count的值则重置变量为2
If intCount>ImageList1.ListImages.Count
Or intCount<1 Then
intCount=2
End If
'把ListImage(1)叠加在ListImages2-3之上
Image1.Picture=ImageList1.Overlay(intCount,1)
intCount=intCount+1
'创建变量来保存ImageList.ImageWidth的值
Dim intW
intW=ImageList1.ImageWidth
'为了引用方便把图像绘制到窗体上,
'用ImageWidth值来间隔图像
ImageList1.ListImages(1).DrawForm1.hDC,0,0,imlNormal
ImageList1.ListImages(2).DrawForm1.hDC,0,intW,imlNormal
ImageList1.ListImages(3).DrawForm1.hDC,0,intW*2,imlNormal
End Sub
在本例中,图片Intl_No.bmp的背景色原来是绿色,由于MaskColor也设置为绿色,所以图片的背景色变为了透明。
为了节约系统资源,可以把一个或多个ImageList控件与其它的Windows95公共控件关联。这些公共控件包括ListView、ToolBar、TabStrip和TreeView控件。为了关联在一起,对于ListView控件来说,必须将Icons和SmallIcons属性设置为ImageList控件;对于TreeView、TabStrip和Toolbar控件来说,必须将ImageList属性设置为ImageList控件。
一旦ImageList与某个控件相关联,就可以在过程中用Index属性或Key属性的值来引用ListImage对象了。
二、多彩工具条----Toolbar
在大多数应用程序中都有工具栏。工具栏包含有一些按钮,这些按钮与应用程序菜单中各项的按钮对应,为用户访问应用程序的最常用功能和命令提供了图形界面。在VB5.0中,可以用Toolbar控件来实现这一功能。
Toolbar控件包含一个按钮(Button对象)集合,可以通过将Button对象添加到Buttons集合中的方法来创建工具栏。在设计时可用Toolbar控件的属性页中的“按钮”选项卡上的“插入按钮”和“删除按钮”来插入和删除按钮,并设置按钮的索引、标题、关键字、样式、标记、工具提示文本和图像属性;当然,也可以在运行时用语句指定这些属性。
样式(Style)属性
该属性决定Toolbar控件中每个按钮的外观和状态。
使用时请注意必须将具有ButtonGroup样式的按钮分组。为区分组,应该将所有具有相同样式(ButtonGroup)的Button对象放置在两个有分隔符样式的Button对象之间。
Button对象为占位符样式时,可以将其它的控件放置在工具栏上。例如,为了在设计时将下拉组合框放在工具栏上,可添加一个具有占位符样式的Button对象,并把它调整到ComboBox控件的大小。然后将ComboBox放置在占位符处。
每个Button对象都可有文本或图像,或者兼而有之。图像是由相关联的ImageList控件提供的,可以用Image属性为每个Button对象添加一幅图像;文本则是通过设置每个按钮的Caption属性来显示的。
ImageList属性
该属性返回或设置与控件相关的ImageList控件。控件要使用该属性,必须先将ImageList控件放在窗体上,然后在设计时可在相关控件的“属性页”对话框中设置ImageList属性。在运行时可以用以下语句来设置:
Set ToolBar1.ImageList=ImageList1
ShowTips属性
该属性决定是否允许显示每个按钮的帮助提示。
Wrappable属性
该属性决定当重新设置窗口的大小时,Toolbar控件按钮是否自动换行。
Customize方法
该方法调用“自定义工具栏”对话框,该对话框允许用户在Toolbar控件上重新安排或隐藏Button对象。
当Toolbar控件的AllowCustomize属性为True时,双击工具栏后就会调用Customize方法显示出对话框。
我们可以限制用户自定义工具栏的权限。例如,下列代码仅在用户给出密码字时才允许自定义工具栏:
Private Sub Command1_Click()
If InputBox("Password:")="WYT" Then
Toolbar1.Customize
'调用Customize方法。
End If
End Sub
SaveToolbar方法和RestoreToolbar方法
这两个方法的作用分别是把用Toolbar控件创建的工具栏的状态保存在注册表中和将工具栏恢复到原先保存的状态。它们的语法为:
Toolbar1.SaveToolbar(keyAsString,subkeyAsString,valueAsString)
Toolbar1.RestoreToolbar(keyAsString,subkeyAsString,valueAsString)
这三个参数都是必选参数。其中key是一个字符串表达式,指定了保存的信息在注册表中的关键字;subkey也是一个字符串表达式,指定了在注册表中key参数下的一个子键;value同样是一个字符串表达式,指定了保存在subkey中的Toolbar信息。
下列代码将Toolbar1的状态信息保存在HKEY_USERS\.DEFAULT关键字下的WYT子关键字中:
Toolbar1.SaveToolbar"","WYT","Toolbar1"
如果指定的子关键字不存在,该语句将在注册表中创建新的子关键字。因为在自定义工具栏之后要发生Toolbar控件的Change事件,所以在大多数情况下,可将上述代码放置在工具栏的Change事件中。
下列代码为当前用户恢复Toolbar控件的设置值,不过要确定先前已经用SaveToolbar方法将它们保存起来了。
Toolbar1.RestoreToolbar"","WYT","Toolbar1"
注意当使用RestoreToolbar方法时,任何不包含ImageListListImage对象的工具栏按钮都将消失。用户可再次使用自定义工具栏对话框上的复位按钮使它们可见。
为了在运行时添加和删除按钮,可以用Add方法,Clear方法和Remove方法。
Add方法
该方法将Button对象添加到Buttons集合中,并返回对新创建对象的引用。
下面给出一个简单的程序代码,具体介绍一下如何在运行中添加按钮和图像以及对Click事件作出反应。
Private SubForm1_Load()
'为ImageList创建对象变量
Dim imgX As ListImage
'将图片加载到ImageList控件中
Set imgX=ImageList1.ListImages.Add(,"open",_
LoadPicture("Graphics\bitmaps\tlbr_w95\open.bmp"))
Set imgX=ImageList1.ListImages.Add(,"save",_LoadPicture("Graphics\bitmaps\tlbr_w95\save.bmp"))
Toolbar1.ImageList=ImageList1
'为Button创建对象变量
Dim btnX As Button
'以下代码是用Add方法将按钮对象添加到Buttons集合中。创建每个按钮后,设置Description和
ToolTipText属性。
Toolbar1.Buttons.Add,,,tbrSeparator
Set btnX=Toolbar1.Buttons.Add_(,"open",,tbrDefault,"open")
btnX.ToolTipText="OpenFile"
btnX.Description=btnX.ToolTipText
Set btnX=Toolbar1.Buttons.Add_(,"save",,tbrDefault,"save")
btnX.ToolTipText="SaveFile"
btnX.Description=btnX.ToolTipText
Set btnX=Toolbar1.Buttons.Add(,,,tbrSeparator)
End Sub
Private Sub toolbar1_ButtonClick(ByValButton As Button)
'用Key属性和SelectCase语句来指定一个动作。
Select Case Button.Key
Case Is="open"'打开文件。
MsgBox"Addcodetoopenfilehere!"
Case Is="save"'保存文件。
MsgBox"Addcodetosavefilehere!"
End Select
End Sub
三、精美卡片盒---Tabsterip
TabStrip控件象笔记本的书签或者一组文件夹的标签,通过使用TabStrip控件,可以在应用程序中为某个窗口或者对话框的相同区域定义多个页面,如图。其具体使用方法与Toolbar控件相似,限于篇幅,在这里就不再多说了。
四、实时状态条----StatusBar
StatusBar控件代表性地显示有关在窗体上查看的对象、对象组件的信息或关系到对象操作的上下文的信息。StatusBar控件与其它控件如Toolbar控件一起,提供建立界面的工具,该界面既经济又含有丰富的信息。
StatusBar控件提供了一个窗体,通过这一窗体,应用程序能显示各种状态数据。每个窗体由窗格(Panel对象)组成,每一个Panel对象能包含文本或图片。StatusBar最多能被分成16个Panel对象,这些对象组成Panels集合。
在设计时,可以通过StatusBar控件的属性页的“窗格”选项卡来添加和删除窗格并设置每个窗格的各种属性。在这里,我们对其中比较重要的属性作一些介绍。
斜面(Belvel)属性
该属性返回或设置窗格的斜面样式。
自动调整大小(AutoSize)属性
该属性在调整了StatusBar控件的大小以后,返回或设置窗格对象宽度的值。
含有目录样式的窗格优先于含有弹回样式的窗格。这就意味着如果含有目录样式的窗格需要空间,则将缩短弹回样式的窗格。
宽度(Width)属性和最小宽度(MinWidth)属性
宽度属性返回或设置窗格的当前宽度,最小宽度属性则返回或设置窗格的最小宽度。当AutoSize属性被设置为目录或弹回时,使用MinWidth属性可以防止面板因自动调整大小被调整到太小的宽度。当AutoSize属性被设置为None时,MinWidth属性总是被设定为与Width属性相同的值。
下例用StatusBar控件的缺省面板显示当前时间。设置MinWidth属性以便在单击面板时清除时间但保留面板的大小不变。
Private Sub Form_Load()
StatusBar1.Panels(1).AutoSize=sbrContents
StatusBar1.Panels(1).Text="NowTimeis:"&Str(Time)
StatusBar1.Panels(1).MinWidth=StatusBar1.Panels(1).Width
'将最小宽度设置为面板的当前大小。
End Sub
Private Sub StatusBar1_PanelClick(ByValPanel As ComctlLib.Panel)
'清除时间但保持大小在最小宽度。
Panel.Text="NowTimeis:"
End Sub
StatusBar控件的重要属性有Style属性和SimpleText属性。
Style属性
该属性返回或设置StatusBar控件的样式。当它为sbrNormal时,StatusBar控件显示所有的Panel对象;当它为sbrSimple时,控件仅显示一个大面板。当设置Style属性为sbrSimple时,用SimpleText属性设置要显示的字符串的文本。
注意当设置Style属性为Simple时,StatusBar控件显示大面板(控件的宽度),该面板不能通过面板集合来控制。
SimpleText属性
该属性是当StatusBar控件的Style属性为Simple时,返回或设置显示文本。
为了在运行中添加和删除窗格,可以用Add方法,Clear方法和Remove方法。其中Clear方法和Remove方法与前面讲的控件一样,这里不再赘述。(图5)
Add方法
该方法将Panel对象添加到Panels集合中并返回对新建立的Panel对象的引用。它的语法如下:
StatusBar1.Add(index,key,text,style,picture)
下面的代码将两个Panel对象添加到具有Normal样式的StatusBar控件中,然后添加字符串(用SimpleText属性),该字符串在设置Style属性为Simple时才出现。该控件在Simple和Normal样式之间切换。
Private Sub Form_Load()
Dim I As Integer
For I=1 to 2
StatusBar1.Panels.Add
'添加两个Panel对象。
Next I
With StatusBar1.Panels.Item(1).Style=sbrNum'Number锁定.Item(2).Style=sbrCaps'Caps锁定
.Item(3).Style=sbrScrl'Scroll锁定
End With
End Sub
Private Sub StatusBar1_Click()
'在简单和正常样式之间切换。
With StatusBar1
If .Style=0 Then
'当StatusBar是用Simple样式时,显示该文本。
.SimpleText="DateandTime:"&Now.Style=sbrSimple'Simple样式。
Else
.Style=sbrNormal'Normal样式。
End If
End With
End Sub
五、资源管理树---TreeView
TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。TreeView一般用于显示文档标题、索引入口、磁盘上的文件和目录或能被有效地分层显示的其它各种信息。类似于Win95的资源管理器的界面就可以用该控件来实现。
在设计时可以通过TreeView控件的属性页来指定控件的部分属性。在TreeView控件的属性中,比较重要的有如下属性:
样式(Style)属性
该属性返回或设置Node对象的图形类型(图像、文本、+/-号、直线)以及出现在TreeView控件中每一Node对象上的文本类型。
行样式(LineStyle)属性
这个属性返回或设置在Node对象之间显示的线的样式。
注意:若Style属性设置为包含直线的值,则LineStyle属性就确定了直线的外观。如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。
Sort属性
该属性返回或设置一布尔值,此值确定Node对象的子节点和TreeView控件的根层节点是否按字母顺序排序。
Sorted属性有两种用法:第一,在TreeView控件的根(顶)层排列Node对象;第二,对任何单个Node对象的立即子节点(即第一层子接点)排序。例如,下面的代码是对TreeView控件的根节点排序:
TreeView1.Sorted=True。而代码Node1.Sorted=True则是对当前选中的Node对象的立即子节点排序。
注意:当设置Sorted属性为True时,仅对当前Nodes集合排序;在TreeView控件中添加新的Node对象时,必须再次设置Sorted属性为True,以便对添加的Node对象排序。
FullPath属性
这个属性返回在TreeView控件中引用的Node对象的完整限定路径。通常完整限定路径是引用的Node对象的Text属性中的文本与它的所有前辈的Text属性值的连接。
Root、Parent、Child、FirstSibling、LastSibling、Previous和Next属性
这些属性分别返回对Node对象的根节点,父节点,子节点,同层的第一个节点和最后一个节点,同层的前一个相邻节点和后一个相邻节点的引用。
同前面所讲的控件一样,TreeView控件也使用由ImageList属性指定的ImageList控件,来存储显示于Node对象的位图和图标。任何时刻,TreeView控件只能使用一个ImageList。这意味着,当TreeView控件的Style属性被设置成显示图像的样式时,TreeView控件中每一项的旁边都有一个同样大小的图像。为了使被选中的Node对象显示不同的图像,需要使用SelectedImage属性。
SelectedImage属性
该属性返回或设置当Node对象被选中时显示的图像。如果它为Null,则使用由ImageList属性指定的图像的屏蔽图像。
TreeView控件与前几个控件一样,用Add方法,Clear方法和Remove方法来添加Node对象,但它不能在设计时利用属性页来进行添加和删除。
TreeView控件的Clear方法和Remove方法与前面所讲的控件基本一致,这里主要讲Add方法。
Add方法
该方法在TreeView控件的Nodes集合中添加一个Node对象,语法如下:
TreeView1.Add(relative,relationship,key,text,
image,selectedimage)
在这些参数中,只有text参数是必需的,其它的参数都是可选的。relative参数是已存在的Node对象的索引号或键值。Relationship指定了Node对象的相对位置,如后表所述。Key是唯一的字符串,可用于检索Node对象。Text是在Node中出现的字符串。Image是在关联的ImageList控件中的图像的索引。Selectedimage是在关联的ImageList控件中的图像的索引,在Node被选中时显示。
CreateDragImage方法
这个方法使用Node对象的关联图像的抖动形式来创建拖动图像。这种图像一般用于拖放操作。该方法一般用于在拖放操作开始时给DragIcon属性赋值一个图像(图6)。
EnsureVisible方法
这个方法确保指定的ListItem或Node对象是可视的。如果需要,这个方法可展开Node对象并滚动TreeView控件下列代码创建一棵树,并可以演示拖动操作(由于篇幅所限,这段代码并未真正实现拖动)。
Dim indrag As Boolean
'指示拖放操作的标志。
Dim nodX As Object
'被拖动的项。
Private Sub Form_Load()
'在Imagelist控件中加载一个位图。
Dim imgX As ListImage
Dim BitmapPath As String
BitmapPath="graphics\icons\mail\mail01a.ico"
Set imgX=ImageList1.ListImages.Add_
(,,LoadPicture(BitmapPath))
'初始化TreeView控件并创建几个节点。
TreeView1.ImageList=ImageList1
Dim nodX As Node'创建一棵树。
Set nodX=TreeView1.Nodes.Add(,,,"Parent1",1)
Set nodX=TreeView1.Nodes.Add(,,,"Parent2",1)
Set nodX=TreeView1.Nodes.Add(1,tvwChild,,
"Child1",1)
Set nodX=TreeView1.Nodes.Add(1,tvwChild,,"Child2",1)
Set nodX=TreeView1.Nodes.Add(2,tvwChild,,"Child3",1)
Set nodX=TreeView1.Nodes.Add(2,tvwChild,,"Child4",1)
Set nodX=TreeView1.Nodes.Add(3,tvwChild,,"Child5",1)
nodX.EnsureVisible'展开树显示全部节点。
End Sub
Private Sub TreeView1_MouseDown_
(Button As Integer,Shift As Integer,x As Single,y As Single)
Set nodX=TreeView1.SelectedItem
'设置要拖动的项。
End Sub
Private Sub TreeView1_MouseMove(Button As Integer,
Shift As Integer,x As Single,y As Single)
If Button=vbLeftButton Then
'指示拖动操作。
indrag=True
'设置标志为true。
'用CreateDragImage方法设置拖动图标。
TreeView1.DragIcon=TreeView1.SelectedItem.CreateDragImage
TreeView1.DragvbBeginDrag'拖动操作。
End If
End Sub
六、图片式文件夹---ListView
ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。(图7)
ColumnHeader对象是ListView控件中包含标头文字的项目。利用ColumnHeader对象,用户可以:
▲单击对象触发ColumnClick事件并根据数据项目将项目排序。
▲拖动对象的右边框来调整列宽度。
▲在报表视图中隐藏ColumnHeader对象。
ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。删除ColumnHeader对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。
ColumnHeader对象的SubItemIndex属性
该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。列标头数目取决于子项目数目。列标头数目总是比子项目数目多1。
在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。
ColumnHeader对象的Add方法
该方法的使用与前面那些控件基本相似,就不再介绍了。
ListView1.ColumnHeader.Add(index,key,text,width,alignment)
ListItem对象是指控件中的一行(不包含标头行)的所有内容。它也可包含文本和图片,但是要使用图片则必须通过Icons和SmallIcons属性引用ImageList控件。
ListItem对象的SubItems属性
返回或设置一个字符串(子项目)数组,它代表ListView控件中ListItem对象的数据。
ListItem对象可包含任意多个的关联项目数据字符串(子项目),但每个ListItem对象子项目数目必须相同。每个子项目都对应于相关的列标头,无法直接向子项目数组添加元素,只有通过ColumnHeaders的Add方法添加列标头的方法来添加子项目。
ListItem对象的Add方法
该方法添加ListItem对象到ListView控件的ListItems集合中并返回对新创建对象的引用。
它的语法如下:
ListItem1.Add(index,key,text,icon,smallIcon)
ListView控件的View属性
ListView控件可使用四种不同视图显示项目,这可以用View属性来确定。该属性返回或设置ListView控件中ListItem对象的外观。
ListView控件的SortOrder,SortKey和Sorted属性
控件中的ListItem对象可以按要求进行排序,与排序有关的属性是SortOrder,Sorted和SortKey属性。
SortOrder属性返回或设置一个值,此值决定ListView控件中的ListItem对象以升序或降序排序。
SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序。
Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序的值。
下面的代码说明了如何创建ColumnHeaders和ListItem对象,SubItemIndex和SubItem属性的使用方法以及如何排序。
Private Sub Form_load()
'确保ListView控件的view属性为报表视图。
ListView1.View=lvwReport
'添加三列。
ListView1.ColumnHeaders.Add,"Name","姓名"
ListView1.ColumnHeaders.Add,"Sex","性别"
ListView1.ColumnHeaders.Add,"Age","年龄"
'向控件添加ListItem对象。
Dim itmX As ListItem
'添加column1的名称。
Set itmX=ListView1.ListItems.Add(1,"ZL","张力")
'使用SubItemIndex将SubItem与正确的ColumnHeader关联。使用关键字("Sex")指定正确的ColumnHeader。
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
'使用ColumnHeader关键字将SubItems字符串与
'正确的ColumnHeader关联。
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"
Set itmX=ListView1.ListItems.Add(1,"LF","李芳")
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="22"
Set itmX=ListView1.ListItems.Add(1,"WW","王伟")
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)
Select Case ColumnHeader.Key
Case "Sex":ListView1.SortKey=1
ListView1.SortOrder=lvwAscending
ListView1.Sorted=True
Case "Age":ListView1.SortKey=2
ListView1.SortOrder=lvwAscending
ListView1.Sorted=True
End Select
End Sub
七、带刻度滑块---Slider
Slider控件是一个包含滑块和可选择性刻度标记的窗口,可以通过拖动滑块,用鼠标单击滑块的任意一侧或者使用键盘移动滑块来选择一个值。
在选择离散数值或某个范围内的一组连续数值时,Slider控件十分有用。例如,无需键入数字,通过将滑块移动到刻度标记处,可以用Slider控件来输入数值。
Silder控件的大多数基本属性比较简单,我们这里重点介绍一些较有用而又常易忽略的属性。
TickStyle属性
该属性返回或设置Slider控件上显示的刻度标记的样式。
SelectRange,SelStart和SelLength属性
Slider控件可以选择某个范围内的数值,这就要用到SelectRange,SelStart和SelLength属性。
SelectRange属性决定Slider控件是否可以选择一个范围。如果SelectRange属性为True,SelStart为选定范围的起始值,SelLength为选定范围的长度。
如果SelectRange属性为False,则SelStart属性的设置值与Value属性的设置值相同,SelLength属性无效。
下列代码允许在按住SHIFT键时,用鼠标拖动或单击Slider控件以选择一个范围。
Private Sub Form_Load()
'设置slider控件的设置值
Slider1.Max=20
End Sub
Private Sub Slider1_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single)
If Shift=1 Then '如果按住Shift键,则Slider1.SelectRange=True '打开SelectRange。
Slider1.SelStart=Slider1.Value'设置SelStart数值
Slider1.SelLength=0'设置先前的SelLength(如存在)为0。
End If
End Sub
Private Sub Slider1_MouseUp(Button As Integer,Shift As Integer,x As Single,y As Single)
if Shift=1 Then
'如果在一点决定返回上一步,将发生错误。
On Error Resume Next
'否则使用SelStart和当前数值设置SelLength。
Slider1.SelLength=Slider1.Value-Slider1.SelStart
Else
Slider1.SelectRange=False'如果松开SHIFT键。
End If
End Sub
在程序中,常用Slider控件来代替键盘输入数字,如下面的例子。
该例通过Slider控件来显示不同的长度。
Private Sub Form_Load()
Slider1.Min=0
Slider1.Max=50
Slider1.SmallChange=1
Slider1.LargeChange=10
Slider1.TickFrequency=5
End Sub
Private Sub Slider1_Change()
Label1.Caption="长度是"&Format(Slider1.Value/5,"#.00")&"厘米"
End Sub
八、ProgressBar控件
最后,我们来看一下ProgressBar。在应用程序中,当进行一个较长的操作比如安装或载入程序 时,通常会用一个进度指示器来表示进度。在VB中,这个工作可以由ProgressBar控件来完成。ProgressBar控件通过从左到右用一些方块填充矩形来表示一个较长操作的进度。
在运行时,ProgressBar控件监视着操作完成的进度。控件有一个行程和一个当前位置。行程代表该操作的整个持续时间。当前位置则代表应用程序在完成该操作过程时的进度。其使用方法与Slider控件相似。
好了,到这里我们把Common家族都介绍完了,各位VB同道,若您把他们兄弟几个调教好了,保管您的应用程序界面具有专业水准。如果您在工具箱里找不到他们的话,可以用右键单击工具箱,选择“部件”,然后选中MicrosoftWindowsCommonControls5.0,最后单击“确定”就行了。
|