第二章 VB的界面设计
第二章 VB的界面设计
2.1 VB用户界面设计基础
1. 概述
界面的设计有两步:先绘制控件,然后确定控件属性。
绘制控件:在工具箱里单击想画的控件,在窗体里按下鼠标并拖曳,然后松开鼠标即可。确定属性:先选中控件,然后按F4键或单击工具栏上的属性窗口进入属性(Properties)窗口,再在属性窗口中找到要设置的属性并进行设置。
2. 常用属性的设置
(1)Name属性
对象都有名字,计算机把名字看成对象于对象之间的根本差异,因此在同一窗体里不许出现重名的情况(除非这是一个控件数组),且名字不得超过40个字。
在简单的程序里,给控件命名不是很必要,完全可以使用控件Name属性的缺省值。例如Text1。但在有几十个控件的复杂窗体里,就很难区分它们。所以,VB推荐由三个小写字母的前缀和一个第一个字母为大写的描述性单词组成的名字。例如cmdMyButton是一个命令按钮(前缀是cmd)
推荐的前缀
对象 |
前缀 |
例子 |
确认框(Check Box) |
chk |
chkCareerChioce |
组合框(Combo Box) |
cbo |
cboCrimesCommitted |
命令钮(Command Button) |
cmd |
cmdExit |
数据库控件(Data Control) |
dat |
datTopSecretInfo |
目录列表框(Directory List Box) |
dir |
dirTree |
驱动器列表框(Drive List Box) |
drv |
drvHardDisk |
文件列表框(File List Box) |
fil |
filDocuments |
窗体(Form) |
frm |
frm1040Tax |
框架(Frame) |
fra |
fraGroupButtons |
水平滚动条(Horizontal Scroll Bar) |
hsb |
hsbTemperature |
图形(Image) |
img |
imgPrettyDrawing |
标签(Label) |
lbl |
lblFakeName |
线(Line) |
lin |
linBorder |
列表框(List Box) |
lst |
lstCandidates |
菜单(Menu) |
mnu |
mnuHamAndEggs |
选项钮(Option Button) |
opt |
optStation101 |
图形框(Picture Box) |
pic |
picPrettyPicture |
几何图形(Shape) |
shp |
shpUpOrShipOut |
文本框(Text Box) |
txt |
txtWarning |
垂直滚动条(Vertical Scroll Bar) |
vsb |
vsbMoneyRaised |
(2)Caption属性
Caption即标题,是可以在对象外观上直接看见的文本,可以长达255字符,包括空格和标点符号,比如一个叫cmdOk的命令钮,它的Caption属性就可以是“Ok”。 注意:并不是所有的对象都有此属性,比如文本框、图片框、线条等就没有。
为按钮设置热键:在设置Caption属性时,在需要加下划线的字母前加上 “&” 符号,例如 “&File”,输出的就是“File”,这样就可以通过按ALT键和标题上那个带下划线的字母来选取它了, 不必为此编任何代码。
Name和 caption的比较:
1) Name是系统用来识别对象的,编程时需要用它来指代各对象;Caption是给用户看的,提示用户该对象的作用;
2) Name可以采用系统默认的名称,但Caption应该根据实际情况改成意义明了的名词;
3)所有对象都有Name,但不一定都有Caption;
(3)Top,Left属性
这两个属性决定对象的位置。只有两种情况需要在属性窗口里设置这两个属性:第一种是用户没有鼠标,第二种是程序员需要十分精确地设定这两个值。当选中对象,单击并拖曳它的时候,便在修改这两个值了。
(4)Height,Width属性
这两个属性决定了对象的大小,当选中控件时,它周围出现八个小黑方块,把鼠标指向这些方块,鼠标指针将变成一个双向的箭头,这时按下鼠标并拖曳它,即可改变控件的大小,也就改变了Height,Width属性。
2.2 创建窗体
1. 窗体的属性
(1) 常用属性简介
属性 | 名称 | 说明 |
Name | 窗体名称 | 系统识别窗体的标识名,一个窗体名必须以一个字母开头,可包含数字和下划线,但不能包含空格和标点符号。 |
Caption | 窗体标题 | 出现在窗体标题栏中的文本内容 |
Icon | 窗体图标 | 这个属性是用户经常要使用的一种属性。当用户的应用程序在工具条上最小化或在Windows桌面上变为一个独立应用程序时,该属性决定将采用何种图标,窗体控制框里的图标也由它决定。 |
BackColor | 窗体背景色 | 可以从属性框里弹出调色板,选择所需要的颜色 |
ForeColor | 窗体前景色 | 窗体上打印文字的颜色 |
BorderStyle | 边框风格 | 这个属性决定了窗体边框的样式,共有6种属性值。改变窗体的BordrStyle属性后,窗体在屏幕上没有变化,它只在运行时才变为所要求的样子。 |
Apearance | 外形 | 这个属性用来决定控件是否采用三维效果 |
ControlBox | 控件按钮控件按钮 | 用来决定是否采用 控件框的属性,仅在程序运行时才有效。 |
Font | 字体 | 用来改变该窗体上显示信息的字体、字型和字号,它控制着直接在窗体上打印的文本显示。 |
Visible | 可见性 | 该属性决定窗体是否可见, 默认情况下是可见的。错误地改变其值是很危险的,窗体会从眼前消失, |
WindowState | 窗体状态 | 指定窗体在运行时的三种状态:正常、最小化、最大化。 |
Enabled | 活动性 | 默认值为True,决定窗体能否被访问。 |
Left、Top、Height、Width | 左边距、顶边距、高度、宽度 | 决定窗体在屏幕上的位置及窗体大小。 |
(2)设置属性的方法
1)在设计态通过属性窗口设置
直接在属性窗口中选择或输入既可。
2)在程序代码中改变属性值
代码中的格式为: 对象名 . 属性 = 属性值
例:Form1.BackColor=RGB(255,0,0)
2. 窗体的常用方法
(1)Hide方法
用以隐藏 MDIForm 或 Form 对象,但不能使其卸载。
语法:object.Hide
object 所在处代表一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的窗体就认为是该 object。
说明:
¨ 隐藏窗体时,它就从屏幕上被删除,并将其 Visible 属性设置为 False。 用户将无法访问隐藏窗体上的控件,但是对于运行中的 Visual Basic 应用程序,或对于通过 DDE 与该应用程序通讯的进程及对于 Timer 控件的事件,隐藏窗体的控件仍然是可用的。
¨ 窗体被隐藏时,用户只有等到被隐藏窗体的事件过程的全部代码执行完后才能够与该应用程序交互。
¨ 如果调用 Hide 方法时窗体还没有加载,那么 Hide 方法将加载该窗体但不显示它。
(2)Move方法
用以移动 MDIForm、Form 或控件。
语法:object . Move left, top, width, height
Move 方法的语法包含下列部分:
部分 |
描述 |
object |
可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的窗体缺省为 object。 |
left |
必需的。单精度值,指示 object 左边的水平坐标 (x-轴)。 |
top |
可选的。单精度值,指示 object 顶边的垂直坐标 (y-轴)。 |
Width |
可选的。单精度值,指示 object 新的宽度。 |
height |
可选的。单精度值,指示 object 新的高度。 |
说明:只有 left 参数是必须的。但是,要指定任何其它的参数,必须先指定出现在语法中该参数前面的全部参数。例如,如果不先指定 left 和 top 参数,则无法指定 width 参数。任何没有指定的尾部的参数则保持不变。
(3)Print 方法
在 Immediate 窗口中显示文本。
语法:object . Print [outputlist]
Print 方法的语法具有下列对象限定符和部分:
部分 |
描述 |
object |
必需的。对象表达式,其值为“应用于”列表中的对象。 |
outputlist |
可选的。要打印的表达式或表达式的列表。如果省略,则打印一空白行。 |
outputlist 参数具有以下语法和部分:
{Spc(n) | Tab(n)} expression charpos
部分 |
描述 |
Spc(n) |
可选的。用来在输出中插入空白字符,这里,n 为要插入的空白字符数。 |
Tab(n) |
可选的。用来将插入点定位在绝对列号上,这里,n 为列号。使用无参数的 Tab(n) 将插入点定位在下一个打印区的起始位置。 |
expression |
可选。要打印的数值表达式或字符串表达式。 |
Charpos |
可选。指定下个字符的插入点。使用分号 (;) 直接将插入点定位在上一个被显示的字符之后。使用 Tab(n) 将插入点定位在绝对列号上。使用无参数的 Tab 将插入点定位在下一个打印区的起始位置。如果省略 charpos,则在下一行打印下一字符。 |
说明:
¨ 可以用空白或分号来分隔多个表达式。
¨ 对系统指定的国别设置,用小数点分隔符将所有打印到 Immediate 视窗的数据正确格式化。关键字要用适用于主应用程序的语言输出。
¨对于 Boolean 数据,或者打印 True 或者打印 False。根据主机应用程序的地区设置来翻译 True 和 False 关键字。
¨使用系统能识别的标准短日期格式书写 Date 数据。当日期或时间部件丢失或为零时,只书写已提供的部件。
¨ 如果 outputlist 数据是 Empty,则无内容可写。但是,如果 outputlist 数据是 Null,则输出 Null。在输出 Null 关键字时,要把关键字正确翻译出来。
¨ 要把错误数据作为 Error errorcode 输出。在输出 Error 关键字时,要把关键字正确翻译出来。
¨如果在具有缺省显示空间的模块外使用此方法,则需要 object。例如,如果没有指定对象就在标准模块上调用此方法,则将导致错误发生,但是,如果在窗体模块上进行调用,则会在窗体上显示“outputlist”。
注意: 因为 Print 方法是按照字符比例进行打印,所以字符数与字符所占据的宽度固定的列的数目无关。例如,像 “W” 这样的宽字母占据的宽度超过一固定列宽,而像 "i" 这样的窄字母占据的宽度则较小。考虑到要使用比平均字符更宽的空间,表列一定要留有足够余地。另外,也可以使用固定间距的字体(像 Courier 字体)来确保每一字符均只占一列。
(4)PrintFrom方法
用以将 Form 对象的图象逐位发送给打印机。
语法:object.PrintForm
说明:PrintForm 将打印 Form 对象的全部可见对象和位图。在绘制图形时,如果 AutoRedraw 属性为 True,则在运行时PrintForm 将打印 Form 对象或 PictureBox 控件上的图形。
¨PrintForm 所使用的打印机是由操作系统的控制面板中的设置来决定。
(5) Refresh方法
强制全部重绘一个窗体或控件。
语法:object.Refresh
说明:在下列情况下使用 Refresh 方法:
¨在另一个窗体被加载时显示一个窗体的全部。
¨更新诸如 FileListBox 控件之类的文件系统列表框的内容。
¨ 更新 Data 控件的数据结构。
Refresh 方法不能用于 MDI 窗体,但能用于 MDI 子窗体。不能在 Menu 或 Timer 控件上使用 Refresh 方法。
通常,如果没有事件发生,窗体或控件的绘制是自动处理的。但是,有些情况下希望窗体或控件立即更新。例如,如果使用文件列表框、目录列表框或者驱动器列表框显示当前的目录结构状态,当目录结构发生变化时可以使用 Refresh 更新列表。
可以在 Data 控件上使用 Refresh 方法来打开或重新打开数据库(如果 DatabaseName, ReadOnly, Exclusive 或 Connect 属性的设置值发生改变),并能重建控件的 Recordset 属性内的 dynaset。
(6)Show方法
用以显示 MDIForm 或 Form 对象。
语法:object.Show style, ownerform
Show 方法的语法包含下列部分:
部分 |
描述 |
object |
可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则与活动窗体模块关联的窗体缺省为 object。 |
Style |
可选的。一个整数,它用以决定窗体是模式还是无模式 。如果 style 为 0,则窗体是无模式的;如果 style 为 1,则窗体是模式的。 |
Ownerform |
可选的。字符串表达式,指出部件所属的窗体被显示。对于标准的Visual Basic 窗体,使用关键字 Me。 |
说明:
¨如果调用 Show 方法时指定的窗体没有装载,Visual Basic 将自动装载该窗体。
¨当 Show 在显示无模式窗体时,随后遇到的代码则要执行。当 Show 在显示模式窗体 (modal form) 时,则随后的代码直到该窗体被隐藏或卸载时才能执行。
¨当 Show 在显示模式窗体时,除了模式窗体中的对象之外不能进行输入(键盘或鼠标单击)。对其它窗体进行输入前程序必须隐藏或卸载模式窗体(通常是处于响应用户某些操作状态)。MDIForm 不能是形式的。
¨在模式窗体显示时,虽然应用程序中的其它窗体失效,但其它应用程序不会失效。
¨应用程序的启动窗体在其 Load 事件调用后会自动出现。
下面的例子说明如何使用ownerform 参数:
Private Sub cmdShowResults_Click()
' 显示模式窗体 frmResults.
frmResults.Show vbModal, Me
End Sub
(7)Cls方法
清除运行时 Form 或 PictureBox 所生成的图形和文本。
语法:object.Cls
说明:
¨Cls 将清除图形和打印语句在运行时所产生的文本和图形,而设计时在 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。如果激活 Cls 之前 AutoRedraw 属性设置为 False, 调用时该属性设置为 True,则放置在 Form 或 PictureBox 中的图形和文本也不受影响。 这就是说,通过对正在处理的对象的 AutoRedraw 属性进行操作,可以保持 Form 或 PictureBox 中的图形和文本。
¨调用 Cls 之后,object 的 CurrentX 和 CurrentY 属性复位为 0。
3.窗体的常用事件
(1) Load事件
这个事件发生在窗体被装入内存时,且发生在窗体出现在屏幕之前。窗体出现之前,Visual Basic会看一看Load事件里有没有代码,如果有,那么它先执行这些代码,再让窗体出现在屏幕上。
(2) Click事件,Dblclick事件
这两个事件在单击或双击窗体时发生。不过单击窗体里的控件时,窗体的Click事件并不会发生,Visual Basic会去看控件的Click事件里有没有代码。
(3)Activate (活动事件)与Deactivate(非活动事件)
显示多个窗体时,可以从一个窗体切换到另一个窗体。每次激活一个窗体时,发生Activate 事件,而前一个窗体发生Deactivate事件。
(4)Resize事件
在窗体被改变大小时会触发此事件。
4.窗体的控制
(1) 装入或卸出窗体
要装入或卸出窗体,用Load 或Unload语句。
装入窗体: Load formName
卸出窗体: UnLoad formName
FormName变量是要装入或卸出的窗体名。 Load语句只是把窗体装入内存,并不显示出来,要显示窗体可以使用窗体的Show方法。
(2) 显示或隐藏窗体
要显示或隐藏窗体,用Show或Hide方法。若尚未装入内存则先装入再显示。
显示窗体: formName.show mode
隐藏窗体: formName.hide
FormName变量是窗体名,可选变元mode为0(缺省值)时窗体为非模态,为1时窗体为模态。模态窗体完全占有应用程序控制权,不允许切换到别的应用程序,除非关闭!而非模态窗体则反之。
(3)END语句
END语句的功能是终止应用程序的执行,并从内存卸在所有窗体。语法是: END
2.3 控件
1. 常用控件介绍
(1)标准控件一
|
||||||||||||||||||||||
(2) 常用控件的属性、方法和事件
公共属性 |
Name、Caption、Enabled、Fantsize、Height、Width、Index、Left、Top、 TabStop |
公共方法 |
Move、Refresh、Setfocus(设置焦点) |
公共事件 |
Click、DblClick、LostFocus(失去焦点) |
控件名称 |
属性、方法、事件 |
说明 |
|
TextBox 文本框 (用于接受用户在框内输入的内容) |
Text属性 |
即用户从文本框输入的内容 |
|
PasswordChar属性 |
设置口令时用的掩码,如:用*代替实际输入的内容 |
||
MaxLength属性 |
最大长度,缺省值是0,即可以输入任意个字符 |
||
MultiLine属性 |
为True时可以多行文本,为False时只能输入一行文本 |
||
Alignment 属性 |
文本在框中的对齐方式:0=左对齐,1=右对齐,2=居中 |
||
Chang事件 |
当框中的文本内容发生变化时触发该事件 |
||
LostFocus事件 |
当光标离开文本框时触发该事件 |
||
Label 标签(用于在窗体上添加文字说明) |
Alignment属性 |
Caption文本的对齐方式:0=左对齐,1=右对齐,2=居中 |
|
WordWrap属性 |
为True时可根据标签大小自动换行 |
||
AutoSize属性 |
自动调节大小,为True时可根据文本大小自动调整标签大小,为False时标签大小不能改变,过长的文本被截掉 |
||
ListBox 列表框 (用于列出可供用户选择的项目列表) |
List属性 |
用于保存列表内容,访问: [对象名]. List(列表项序号) 列表项的序号由上到下依次为0、1、2、3…… |
|
ListCount属性 |
列表项数目 |
||
ListIndex属性 |
列表项索引,其值为最后选中的列表项序号,第一个为0,如果未选中任何表项,其值为-1。 |
||
Text属性 |
列表项正文,其值为最后选中的列表项的文本,它与 List(ListIndex)相同。 |
||
Columns属性 |
列表框显示形式取0时为一列显示所有行,其他值为多列。 |
||
Sort属性 |
排序属性,为True时,列表项按ASCII码排序,为False时,则不排序。 |
||
AddItem方法 |
添加列表项,使用格式: [ 对象名.] AddItem<列表项文本>[,插入位置序号] 若不指定位置,则插入到列表末尾。 |
||
Clear方法 |
删除列表所有项目 |
||
RemoveItem方法 |
删除列表项,使用格式: [ 对象名 .] RemoveItem 删除项序号 |
||
PictureBox 图片框 Image 图象(用来把图形放入程序里) |
AutoSize/Stretch 属性 |
调整图片框以适应图象 / 调整图象以适应外框 |
|
Picture属性 |
决定控件中显示的图象 |
||
装入图形: imgMyHand.Picture = LoadPicture ( “c:\graphics\hand.bmp” ) 删除图形: imgMyHand.Picture = LoadPicture ( “ ” ) |
|||
ComboBox 组合框(将列表框和文本框结合在一起) |
Style属性 |
外观属性:取0时,系统创建一个带下拉式列表框的组合框;为1时,系统创建一个由文本框和列表框直接组合在一起的简单组合框,可以从列表框中选择,也可以直接在文本框中输入;为2时,系统创建一个没有文本框的下拉式列表框,单击列表框上的按钮才显示文本框,用户不能在文本框中输入,只能在列表框中选择。 |
|
Text 属性 |
其值为用户从列表框中选定的文本或直接输入的文本。 |
||
AddItem方法 |
添加列表项,使用格式: [ 对象名.] AddItem<列表项文本>[,插入位置序号] 若不指定位置,则插入到列表末尾。 |
||
Clear方法 |
删除列表所有项目 |
||
RemoveItem 方法 |
删除列表项,使用格式: [ 对象名 .] RemoveItem 删除项序号 |
||
CommandButton 命令按钮 |
Cancel属性 |
取消属性,它为True时, 按〖ESC〗即等于单击此按钮。 |
|
Default属性 |
缺省属性,它为True时, 按回车键即等于单击此按钮。 |
||
Timer计时器 |
Interval属性 |
两次调用Timer事件的事件间隔,用于创建动态效果。 |
|
Frame 框架 CheckBox 复选框 OptionButton选项按钮 |
Alignment属性 |
决定它们的对齐方式,0=左对齐,1=右对齐。 |
|
Value属性 |
决定它们是否被选中的属性 |
2. 常用控件的使用辨析
(1)文本框和标签的区别:
文本框通常用于向计算机输入信息,而标签通常用于输出信息。文本框是一个十分重要的控件,因为由复选框和选项按钮向程序输入的信息毕竟只有少数的几条信息而已。标签和文本框的区别很小,标签可以看成是一个在运行时不能修改正文的文本框,因此标签主要用于输出信息。
(2) Label的AutoSize属性和WordWrap属性
¨ 为了使标签具有垂直伸展和字换行处理,必须设置它的AutoSize属性和WordWrap属性同时为True。
¨ AutoSize属性为False,WordWrap属性为False时,若标签不够高而Caption太长时,Caption将被切割掉。
¨ AutoSize属性为False,WordWrap属性为True时,情况也如此。
¨ AutoSize属性为True,WordWrap属性为False时,表示可以水平伸展,但只显示一行信息。
(3) PictureBox和Image的Stretch属性和AutoSize属性
¨ Image只有Stretch属性,而PictureBox只有AutoSize属性。
¨ AutoSize属性设为True,则PictureBox改变自己的大小来适应其中的图形。
¨ Stretch属性设为True,则Image中的图形将改变自己的大小来适应外面的边框。
(4)Frame 框架、CheckBox 复选框、OptionButton选项按钮的区别:
¨ 复选框和选项按钮用于向程序输入信息, 框架用来对复选框和选项按钮进行分组。
¨ 复选框选中时会在小方框里打一个钩,选项按钮选中时会在小圆圈里点一个点。
3.控件使用举例
例3、4
2.4 定制菜单
1. 菜单概述
Windows中的菜单一般由菜单条、菜单、菜单项、子菜单、弹出式菜单组成。
2. 普通菜单的设计
(1) 给菜单命名
菜单标题和菜单命令也有Caption和Name属性,设置了这两个属性就等于创建了菜单。Name是一个抽象名称,Caption是屏幕上可见的,可在Caption里加入 “&” 来设置热键。
(2) 增加和删除菜单
在Menu Editor中部有三个命令钮分别是下一个、插入、删除。插入可用来增加新的菜单。在这三个键下面的Caption列表框里选中菜单项(这时它的底色就变成深蓝色),单击插入键,Visual Basic将上一个增亮菜单下推并增亮一空行,就可以输入新菜单名和标题了。删除键可用来删掉菜单。选中要删掉的菜单,单击Delete键就可以删掉它了。
(3) 移动菜单标题
有四种情况:向上移动,向下移动,向左缩排,向右缩排,选中某一菜单标题,安上下箭头,则这个菜单将上下移动到你喜欢的位置上,这也决定了它在界面中的位置。如果按左右箭头,情况则有所不同。由于菜单是分级的,所以,如果它没有缩排,则它是一个菜单标题;如果它缩排一次,那么它将变成一个菜单命令;如果缩排两次,那么它将成为一个子菜单命令。VB里可以总共设计四层子菜单。
(4) 设置分离条
分离条是指在菜单中将命令分组的线,VB将分离条也看成一个菜单项,它也需要Caption和Name属性,而且也有其它属性,分离条与菜单项的区别是分离条的Caption属性必须是连字号即减号。也就是,当设置了一个Caption属性为 “-” 的菜单项时,实际上就设置了一个分离条,分离条的名字可以是barFile1之类,以表明分离条的位置。
(5) 菜单的各种简单属性
在菜单编辑器里有许多确认框和一些文本框及一个下拉式的列表框,这些决定了菜单的各种属性。
1) Checked 复选属性
这个属性值设置为真,将在菜单命令左边产生一个打勾的确认标志。
2) Enabled有效属性
各种各样的用户会产生千奇百怪的操作,在许多Edit菜单里都会有不同形式的让菜单命令模糊的情况。Enabled属性为真,则菜单命令是清晰的,Enabled属性为假,则菜单命令是模糊的,这时用户就不能选中这个菜单项了。
3) Visible 可见属性
对暂时不用的菜单, 如果把Visible属性设为假,则菜单根本不会出现在屏幕上。这样做比把Enabled属性设为假显得更加干脆!
4) Index属性
可以生成菜单命令数组,用索引号区分开。例如向File菜单中添加一系列最近打开的文件名。添加菜单可用Load方法。以上属性可以在运行时设置,形成动态的菜单的情况。
例如:
mnuUndo.Enabled = False
mnuProperty.Visible = False
还可以改变Caption等属性。
mnuUndo.Caption = “Redo”
(6)为每个菜单项编写事件过程代码
3. 生成弹出式菜单(或浮动菜单)
几乎每个Windows应用程序都提供弹出式菜单,用户可以右键单击窗体或控件取得这个菜单。弹出式菜单也属于普通菜单,只是不固定在窗体上,而是可以在任何地方显示。
弹出式菜单用PopupMenu方法调用。假设已经用菜单编辑器生成了名为mnuedit的菜单,则可以在MouseUp事件加入如下代码就可以生成弹出式菜单:
If Button = 2 Then PopupMenu mnuedit
4.菜单设计示例
例 5
2.5 设计状态条、工具栏、进程条等
1. 创建状态条
选中状态条,按F4键进入属性窗口,双击(Custom)可以进入主要的设置窗口SBarCtrl属性窗口。
(1) 选择面板形状
在SBarCtrl属性窗口里选择General标签,在Style列表框里选择多面板(缺省形式)或单面板简单文本形式。
(2) 添加或删除状态条面板
在SBarCtrl属性窗口里选择Panels标签,单击Insert按钮添加一个面板,或单击Remove按钮删除一个面板。
(3) 在单面板里显示文本
在SBarCtrl属性窗口里选择General标签,在SimpleText框里输入想显示在状态条面板里的文本。用代码显示的方式是:
StatusBar1.SimpleText = "New string to appear"
(4) 在多面板里显示文本或图形
1). 在SBarCtrl属性窗口里选择Panels标签,用Index旁的按钮选择面板序号。
2). 在Text框里输入想显示在状态条面板里的文本。
3). 如果想加入图形,单击Browse按钮打开一个图形选择对话框,选择想加入的图形,然后单击打开按钮。
4). 最后按确定按钮。
5). 用代码显示的方式是:StatusBar1.Panels(x).Text = "New string to appear"
6). 编写代码
如果是一个单面板状态条,当用户单击状态条时,只需用下面的事件过程来响应:
Private Sub StatusBar1_Click()
End Sub
如果是一个多面板状态条,就需要鉴别用户单击的是哪一个面板,可用下面的事件过程来识别用户所单击的面板:
Private Sub StatusBar1_PanelClick(ByVal Panel As Panel)
Select Case Panel.Index
Case 1
'Code to follow if user clicks the first panel
Case 2
'Code to follow if user clicks the second panel
Case 3
'Code to follow if user clicks the third panel
End Select
End Sub
2. 创建工具栏
1. 建立工具条
1).在工具箱里单击工具条图标,拖到窗体的任何位置,Visual Basic自动将ToolBar移到顶部。
2).按F4键打开属性窗口。
3).双击(Custom),打开ToolBar属性窗口。
4). 选择Buttons标签。
5). 单击Insert按钮,Visual Basic就会在你的工具条上显示一个空按钮,现在为你的每一个按钮重复这一步。
6). 单击确定按钮。
如果想把按钮分组,首先生成一个分隔的按钮,再在刚才提到的对话框里将这个按钮的Style属性改为3-Separator。
(2) 为工具条增加图画
1). 在Visual Basic工具箱里单击ImageList图标,并将它拖到窗体的任何位置(位置不重要,因为它总是不可见的)。
2). 按F4打开属性窗口。
3). 双击(Custom),打开ImageListCtrl属性窗口。
4). 选择Image标签。
5). 单击Insert Picture,在现在图形的对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的工具条按钮重复此步。
6). 单击确定按钮。
7). 单击工具条,按F4,双击(Custom),显示ToolBar属性对话框。
8). 选择General标签,在ImageList框里选择刚才添加的ImageList控件。
9). 选择Buttons标签,单击紧挨Index框的向左或向右箭头以选择一个按钮序号。出现在工具条最左边的按钮序号为1。
10). 在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。
11). 为每个按钮重复第10步。
12). 单击确定按钮,现在Visual Basic就会在工具条上显示精美的图形了。
(3) 为工具条添加文本信息
在ToolBar属性对话框中选择Buttons标签,在Caption框里输入想显示在按钮上的文本。
(4) 添加ToolTips
ToolTips是一种当点到工具按钮时弹出的小标签。ToolTips很方便,可以告诉那些新手每个按钮是干什么用的。在刚才提到的ToolBar属性对话框中选择Buttons标签,在ToolTipText框里输入想作为ToolTip的文本。
(5) 编写代码
双击工具条,以下面的格式输入代码就可以了:
Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
Select Case Button.Index
Case 1
'Code to follow if user clicks the first button
Case 2
'Code to follow if user clicks the second button
Case 3
'Code to follow if user clicks the third button
End Select
End Sub
3. 创建进程条
进程条的三个属性:
(1). Min属性代表进程条全空时的值,缺省时为0。
(2). Max属性代表进程条全空时的值,缺省时为100。
(3) Value属性代表进程条当前的值(不用在属性窗口里找这个属性,它不出现在属性窗口中,但它的确存在),它大于Min属性,小于Max属性。改变Value属性的值将改变进程条的进度显示。
为了了解进程条的功能,在窗体里添加一个进程条和一个命令钮,双击命令钮进入代码窗口,键入如下代码:
Private Sub Command1_Click()
If ProgressBar1.Value < ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False ‘当进程条满了的时候让进程条消失
End If
End Sub
4. 创建滑块
(1). 选择滑块的外观
1). Orientation属性决定滑块的方位,可以是垂直的或水平的滑块。
2). TickStyle属性决定滑块标记的样子。
3). TickFrequency属性规定了沿着滑块的标记的间隔大小,缺省的状态是1,表明每个可能值都出现标记,如果把值设置为3,则每三个可能值出现一个标记。
(2) 滑块的Min,Max,Value属性
这三个属性和进程条的这三个属性差不多,Min,Max表示滑块的最小和最大值,Value表示进程条的当前值。
(3) 滑块的LargeChange,SmallChange属性
LargeChange规定了当用户用鼠标单击滑块时,滑块可移动的距离。SmallChange规定了用户按左箭头或右箭头时滑块的移动距离。
5. 创建TabStrip页框控件
(1) 设置样式
在TabStrip属性窗口里选择General标签,在Style列表框里选择Tabs或Buttons样式。
(2) 规定TabStrip的标题和ToolTips
1). 在TabStrip属性窗口里选择Tabs标签,在Caption框里输入标题。
2). 在TabStrip属性窗口里选择Tabs标签,在ToolTipText框里输入ToolTip。
(3) 增减标签总数
在TabStrip属性窗口里选择Tabs标签,单击Insert Tab按钮增加标签,单击Remove Tab按钮删除标签。
(4) 在TabStrip上显示图形
1) 在窗体里拖入一个ImageList控件,
2) 按F4打开属性窗口。
3) 双击(Custom),打开ImageListCtrl属性窗口并选择Image标签。
4) 单击Insert Picture,在现在图形的对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的Tab按钮重复此步。
5) 单击确定按钮。现在ImageList里存储了需要的图形。
6) 选择TabStrip,进入TabStrip属性窗口并选择General标签,在ImageList列表框里选择ImageList1。
7) 现在选择Tabs标签,单击紧挨Index框的向左或向右箭头以选择一个Tab序号。在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。
8) 单击确定按钮。
(5) 用户响应
可用类似下面的代码来识别用户在哪一个项目上单击。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Index
Case 1
'Code to follow if user clicks the first tab
Case 2
'Code to follow if user clicks the second tab
Case 3
'Code to follow if user clicks the third tab
End Select
End Sub
(6) 在TabStrip上放置其它控件
在用户选择了标签后,TabStrip要求编写代码来显示或隐藏控件。下面的代码上是一个TabStrip上有一个命令钮和一个选项钮的例子,当用户选择了第一个Tab时,选项钮出现,当用户选择了第二个Tab时,命令钮出现。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Index
Case 1
Command1.Visible = False
Option1.Visible = True
Case 2
Command1.Visible = True
Option1.Visible = False
End Select
End Sub
2.6 Visual Basic的输入机制
程序的基本操作就是数据的输入,数据处理和数据的输出。Visual Basic可中用于输入的控件主要有:文本框Text Box、复选框Check Box、选项按钮Option Button、列表框List Box、组合框Combo Box、滚动条Scroll Bar、通用对话框控件。还有一个函数叫InputBox函数,也可用于数据的输入。
1. 通过文本框输入数据
只要取得文本框的Text属性就可以对其进行操作了。下面的代码可将Text1文本框的正文变成大写输出至Text2文本框。
Private Sub Form_Click ()
Text2.Text = UCase(Text1.Text)
End Sub
2. 通过复选框和选项按钮输入数据
只要检测到Check Box和Radio Button的Value属性值就可以知道它们是否被选上了。
3. 通过列表框和组合框输入数据
(1) 列表框List Box和组合框Combo Box的不同
它们在Windows的Open,Save As对话框里最为常见。组合框又包括三种类型,这三种类型要在它的Style属性里设置。列表框仅仅把可以选择的项目列出来,而组合框里有的类型可以允许用户输入数据。它们的异同是:
名称 |
是否有下拉选项 |
是否允许用户输入 |
列表框 |
否 |
否 |
组合框类型0 |
是 |
是 |
组合框类型1 |
否 |
是 |
组合框类型2 |
是 |
否 |
(2) 列表项目的增减
使用AddItem,RemoveItem语句可以增减列表项目。通常将项目增减的语句放入Form_Load事件里。
ListBoxName. AddItem item
ComboBoxName. AddItem item
item是新项目名称,必须是字符串类型,非字符串类型可通过Str函数或Format函数来转换。
列表框,组合框的每一项目都有一个Index值,第一个项目的Index值是0,第二个是1,依此类推。删除项目可通过删除其Index值来实现。
ListBoxName. RemoveItem item
ComboBoxName. RemoveItem item
如:ListBoxName. RemoveItem 0则删除了第一项,这时原来的第二项就变成了第一项。
可以在设计阶段设定列表项目, 方法是:
在属性窗口选择List属性,将出现一个下拉列表,在列表中输入第一项,按Ctrl+Enter,输入第二项……,最后用Enter结束。
(3) 取得列表框/组合框的数据
可以通过取得Text属性或通过取得ListIndex属性来判断哪一项被选择了。ListIndex属性的值也同样是第一个为0,第二个为1……如:
If List1.Text = “Visual Basic” Then Instructions
If List1.ListIndex = 1 Then Instructions
组合框有时允许用户自己输入数据,这时所输入数据的ListIndex值为-1。
4. 通过滚动条Scroll Bar取得数据
在Visual Basic的工具箱里有两种滚动条:一种是垂直的,一种是水平的,它们的差异无非是摆放的方向不一样。
(1) 滚动条的主要属性及事件
1)Min,Max属性
Min属性决定滚动条最左端或最顶端所代表的值。Max属性决定滚动条最右端或最下端所代表的值。
2)LargeChange,SmallChange属性
SmallChange决定在滚动条两端的箭头钮上单击时改变的值。LargeChange决定在滑块上方或下方区域单击时改变的值。
3)Value属性
Value属性代表当前滑块所处位置的值,这个值由滑块的相对位置决定。
4)Change事件
当滑块位置发生变化时就引发了Change事件。
(2) 取得滚动条的数据
滚动条并不是一个数据输入的好控件,因为无法从滚动条上直接看出输入的数据,但它的优点是可以表示一定范围里的相对位置。为了得到数据,只要取得滚动条的Value属性就可以了。
5. InputBox函数
InputBox函数提供一个简单的对话框供用户输入信息。在把其它版本的BASIC程序移植到Visual Basic时,InputBox函数通常用来代替INPUT语句。这个对话框的样子基本上是上面的样子。
它的完整语法是:x = InputBox (prompt, title, default, xpos, ypos, helpfile, context)
其中,prompt是提示的字符串,这个参数是必须的。title是对话框的标题,是可选的。default是文本框里的缺省值,也是可选的。xpos,ypos决定输入框的位置。helpfile,context用于显示与该框相关的帮助屏幕。返回值 x 将是用户在文本框里输入的数据,x是一个字符串类型的值。如果用户按了Cancel钮,则 x 将为空字符串。
6. 使用通用对话框控件
Windows应用程序里的Open对话框,Save As对话框在各个应用程序里看起来都是一样的,通用对话框控件就可以提供这些对话框的标准功能。
(1) Open对话框及Save As对话框
打开Open对话框使用ShowOpen方法,打开Save As对话框使用ShowSave方法。
Private Sub mnuOpen_Click ()
On Error GoTo ErrorHandler
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Text Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat|All Files (*.*)|*.*"
CommonDialog1.ShowOpen ' display Open common dialog box.
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub
其中第三行决定了在文件格式类型栏里出现的文件类型。第五行需要一个自己的打开文件的过程,这个过程需要的参数就是通用对话框返回的文件名。通用对话框的CancelError属性设为True的话,用户单击Cancel按钮将产生一个错误信息程序,凭借这个信息程序可以检测到用户的放弃操作。
(2) Color对话框
下面的过程可用用户选择的颜色作为窗体的底色。
Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub
(3) Fonts对话框
下面的过程可用字体对话框改变文本框的字体:
Private Sub mnuFonts_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlCFBoth ' Flags property must be set to cdlCFBoth
CommonDialog1.ShowFont ' Display Font common dialog box.
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub
代码的第三行出现了通用对话框的Flags属性决定了通用对话框的一些可选项,不过即使不赋值给Flags,代码也一样会按缺省的情况去执行的。
2.7 Visual Basic的输出机制
作为输出的对象,Visual Basic提供了标签,文本框,窗体,图片框(Picture Box)等用于输出,而且Visual Basic里也有一堆命令、属性涉及信息的输出,较常用的有:MsgBox函数,Print方法,Cls方法,Tab函数,Format函数,FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline属性,CurrentX,CurrentY属性等。
1. 通过MsgBox函数输出
了解Windows应用程序的人都知道当用户操作错误时,应用程序往往打出一个消息框来提示用户的错误,象这样:
Dim Action As Integer
Action = MsgBox("单击确定键将引爆此计算机!", vbYesNo + vbCritical + vbDefaultButton2, "警告!")
If Action = 6 Then Explode
这个功能在Visual Basic里是通过MsgBox函数来实现的,这样程序员就不必自己去画一个消息框了。语法是:
Action = MsgBox (msg, type, title)
其中,msg是消息的内容,是一个字符串型的变量,type及title参数是可以省略的,type参数指定显示的按钮是什么及使用什么样的图标(这个参数往往让新程序员思考几分钟),title参数指定消息框的标题。type参数的含义是:
数值 |
符号常量 |
意义 |
0 |
vbOKOnly |
只显示 Ok 按钮 |
1 |
vbOKCancel |
显示 Ok Cancel 按钮 |
2 |
vbAbortRetryIgnore |
显示 Abor Retry Ignore 按钮 |
3 |
vbYesNoCancel |
显示 Yes No Cancel 按钮 |
4 |
vbYesNo |
显示 Yes No 按钮 |
5 |
vbRetryCancel |
显示 Retry Cancel 按钮 |
16 |
vbCritical |
Stop Sign对极其重要的问题提醒用户 |
32 |
vbQuestion |
Question Mark增亮没有危险的问题 |
48 |
vbExclamation |
Exclamation Mark强调警告用户必须知道的事情 |
64 |
vbInformation |
Information Mark可以使乏味的信息变得有趣 |
0 |
vbDefaultButton1 |
第一个按钮缺省 |
256 |
vbDefaultButton2 |
第二个按钮缺省 |
512 |
vbDefaultButton3 |
第三个按钮缺省 |
例如:Action = MsgBox (“Are you girl?”, vbYesNo + vbQuestion, “Question”)。使用这个函数时Visual Basic将产生一个标题为Question,具有问号和Yes,No按钮的消息框。作为一个函数,本质上还是要返回值的,MsgBox的返回值确定了用户的选择,程序可根据返回值做出相应的动作。
返回值 |
含义 |
返回值 |
含义 |
1 |
选择 Ok 按钮 |
5 |
选择 Ignore 按钮 |
2 |
选择 Cancel 按钮 |
6 |
选择 Yes 按钮 |
3 |
选择 Abort 按钮 |
7 |
选择 No 按钮 |
4 |
选择 Retry 按钮 |
2. Print方法,Cls方法,Tab函数
(1) Print方法
Print 方法的语法是:object. Print expressionlist
object表示Print作用的对象,比如是Form或者是Picture Box,object是可以省略的,省略时的Print往往在窗体上输出。expressionlist是输出的内容,允许许多项数据的输出,在数据间可以加入“,”或”;”。加入分号将使下一数据项紧挨着上一数据项输出。而加入逗号,则Visual Basic将下一数据项在下一打印区输出,其实就是空了几个空格后再输出。两个打印区之间有14个字符的宽度,其实这也很难衡量,比如14个“W”所占的宽度大概是14个“i”所占宽度的三倍多。幸好中国日本之类的方块字所占的宽度基本上是一样的,所以较好处理一些。
(2) Tab函数
Tab函数只用在Print方法中,它用来移动下一个字符到打印位置,这将省去数空格的功夫。语法是:Tab (column)
Tab函数将Visual Basic自定义的14字符宽的打印区扔到一边,用自己的方式定义了新的灵活的打印区宽度。
(3) Cls方法
Cls也是一个古老的BASIC语句,原来它的作用总是把屏幕变成黑色,然后在左上角或左下角闪烁一个光标,Visual Basic里它的作用是清除绘图语句和Print语句产生的文字和图形。
语法是:object. Cls
object指清除的对象,可以是Form或Picture Box。如果object省略,通常Visual Basic都把当前的窗口作为Cls操作的对象。
3. Format函数
Format函数用于制定字符串或数字的输出格式。语法是:x = Format (expression,fmt)
expression是所输出的内容。fmt是指输出的格式,这是一个字符串型的变量,这一项若省略的话,那么Format函数将和Str函数的功能差不多。如:
语句 |
输出 |
Format (2, “0.00”) |
2.00 |
Format (.7, “0%”) |
70% |
Format (1140, “$#,##0”) |
$1,140 |
简单地,fmt里的字符是这样的:
字符 |
意义 |
字符 |
意义 |
0 |
显示一数字,若此位置没有数字则补0 |
. |
小数点 |
# |
显示一数字,若此位置没有数字则不显示 |
, |
千位的分隔符 |
% |
数字乘以100并在右边加上”%”号 |
- + $ ( ) |
这些字出现在fmt里将原样打出 |
Format函数也可用来对时间进行输出。
fmt |
输出 |
fmt |
输出 |
m/d/yy |
8/16/96 |
h:mm:ss a/p |
10:41:29 p |
d-mmmm-yy |
16-August-96 |
h:mm |
22:41 |
d-mmmm |
16-August |
h:mm:ss |
22:41:29 |
mmmm-yy |
august-96 |
m/d/yy h:mm |
8/16/96 22:41 |
hh:mm AM/PM |
10:41 PM |
4. FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline属性
很明显,这些属性都与字体有关,许多控件都有这些属性。通常它们在设计阶段可以双击font属性来设置,运行期间可以直接设置。它们的意义是:
FontName |
字体的名称 |
FontItalic |
字体是否用斜体显示 |
FontSize |
字体的大小 |
FontStrikethru |
字体是否有删除线 |
FontBold |
字体是否用粗体显示 |
FontUnderline |
字体是否有下划线 |
如:Text1.FontBold = True,将把Text1文本框的FontBold属性设为True。
5. 窗体,图片框的CurrentX,CurrentY属性
这两个不可见的属性确定了下一次打印或绘图的水平及垂直坐标。如上面讲的Print方法,当expression后使用 “,” 时,Visual Basic将改变CurrentX,CurrentY值为下一打印区域开始的值,于是,输出便指向了下一个打印区域。而Cls方法将把操作对象的CurrentX,CurrentY的值设为(0,0)。
6. 通过标签控件输出
标签控件的特点是运行时不能直接修改它,通常一个文本框旁边都有一个标签用来标识文本框。标签的Autosize和WordWrap属性是一对有用且令人困惑的属性。
申明
非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!
博文欢迎转载,但请给出原文连接。