Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 1页第 4章 VB界面设计
模拟 Windows文本编辑器程序设计
菜单设计
工具栏与状态栏
通用对话框
数据文件
RichTextBox控件
多文档 MDI编程
错误处理
知识延伸 —— ListView和 TreeView控件
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 2页知识回顾( 2-1)
常用控件的使用
框架、单选按钮、复选框
列表框、组合框
选项卡
滚动条
计时器提问:列表框或组合框的初始下标为多少?
提问:说出可以获得列表框最后一个元素的方式提问:向列表框中添加元素的方式
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 3页知识回顾( 2-2)
提问:怎样判断单选按钮和复选框的状态?取值是什么?
提问:怎样设置计时器的时间间隔?
提问:当计时器到达时间间隔时,触发什么事件?
提问:经常对滚动条编写什么事件?这些事件在什么时候触发?
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 4页本章目标
掌握 Windows界面的设计
掌握菜单的设计
掌握工具栏与状态栏的设计
掌握通用对话框的使用
熟悉文件的操作
掌握错误处理
了解 TreeView,ListView控件
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 5页引例四示例:模拟 Windows文本编辑器。
要求:
1,模拟记事本程序。
2,菜单包含:文件、编辑、字体、
查找和加密。
3,具有工具栏,工具栏包含:文件的新建、打开、保存;剪切、复制、
粘贴以及粗体、斜体、下划线。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 6页菜单设计主菜单名快捷键热键子菜单标记主菜单条分隔线菜单项子菜单名下拉式菜单系统的组成结构:
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 7页菜单的分类
普通菜单
– 菜单栏上显示的菜单
弹出式菜单
– 右键单击鼠标,在鼠标所在处显示的菜单
动态菜单
– 比如,文件菜单下的已打开文件的列表
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 8页菜单编辑器的应用
打开方式
– 前提:在窗体设计器窗口激活时
– 方法一:选择“工具”菜单 ——,菜单编辑器”
– 方法二:右键单击窗体设计器,选择“菜单编辑器”
– 方法三:使用快捷键 Ctrl + E
菜单控件属性 区菜单控件列表 区编辑区常用属性:
标题 (Caption),若有热键,前面加 &
名称 (Name):分隔符也应有名称
快捷键 (Shortcut):菜单名没有快捷键
复选 (Checked):为 TRUE时有?
有效 (Enabled)
可见 (Visible)
事件,只有一个 Click事件
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 9页练习例题建立一个有菜单功能的文本编辑器。
说明:
此处把本章引例中的菜单均制作出来;
把,文件,菜单中的新建(把文本框中的内容请空)、
退出(结束应用程序的运行)两个操作完成;
把,编辑,菜单中的剪切、复制、粘贴、删除、全选、
插入时间和日期、自动换行(利用文本框的不同滚动条形式)功能实现;
把,字体,菜单中字体大小实现;
在菜单显示的时候,要注意是否可操作。
( 单击查看代码 )
( 单击查看代补充资料,Clipboard对象 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 10页动态菜单设计
在程序运行时,菜单随时增减如:“文件”菜单中能保留最近打开的文件名
步骤
– 在菜单设计时,加入一个菜单项,其 Index为 0
(菜单数组),Visible属性设为 False。
– 在程序运行时,通过 Load方法向菜单数组增加新的菜单项。
– 在程序运行时,通过 UnLoad方法删除菜单数组中的菜单项。
建立一个有菜单功能的文本编辑器。
说明:字体大小中的具体内容由代码添加。
( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 11页弹出式菜单
特点
– 独立于窗体菜单栏,而显示在窗体内的浮动菜单
– 显示位置取决于单击鼠标键时指针的位置
实现步骤
– 在菜单编辑器中制作对应的菜单(如果不希望该菜单出现在窗口顶部,设该菜单的 Visible属性为 False)
– 操作时弹出菜单:
[对象,]PopupMenu 菜单名 [,标志,x,y]
– 说明
菜单名:此菜单名下必须包含子菜单
标志:定义弹出式菜单的位置和性能
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 12页注意
对于菜单控件只有一个事件 —— Click
若使用 PopupMenu方法弹出菜单时,第一个参数菜单名是必须的,并且该菜单至少要有一个子菜单
顶层菜单不能设置快捷键,菜单项可以设置快捷键,但是快捷键的具体取值是固定的
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 13页工具栏
两种制作方法
– 手工制作:利用图片框和命令按钮
– 通过组合使用 ToolBar和 ImageList控件(均是
ActiveX控件)
位于
– Microsoft Windows Common Control 6.0
工具栏创建步骤
– 在 ImageList控件中添加所需的图像;
– 在 ToolBar控件中创建 Button对象;
– 在 ToolBar控件的 ButtonClick事件中通过
Select Case语句对各按钮进行相应的编程。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 14页在 ImageList控件中添加图像
ImageList控件不单独使用,它包含了一个图像的集合,
专门用来为其他控件提供图像库
属性
– 索引( Index)
– 关键字( Key)
– 可插入的图像文件,.ico,bmp,gif,jpg等
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 15页在 ToolBar控件中添加按钮
第一步:为工具栏连接图像
ToolBar与
ImageList的连接工具栏样式
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 16页
第二步:为工具栏增加按钮对象
索引( Index)、关键字( Key)每个按钮的编号、标识
在 ButtonClick事件中引用;
图像 (Image) ImageList对象中的图 像,值可以是 Key或 Index
样式 (Style),共 6种
St y l e =0 St y l e =3 St y l e =4 St y l e =1 St y l e =2
除菜单按钮 (5)外的 5种样式
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 17页
第三步:响应 ToolBar控件事件
– 常用事件
ButtonClick:按钮样式为 0~2
ButtonMenuClick:按钮样式为 5
– 实际上,工具栏上的按钮是 控件数组
– 用索引
Private Sub Toolbar1_ButtonClick(Byval Button As
ComctlLib.Button)
Select Case Button.Index
Case 1
FileNewProc
Case 2
FileOpenProc
……
End Select
End Sub
用关键字
Select Case Button.Key
Case "TNew"
FileNewProc
Case "TOpen"
FileOpenProc
……
End Select
注:第一个按钮的 Index取值为 1。
问题:用 Index还是用 Key? Key 可读性好,可维护性好
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 18页练习例题在原来创建的文本编辑器上增加工具栏。
说明:
此处的工具栏包含:新建、打开、保存、剪切、
复制、粘贴、加粗、斜体、下划线;
注意每个按钮的样式;
设置按钮在不同阶段所处的状态,即是否可操作;
实现对,编辑,菜单中,工具栏,菜单项的编程;
在原有代码的基础上继续编程。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 19页状态栏
特点
– 显示系统信息和对用户的提示,如:系统日期、
软件版本、光标的当前位置、键盘的状态等
– 一般显示在窗体底部
两种制作方法
– 手工制作:利用图片框和标签
– 通过使用 StatusBar(是 ActiveX控件)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 20页状态栏的创建
创建 Panel对象
属性
– 索引 (Index)和关键字 (Key)
– 文本 (Text)
– 对齐 (Alignment):信息在窗格中的排放位置
– 样式 (Style):制定系统提供的显示信息可插入图像显示的文本样式在原来创建的文本编辑器上增加状态栏。 ( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 21页对话框
对话框分类
– 系统预先定制的。
InputBox和 MsgBox对话框
– 用户自定义的对话框
在普通的窗体上进行设置
没有控制菜单,ControlButton = False
没有最大化和最小化按钮
MaxButton = False 并且 MinButton = False
对话框大小不变
BorderStyle = 3 ( Fixed Dialog)
– 通用对话框
一组基于 Windows的标准对话框
共有 6种
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 22页通用对话框
位于
– Microsoft CommDialog Control 6.0
说明
– 属于非可视控件,同计时器,ImageList
打开通用对话框(在运行阶段)
通用对话框的类型 Action 方法打开 (Open) 1 ShowOpen
另存为 (Save As) 2 ShowSave
颜色 (Color) 3 ShowColor
字体 (Font) 4 ShowFont
打印机 (Printer) 5 ShowPrinter
帮助 (Help) 6 ShowHelp
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 23页公用属性
Action,P
打开通用对话框的属性
DialogTitle属性设置或返回对话框标题栏上显示的内容,代替默认的对话框标题
CancelError属性
“取消”按钮:向程序表示用户想取消当前的操作
True:单击“取消”按钮,通用对话框自动将错误对象
Err的错误号 Err.Number设置为 32755(cdlCancel)。
False:单击“取消”按钮,不产生错误信息。(缺省值)
通用对话框仅用于返回用户输入、选择或确认的信息,
不能真正实现具体的操作,具体操作必须通过编写相应代码才能实现。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 24页文件对话框
包含:打开 /另存为对话框
需要设置的属性
FilterFileName
InitDir
FilterIndex
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 25页打开 /另存为对话框属性页
FileName:文件名称(包含路径)
FileTitle:文件名称(不包含路径,只读属性)
InitDir:初始化路径,默认是当前工程的路径
Filter:过滤器。用于过滤文件类型,是文件列表框中只显示指定文件类型的文件。格式为:
文件说明 1|文件类型 1[|文件说明 2|文件说明 2…]
如,Word文档 (*.DOC)|*.DOC|文本文件 (*.TXT)|*.txt|All
Files|*.*
FilterIndex:过滤器索引。索引值从 1开始,依次加 1。
DefaultExt:用于“另存为”对话框,指定文件默认扩展名。
DialogTiltle
FileName
InitDir
Filter FilterIndex
DefaultExt
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 26页几个练习例题在窗体上放置一个可以进行多行输入的文本框。
说明:
单击,保存文件,按钮,打开文件另存为对话框;
对话框可显示文本文件(后缀,txt),Word文档
(,doc)或所有文件;
选定保存路径并输入保存文件名后,单击保存,
把文本框中的内容写入文件。
( 单击查看代码 )
在窗体上放置一个可以进行多行输入的文本框。
要求:
单击,打开文件,按钮,打开文件打开对话框;
对话框中只显示文本文件(后缀,txt);
选中某个文件后,单击打开,在文本框中显示选中文件的内容。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 27页颜色对话框
属性
– color:设置或返回选定的颜色
例如:
CommonDialog1.ShowColor
Text1.ForeColor = CommonDialog1.Color
Label1.caption=commondialog1.color
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 28页字体对话框
Flags属性,必须设置,控制显示字体的类型
cdlCFScreenFonts &H1 屏幕字体
cdlCFPrinterFonts &H2 打印机字体
cdlCFBoth &H3 打印机字体和屏幕字体。
cdlCFEffects &H100显示删除线和下划线检查框以及颜色组合框
FontName FontBold,FontItalic FontSize
FontStrikethruFontUnderline
Color
Min,Max
示例。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 29页打印 /帮助对话框
打印对话框
– 属性
Copies:打印份数
FromPage:起始页码; ToPage:终止页码
Orientation:打印方向
cdlPortrait纵向 cdlLandscape横向
帮助对话框
– 属性
HelpFile:用于指定帮助文件的路径及其文件名称。
HelpCommand:用于返回或设置所需要的联机帮助的类型。
示例。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 30页在原来创建的文本编辑器上增加通用对话框的操作。
说明:
增加,文件,菜单中打开、保存两个操作,使其能够选择要打开的文件,以及设置可以保存的文件路径和 文件名;
完成,字体,菜单中字体、字体颜色两个操作,注意相关按钮的状态变化;
在原有代码的基础上继续编程。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 31页数据文件? 文件系统控件
Sub drvDrive_Change()
dirDirectory.Path = drvDrive.Drive
End Sub
Sub dirDirectory_Change()
filFile.Path = dirDirectory.Path
End Sub
Sub Form_Load()
Item =,所有文件 (*.*)”
cboType.AddItem Item + Space(20 - Len(Item)) + "*.*"
Item = "窗体文件 (*.FRM)"
cboType.AddItem Item + Space(20 - Len(Item)) + "*.FRM"
Item = "位图文件 (*.BMP)"
cboType.AddItem Item + Space(20 - Len(Item)) + "*.BMP"
cboType.ListIndex = 2
End Sub
Sub cboType_Click()
filFile.Pattern = Mid(cboType.Text,21)
End Sub
Sub filFile_Click( )

End Sub
Sub filFile_DblClick( )

End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 32页
属性
事件示例:建立上页所示图形的应用程序。 ( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 33页文件的读写
文件定义
– 存储在外部介质上的数据集合
记录
– 由若干个相互关联的数据项组成,比如:
文件及其种类
– 顺序访问模式:顺序文件,记录可长可短;
– 随机访问模式:随机文件,记录的长度相同;
– 二进制访问模式:二进制文件(可认为记录长度为 1)
数据项学号 姓名 数学成绩 语文成绩 物理成绩 总分
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 34页
顺序文件
– 按顺序依次把记录写入文件;
– 按顺序依次把记录读出来。
– 文本文件:一行一条记录,记录可长可短,以“换行”
字符为分隔符号。
随机文件
– 随机文件可以直接访问文件中的任意一个记录。
– 记录长度相同,根据记录号进行访问
二进制文件
– 直接把二进制码存放在文件中。
记录 1 记录 2 …… 记录 N 文件结束标志
#1 记录 1 #2 记录 2 …… #N 记录 N
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 35页顺序访问模式
打开文件
– 写文件:
Open 文件名 For Output | Append As [#] 文件号
Output:重写该文件
Append:在该文件末尾添加
– 读文件:
Open 文件名 For Input As [#] 文件号
文件号
– 1 ~ 511
– 可以用 FreeFile函数获得下一个可以使用的文件号打开文件 读出或写入 关闭文件示例:以可写的形式打开文件,c:\windows\test.txt”。
Open "c:\windows\test.txt " For Output As #1
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 36页
写文件(两种语句)
– Print语句
Print #文件号,[Spc(n) | Tab(n)],[表达式表 ][; |,]…
功能:将表达式表提供的值写入文件示例:利用 Print语句把数据,This is a test”写入文件号为 1的文件。
示例:假定文本框的名称为 Text1,文件名为 Test.txt。
要求:把整个文本框的内容一次性写入文件。
Open testFile For Output As #1
Print #1,"This is a test!"
示例:假定文本框的名称为 Text1,文件名为 Test.txt。
要求:把整个文本框的内容一个字符一个字符地写入文件。
Open "TEST,TXT" For Output As #1
Print #1,Text1
Close #1
Open " TEST,TXT " For Output As #1
For i=1 To len(Test1)
Print #1,Mid(Text1,i,1);
Next i
Close #1
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 37页
写文件(两种语句)
– Write语句
Write #文件号,[表达式表 ]
以紧凑格式存放(而 Print是根据用户设置的格式存放)
文件中数据项之间自动添加逗号进行分隔,
且数据项用双引号括起来
关闭文件
– Close [[#]文件号 ][,[#]文件号 ]...
– 例如,Close #1,#2
示例:把字符串,This”、,is”和数值 5写入文件号为 1的文件。
Open "TEST,TXT " For Output As #1
Write #1,"This","is",5
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 38页
读操作
– Input语句,Input #文件号,变量表从文件中读出数据,并将读出的数据分别赋给指定的变量 。
(对应使用 Write方法写入的文件)
– Line Input语句,Line Input #文件号,字符串变量从指定文件中读出一行数据,并将读出的数据赋值给指定的字符串变量 。
– Input函数,Input(字符数,#文件号 )
可以读取指定数目的字符。
函数
– LOF(文件号 ):返回文件的长度(总的字节数)
– EOF(文件号 ):返回读写位置
指针在文件尾时,返回 True
其他时候,返回 False
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 39页读文件文件示例:一行一行的读假定文本框的名称为 Text1,文件名为 Test.txt。
Text1.Text = ""
Open "Test.txt" For Input As #1
Do While Not EOF(1)
Line Input #1,InputData
Text1.Text = Text1.Text + InputData + vbCrLf
Loop
Close #1
示例:在,文件系统控件,工程的基础上增加文件读入的操作。要求:在单击某一文本文件后,把内容读入文本框中。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 40页示例:一次性的读入
Text1.Text = ""
Open "Test.txt" For Input As #1
Text1.Text = Input$(LOF(1),1)
Close #1
示例:一个字符一个字符的读入
Dim InputData As String * 1
Text1.Text = ""
Open "Test.txt" For Input As #1
Do While Not EOF(1)
InputData = Input$(1,#1)
Text1.Text = Text1.Text + InputData
Loop
Close #1
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 41页随机访问模式
打开文件
– Open 文件名 For Random As #文件号 [Len = 记录长度 ]
– 记录长度的默认值,128个字符
写文件
– Put [#]文件号,[记录号 ],变量名
– 将一个记录变量的内容,写入指定的记录位置处
– 记录号:大于 1的整数,忽略则插入最后
读文件
– Get [#]文件号,[记录号 ],变量名
– 忽略记录号,则输出当前记录后的那一条记录
Seek()函数:返回当前的读 /写位置,返回值类型为 Long
– Seek(文件号 )
Seek语句:设置下一个读 /写操作的位置
– Seek [#]文件号,位置
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 42页练习例题示例:建立一个随即存储文件” c:\stu.dat”,然后从键盘输入数据,并将数据写入文件;再从文件中读出,并打印在窗体上。
要求:
单击“建立随机存储文件”,输入数据;
单击“显示随机存储文件”,显示相关记录。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 43页二进制访问模式
文件的打开和关闭
– Open 文件名 For Binary As #文件号
– Close [[#]文件号 ][,[#]文件号 ]...
写操作
– Put [#]文件号,[位置 ],变量名
读操作
– Get [#]文件号,[位置 ],变量名
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 44页练习例题
Dim char As Byte
Dim FileNum1,FileNum2 as Integer
FileNum1 = FreeFile
'打开源文件
Open "C:\STUDENT.DAT" For Binary As # FileNum1
FileNum2 = FreeFile
' 打开目标文件
Open "C:\STUDENT.BAK" For Binary As # FileNum2
Do While Not EOF(FileNum1)
Get #1,,char ' 从源文件读出一个字节
Put #2,,char ' 将一个字节写入目标文件
Loop
Close #FileNum1,#FileNum2
示例:文件复制。
示例:在原来文本编辑器的基础上,增加错误处理的内容,使程序具有自处理的能力。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 45页常见文件操作语句和函数
Kill语句
– Kill 文件名
– 功能:删除文件
– 说明:文件名中可以使用通配符,*”和,?”
– 例如,Kill "*.TXT"
FileCopy语句
– FileCopy 源文件名,目标文件名
– 功能:复制一个文件
– 说明,FileCopy不能复制一个已打开的文件
Name语句
– Name 源文件名 As 新文件名
– 功能:重新命名一个文件或目录
– 说明:不能使用统配符,*”和,?”,不能对一个已打开的文件上使用 Name语句。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 46页错误处理
定义
– 允许编写的应用程序对运行时的错误进行响应;
– 即:在运行时,当一个错误发生了,程序能捕捉到这一错误,并可按程序设计者事先设计的方式来处理这个错误。
步骤
– 开启错误捕捉和错误处理方式通过增加一些语句,使应用程序可以捕获异常
(运行时错误),并设置处理方式
– 编写错误处理程序编写当异常产生之后,根据可预知的异常类型采取相应的处理措施
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 47页错误处理步骤
用 On Error语句设置错误陷阱,捕捉错误
编写错误处理程序,根据可预知的错误类型决定采取何种措施
On Error Err对象
Number
错误号其他
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 48页设置错误陷阱
VB提供 On Error语句用于设置错误陷阱,捕捉错误。
On Error语句形式
– On Error Resume Next
当发生错误时,忽略错误行,继续执行下一语句。
– On Error Goto 语句标号当发生错误时,使程序转跳到语句标号所指示的程序块。
– On Error Goto 0
当发生错误时,不使用错误处理程序块。这里的 Go To 0并不指第 0行,即使程序中有第 0行。
当 On Error捕捉到错误后,Err对象的属性 Number
指示对应错误号。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 49页编写错误处理程序
捕捉到错误后根据 Err对象的 Number属性判断具体错误类型
– 使用 Select Case Err.Number语句编写错误处理程序。
– 使用 If Err.Number=语句编写错误处理程序。
继续执行程序:使用 Resume语句
– Resume:重新执行引起错误的语句或指令
– Resume Next:当发生错误时,忽略错误行,继续执行下一语句
– Resume <标号 >:当发生错误时,忽略错误行,并转跳到由 〈 标号 〉 指明的语句继续执行。若 〈 标号 〉
为 0,则表示终止程序执行。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 50页
Err对象
是一个 VB运行期对象,包含了关于最新的错误信息,可以帮助确定发生的错误类型、原因和错误发生的地方。
属性由产生错误的程序设置 。
当程序运行时遇到一个错误,或者当使用 Err对象的
Raise方法故意引发一个错误时,系统便设置 Err对象的属性。
属性 说明
Number 返回或设置一个指定错误的数字值。 N u m ber 是对象的缺省属性。使用 mumber 属性可以确定发生了什么错误。此属性的值是一个对应于错误情况的唯一数字语法,O bject,N um ber
Descr ipt i on 返回或设置一个表达式,该表达式包含一个与错误相关联的描述性字符串,
语法,O bject,D escr ipt io n
( 单击查看补充资料 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 51页错误处理的几种情况
Sub OnErrorStatementDemo()
Dim Response,Msg,Style,Title As String
Dim db As Database,rs As Recordset
On Error GoTo ErrorHandler
Set db = OpenDatabase("A:\Student.mdb") ' 打开数据库
Set rs = db.OpenRecordset("基本情况 ") ' 设置记录集
… …
Exit Sub ' 正常退出本程序
ErrorHandler,' 错误处理块入口
Style = vbRetryCancel + vbCritical + vbDefaultButton2
Select Case Err.Number
Case 53 ' 出错号 53为文件不存在
Msg = "文件不存在 !"
Response = MsgBox(Msg,Style,"出错提示 ")
If Response = vbCancel Then Exit Sub
Case 71 ' 71号驱动器未准备好
Msg = " A盘未准备好 "
Response = MsgBox(Msg,Style,"出错提示 ")
If Response = vbCancel Then Exit Sub
Case Else ' 当发生其他不可预知的错误,退出本程序
Exit Sub
End Select
Resume ' 再次执行原出错语句
End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 52页
删除一个以打开的文件的错误处理
Sub ResumeStatementDemo()
On Error GoTo ErrorHandler ' 设置错误陷阱
Open " testfile " For Output As #1
Kill "testfile" ' 企图删除一个打开的文件
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 55 ' 文件已打开错误
Close #1 ' 处理方法:关闭文件
Case Else
… …
End Select
Resume
End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 53页练习例题示例:打开文件过程,判断是否准备好软盘驱动器或有文件不存在的错误,并处理。
要求:
如果找到文件,读取文件的内容到文本框;
如果驱动器未准备好(错误号 71),提示且根据用户选择进行不同的处理;
如果文件不存在(错误号 53),提示且根据用户选择进行不同的处理;
其他错误,则退出程序运行。
( 单击查看代码 )
示例:在原来文本编辑器的基础上,增加错误处理的内容,使程序具有自处理的能力。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 54页
RichTextBox控件
功能
– 可以输入和编辑文本,可以实现多种文字格式、段落等的设置,
可以插入图形
位于
– Microsoft Rich TextBox Control 6.0
文件操作方法
– LoadFile方法:能将 RTF文件或文本文件装入控件
对象,LoadFile 文件标识符 [,文件类型 ]
文件类型,0或 rtfRTF(默认值,RTF文件)
1或 rtfTXT( TXT文件)
– SaveFile方法:能将控件中的文档保存为 RTF文件或文本文件
对象,SaveFile(文件标识符 [,文件类型 ])
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 55页
RichTextBox常用格式化属性分 类 属 性 值类型 说 明选中文本 SelText,SelStart,SelLength 意义同 Text控件对应属性字体、字号 SelFontName,SelFontSize 意义同 Text控件对应属性字型
SelBold,SelItalic、
SelUnderline、
SelStrikethru
逻辑类型粗体、斜体、
下滑线、删除线上、下标 SelCharOffset 整型 ﹥0 上标,﹤ 0 下标以 Twip为单位颜色 SelColor 整型缩排 SelIndent,SelRightIndent、SelHangingIndent 数值型 缩排单位由 ScalMode决定对齐方法 SelAlignment 整型 0左,1右,2中
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 56页练习例题示例:利用 RichTextBox控件创建一个简单的文本编辑器。如下图所示,( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 57页插入图像文件
在 RichTextBox控件中可以插入图像文件
格式
– 对象,OLEObjects.Add [索引 ],[关键字 ],文件标识符
– OLEObjects:集合,包含一组添加到 RichTextBox
控件的对象
– 索引:表示添加的元素编号
– 关键字:表示添加的元素标识
例如
– RichTextBox1.OLEObjects.Add,,"c:\circles.bmp"
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 58页多文档 MDI编程? 两个概念
– 多文档窗体
– 多重窗体
添加窗体:“工程 — 添加窗体 — 新建 /现存”
注意窗体的名称在工程内必须唯一,且引用现存窗体时两个工程共享该窗体。
保存窗体
设置启动对象:“工程 — 属性 — 启动对象”
加载或卸载窗体加载,Load 窗体名称 ‘仅加载到内存,并不显示卸载,UnLoad 窗体名称
显示或隐藏窗体显示,[窗体名称,]Show
隐藏,[窗体名称,]Hide
不同窗体间数据的存取变量:另一个窗体名,变量名控件属性:另一个窗体名,控件名,属性名
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 59页练习例题示例:在原来文本编辑器的基础上,增加查找菜单中的查找和替换功能。
提示:
当单击“查找”或“替换”菜单命令时,弹出一个新的窗体进行设置;
在新窗体输入相应的查找或替换的内容时,单击“查找”或“替换”时回到原窗体进行查找或替换。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 60页
MDI编程
多文档窗体
– 在运行时,用户可以根据需要创建任意多个相似的文档窗口
– 多文档界面由父窗口和子窗口组成
– 父窗口( MDI窗体):作为子窗体的容器
– 子窗口(文档窗口):显示各自文档,所有子窗口具有相同的功能
MDI应用程序至少应有两个窗体:父窗体和子窗体
父窗体只能有一个
子窗体可以有多个
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 61页
创建和设计 MDI窗体
– 创建:“工程 —— 添加 MDI窗体”
– 设计:一般有状态栏、工具栏和菜单标准窗体
M DI 窗体
M DI 子窗体
(v 6 b 8 - 1 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 62页
创建和设计 MDI子窗体
– 创建,MDI子窗体 是一个 MDIChild属性为 True
的 普通窗体 。要创建多个子窗体,通过窗体类来实现。
Public Sub FileNewProc()
Dim NewDoc As New frmMDIChild
No = No + 1
NewDoc.Caption = "no" & No
NewDoc.Show
End Sub
– 设计:可以拥有普通窗体上的所有内容,比如:
菜单、文本框等。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 63页
MDI窗体与子窗体的交互
活动子窗体和活动控件
MDI窗体的两个属性,ActiveForm 和
ActiveContro
例:将子窗体的文本框中所选文本复制到剪贴板上。
ClipBoard.SetText
frmMDI.ActiveForm.ActiveControl.SelText
显示 MDI窗体及其子窗体显示任何窗体的方法为 show,还有有关规则:
( 1)加载子窗体时,其父窗体会自动加载并显示;
反之则无。
( 2) MDI窗体有 AutoShowChildren属性,决定是否自动显示子窗体。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 64页多文档应用程序中的“窗口”菜单
显示打开的多个文档窗口
– 要在某个菜单上显示所有打开的子窗体标题,只需利用 菜单编辑器 将 该菜单 的 WindowList属性设置为 True。
排列窗口
– 利用 Arrange方法进行层叠、平铺和排列图标。
– 格式,MDI窗体对象,Arrange 排列方式常数 值 描述
v bC a s c a de 0 层叠所有非最小化
v bT ile H oriz on ta l 1 水平平铺所有非最小化
v bT ile V e r tic a l 2 垂直平铺所有非最小化
v bA r r a ng e I c on s 3 重排最小化
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 65页练习例题
注意:
– 当创建子窗体后,子窗体菜单覆盖父窗体菜单。
– 因此,父窗体中菜单,在子窗体中基本都实现。
示例,MDI应用程序的实现。
要求:
在 MDI父窗体上只有菜单栏,包含“文件”(只有一个“新建”菜单项)和“窗口”;
在 MDI子窗体上也只有菜单栏,同样包含“文件”(具有“新建”和“退出”两个菜单项)和“窗口”。
“窗口”菜单中都要求有菜单的排列方式。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 66页知识延伸
TreeView和 ListView控件都是 ActiveX控件
位于:
– Microsoft Windows Common Control 6.0
TreeView控件
– 类似于 Windows资源管理器的目录列表区
– 可显示由一系列 Node对象(节点)组成的树状分层结构列表。
– 常用于显示文档标题、部门分类、文件目录或具有层次结构的其他信息。
ListView控件
– 类似于 Windows资源管理器的文件列表区
– 可使用大图标、小图标、列表和报表(详细资料)
四种不同视图显示列表项。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 67页知识延伸 — ListView
列标头列表项 子列表项列表项文本
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 68页
ListView控件中的对象 (2-1)
ColumnHeader对象和 ColumnHeaders集合
– ColumnHeader对象:即列标头对象
– 每一个列标头对应一个 ColumnHeader对象,比如:
公司、地址、电话等
– 所有的 ColumnHeader对象组成 ColumnHeaders集合
ListItem对象和 ListItems集合
– ListItem对象:即列表项对象
– 每一行列表项对应一个 ListItem对象
– 所有的 ListItem对象组成 ListItems集合
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 69页
ListView控件中的对象 (2-2)
SubItem对象和 SubItem集合
– SubItem对象:即子列表项
– 从列表项的第二列开始往后的每一列都对应该列表项的一个 SubItem对象
– 该列表项的所有 SubItem对象组成该列表项的
SubItems集合
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 70页
ListView控件视图
可以通过 View属性设置 ListView控件的四种显示视图
– 大图标(默认),0 — lvwIcon
– 小图标,1 — lvwSmallIcon
– 列表,2 — lvwList
– 报表,3 — lvwReport
每个列表项除了显示文本还可显示图标,对应三种图标
– Icons属性:大图标视图显示的图标
– SmallIcons属性:小图标、列表视图和报表视图显示的图标
– ColumnHeaderIcons属性:列表头图标
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 71页
ListView控件属性
Arrange:确定该控件上的项目如何排列,仅适用于大图标和小图标(无任何设置、左对齐、顶端对齐)
ColumnHeaders:列标题,在“报表”视图中显示项目
ListItems:可访问控件的项目
View:设置 ListView控件中 ListItem对象的外观
Sorted:确定集合中的项目是否要进行排序
SortKey:确定 ListView控件中的 ListItem对象的排序方式
SelectedItem:返回对选中的 ListItem对象的引用
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 72页练习例题
相关事件
– ColumnClick事件
单击列表视图控件中某个 ColumnHeader对象时,发生该事件
– ItemClick事件
单击列表视图控件中的某个 ListItem对象时,发生该事件示例:熟悉 ListView控件使用。
要求:
在窗体的 ListView控件中分别使用大图标、小图标、
列表视图中显示相应人员的姓名,在报表四种视图显示相应人员的姓名、性别和年龄;
在不同视图下都要有相应的图标形式;
单击某个 ListItem对象时,显示该对象的文本信息。
单击某个列标题时,按当前相反的排序方式显示信息。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 73页知识延伸 — TreeView
节点
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 74页
TreeView控件基本概念
Node对象和 Nodes集合
– Node对象:即节点对象
– 树型结构中的每个操作节点称为一个 Node对象
– Nodes集合,TreeView控件的所有操作节点组成
Nodes集合
TreeView控件中可以用图形和文本结合的方式来显示条目
TreeView控件中的层次本质包括:根节点、父节点和子节点
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 75页
TreeView控件属性
LineStyle:返回或设置节点对象之间显示的线条的样式
( tvwTreeLines和 tvwRootLines)
Nodes:返回对树视图控件 Node对象的集合的引用
Index/Key:返回或设置唯一地标识集合中的对象的编号 /关键字
Children:返回 Node对象中包含的子 Node对象的数目
Sorted:返回或设置 Node对象的子节点是否按字母顺序排序
Style:设置树视图控件中的各 Node对象显示的图形和文本的类型
CheckBoxes:确定是否在树的节点旁边放置一个复选框
Checked:返回或者设置节点旁边的复选框是否被选中
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 76页
TreeView控件属性
Add方法
TreeView1,Nodes.Add
[Relative].[Relationship].[Key].[Text].[Image].[SelectedImage]
参数
– relative,新节点与现有节点之间的关系。
– relationship:指定节点的相对放置位置。
– key:指定新节点的唯一标识符。
– text:指定要在节点中显示的文本。
– image,与 TreeView相关联的图像列表控件中图像索引
– selectedimage,指定选中节点时所显示的图像的索引
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 77页
Relationship参数的设置设置 值 描述
tvwFirst 0 第一个 。 节点放置在与按 relative 指定的节点处于同一级别的所有其他节点的前面 。
tvwLast 1 最后一个 。 节点放置在与按 relative 指定的节点处于同一级别的所有其他节点的后面 。 后续添加的节点可以放置到作为最后一个节点添加的节点的后面 。
tvwNext 2 ( 缺省值 ) 下一个 。 节点放置在按 relative
指定的节点的后面 。
tvwPrevious 3 前一个。节点放置在按 relative 指定的节点的前面。
tvwChild 4 子级。节点成为按 relative 指定的节点的一个子节点。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 78页练习例题示例:熟悉 TreeView控件使用。
要求:
在窗体的 TreeView控件中显示如图所示的形式。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 79页
TreeView控件方法
StartLabelEdit
– 使用户能够编辑标签。
– 格式,Object.StartLabelEdit
– 例如:
Private Sub Form_Click()
If TreeView1.SelectedItem.Index <> 1 Then
TreeView1.StartLabelEdit
End If
End Sub
EnsureVisible
– 使一个可能深 蔵 于 TreeView控件中的 Node对象可视
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 80页提高例题示例:熟悉 TreeView控件使用。
要求:
在窗体的 TreeView控件中显示如图所示的形式;
当分别单击,Add First/Last/Next/Previouse Sibling”按钮,
在选中节点的同级分别添加位于第一位、最后一位、后面一位和前面一位的新节点;
单击,Add Child”按钮,在选中节点添加子节点;
单击,Remove Node”按钮,删除选中节点;
单击,Clear Treeview”按钮,清除 TreeView控件中所有节点信息。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 81页本章总结
菜单设计
工具栏与状态栏
通用对话框
RichTextBox控件
数据文件
MDI编程
错误处理