Visual Basic 语 言 程 序 设 计第 12章 界面设计
本章介绍多文档界面 (MDI)、图像列表框、
工具栏、状态栏及应用程序向导。使读者在界面设计和应用程序开发两方面都得到提高。
Visual Basic 语 言 程 序 设 计
12.1 多文档界面
我们经常使用的 Windws98的记事本,是单文档界面,在这个界面中,当打开一个文件时,自动关闭原来的文件。同一个时刻,只能处理一个文档。
多文档界面 (MDI,Multiple Document Interface)
允许创建在单个容器窗体中包含多个窗体的应用程序。绝大多数基于 Windows的大型应用程序都是多文档界面,例如,Microsoft Word和 Microsoft
Excel等。多文档界面可同时打开多个文档,它简化了文档之间的信息交换。
Visual Basic 语 言 程 序 设 计
12.1.1 多文档界面的特性
多文档界面由父窗体和子窗体组成,父窗体也称 MDI窗体,
是作为子窗体的容器;子窗体也称文档窗口,显示各自文档。图 12.1是一个多文档应用程序,它由一个父窗体和三个子窗口组成。多文档界面有如下特性:
(1)所有子窗体均显示在 MDI窗体的工作区中。用户可以改变、移动子窗体的大小,但被限制在 MDI窗体中。
(2)当最小化子窗体时,它的图标将显示在 MDI窗体上,而不是在任务栏中。当最小化 MDI窗体时,所有的子窗体也被最小化,只有
MDI窗体的图标出现在任务栏中。
(3)当最大化一个子窗体时,它的标题与 MDI窗体的标题一起显示在 MDI窗体的标题栏上。
(4)MDI窗体和子窗体都可以有各自的菜单,当子窗体加载时覆盖
MDI窗体的菜单。
Visual Basic 语 言 程 序 设 计
12.1.2 创建和设计 MDI窗体
开发多文档界面的一个应用程序至少需要两个窗体:一个
(只能一个 )MDI窗体和一个 (或若干个 )子窗体。在不同窗体中共用的过程、变量应存放在标准模块中。
MDI窗体是子窗体的容器,该窗体中一般有菜单栏、工具栏、状态栏,不可以有文本框等控件。
1.创建 MDI窗体
用户要建立一个 MDI窗体,可以选择,工程,菜单中的,添加 MDI窗体,
命令即可。本例 MDI窗体名为,MDIWrite”,以文件名为 A12_1.frm保存,如图 12.2所示。
2.设计 MDI窗体
设计 MDI窗体时,可以建立菜单栏、工具栏、状态栏。
Visual Basic 语 言 程 序 设 计
12.1.3 创建和设计 MDI子窗体
MDI子窗体主要是显示应用程序的文档,通常,在该窗体上应用有文本框,也可以有菜单栏以及工具栏。
1.创建 MDI子窗体
MDI子窗体是一个 MDIChild属性为 True的普通窗体。
因此,要创建一个 MDI子窗体,应先创建一个新的普通窗体,然后将它的 MDIChild属性设置为 True即可。
在工程管理窗口中,可以看到,子窗体的图标与普通窗体的图标不同,如图 12.2所示。若要建立多个子窗体,则重复进行上述操作。
Visual Basic 语 言 程 序 设 计
(1)创建对象变量
创建以文档为中心的应用程序,为了在运行时建立若干个子窗体存取不同的文档,一般先创建一个子窗体作为这个应用程序文档的模板,然后通过调用对象变量来创建其他子窗体。创建对象变量用下面的语句。
格式,Dim 〈 变量名 〉 As New〈 对象类型 〉
功能:声明对象变量。
例如:如果已建立了一个 Name为,frmChild”的子窗体,则:
Dim NewDoc As New frmChild
就会为,frmChild”建立一个新实例,新实例具有与,frmChild”窗体相同的属性、
控件、代码。
说明,New关键字后应是,类名,。实际上,在工程中添加的窗体有着特殊性,它既是窗体类,也是窗体对象,与在窗体上建立的控件具有不同的性质。
例如:
Dim NewDoc As New Form1 '声明并创建一个 NewDoc窗体变量
NewDoc.Show '新窗体显示在屏幕上
Visual Basic 语 言 程 序 设 计
(2)创建 MDI子窗体的代码
窗体程序运行时建立一个子窗体的程序代码如下:
Dim No As Integer
Public Sub FileNewProc()
Dim NewDoc As New frmChild
No=No+1
NewDoc.Caption="编辑区 "
NewDoc.Show '显示子窗体
End Sub
如果多次调用 FileNewProc过程,则可以产生多个
,frmChild”的子窗体,图 12.1就是此程序运行的效果。
Visual Basic 语 言 程 序 设 计
2.设计 MDI子窗体
MDI子窗体的设计与 MDI窗体无关,但在运行时总是包含在 MDI窗体中。在该子窗体上一般有存放文档的控件,也可有子窗体菜单。
【 例 12.1】 设计一个简易的书写器。
Visual Basic 语 言 程 序 设 计
2.Screen对象和
Screen.ActiveControl属性
在多窗体操作中,每个窗体中往往有多个控件,要想获得屏幕上当前窗体及当前控件的信息,必须使用 Screen对象,Screen对象能提供当前窗体或控件的详细特性。 Screen对象有许多属性,如 ActiveForm、
ActiveControl等。
如果屏幕上有多个窗体,通过 Screen对象的 ActiveControl属性,能够引用当前屏幕上激活窗体的各个属性,无需知道当前窗体对象的具体名称。 Screen.ActiveControl在 MDI窗体应用程序中非常有用。
例如,把选定的文本复制到剪贴板上的过程如下:
Private Sub CopyProc()
ClipBoard.SetText Screen.ActiveControl.SelText
End Sub
此程序段与上述程序段的功能是一样的。
即 Screen.ActiveControl与 frmMDI.ActiveForm.ActiveControl是等同的。
Visual Basic 语 言 程 序 设 计
3.显示 MDI窗体及其子窗体
显示 MDI窗体及其子窗体的方法是 Show,加载子窗体时,
其父窗体 (MDI窗体 )会自动加载并显示。而加载父窗体 MDI
时,其子窗体并不会自动加载。
MDI窗体有 AutoShowChildren属性,决定是否自动显示子窗体。如果它被设置为 True,则当改变子窗体的属性 (如
Caption等 )后,会自动显示该子窗体,不再需要 Show方法;
如果设置 AutoShowChildren为 False,则改变子窗体的属性后,不会自动显示该子窗体,子窗体处于隐藏状态,直到用 Show方法才能把它们显示出来。 MDI子窗体没有
AutoShowChildren属性。
Visual Basic 语 言 程 序 设 计
4.维护子窗体的状态信息
在用户决定退出 MDI应用程序时,必须有保存信息的机会。为了使其能够进行,应用程序必须随时确定自上次保存以来子窗体中的数据是否有改变。通过在子窗体中声明一个公用变量来实现此功能。
例如:
Public bTextChange As Boolean
在子窗体中有一个 Text1控件,当该控件中的 Text属性每一次改变时,Change事件就会将
bTextChange设置为 True,表示自上次保存以来 Text1的内容已经改变。
Private Sub Text1_Change
bTextChange=True
End Sub
如果,用户每次保存子窗体的内容时,将 bTextChange设置 False,可以提示 Text1的内容不再需要保存。例如,有一个叫做,保存,(mnuSave)的菜单项和一个用来保存文本框内容的名为
FileSaveProc的过程:
Private Sub mnuSave_Click()
FileSaveProc '调用保存 Text1内容到文件的过程
bTextChange=False '设置状态变量
End Sub
同样,当关闭当前活动子窗体时,判断 bTextChange的状态,决定是否要存盘,确保文档的安全性。
Private Sub mnuClose-Click()
If bTextChange Then FileSaveProc
Unload Me
End Sub
Visual Basic 语 言 程 序 设 计
5.用 QueryUnload事件卸载 MDI窗体
在 MDI窗体的控制菜单框中,选择,关闭,命令,或选择,文件,菜单上的,退出,命令,VB将试图卸载 MDI窗体。
当 MDI窗体被卸载时,QueryUnload事件首先为 MDI窗体调用,然后再为一个打开的子窗体调用。如果在这些 QueryUnload事件过程中没有代码,则取消 Unload事件,然后,每一个子窗体被卸载,最后,MDI窗体被卸载。
由于 QueryUnload事件在窗体卸载之前被调用,因此在窗体卸载前可以给用户一个机会来保存窗体。下述代码使用 bTextChange标志,来决定是否要提醒用户在子窗体卸载之前进行保存。
Private Sub mnuExit_Click()
'当用户在 MDI应用程序中选取,文件/退出,命令时,卸载
'MDI窗体,为每个打开的子窗体调用 QueryUnload事件。
Unload frmMDI
End
End Sub
Private Sub Form_QueryUnload(Cancel As Integer,UnloadMode As Integer)
If bTextChange Then FileSaveProc
End Sub
Visual Basic 语 言 程 序 设 计
12.1.5 MDI应用程序的菜单
大多数 MDI应用程序都有,窗口,菜单,在,窗口,菜单上显示了所有打开的子窗体标题,另外还有层叠、平铺和排列图标命令。
在 VB中,如果要在某个菜单上显示所有打开的子窗体标题,
只需利用菜单编辑器将该菜单的 WindowList属性设置为
True,即选中显示窗口列表检查框。
对子窗体或子窗体图标的层叠、平铺和排列图标命令,通常是放在,窗口,菜单上,用 Arrange方法来实现的。
Arrange方法形式如下:
格式,MDI窗体对象,Arrange 〈 参数 〉
功能:实现窗口的排列方式。
说明:参数是一个整数,表示所使用的排列方式,系统提供四种选择,
Visual Basic 语 言 程 序 设 计表 12.3 排列方式
值 功 能
0 各子窗体按层叠方式排列
1 各子窗体按水平平铺方式排列
2 各子窗体按垂直平铺方式排列
3 当各子窗体被最小化为图标时,能够使图标重新排列
如果层叠、平铺和排列图标菜单项的名称分别为,mnuCascade”、
,mnuTile”和,mnuIcon”,程序段如下:
Private Sub mnuCascade_Click()
frmMDI.Arrange 0 '层叠子窗体
End Sub
Private Sub mnuTile_Click()
frmMDI.Arrange 1 '平铺子窗体
End Sub
Private Sub mnuIcon_Click()
frmMDI.Arrange 3 '对已经最小化的子窗体重新排列图标
End Sub
Visual Basic 语 言 程 序 设 计
12.1.6 应用 MDI窗体注意事项
MDI窗体为使用 VB进行应用程序的开发提供了高效、多功能的良好平台,采用 MDI窗体已是非常普遍的技术手段。为了提高其性能,在使用 MDI编写应用程序时要注意以下事项:
(1)应尽量少地使用 MDI子窗体。因为,每加载一个子窗体,就要占据较多的内存及系统资源。过多地使用子窗体,会造成内存和系统资源不够,
影响程序运行的速度。
(2)在 MDI应用程序的设计中,若在子窗体中,尽量用 Me关键字表示当前窗体;而在 MDI窗体中,则应使用 ActiveForm属性。
(3)对于在子窗体菜单项,MDI菜单项或工具栏上都要执行的相同功能,
应以过程的形式存放在标准模块 (Model)中,供各模块共享。
(4)如果应用程序中所使用的是不可视控件,如 Timer,CommonDialog控件等,都应放在 MDI窗体上,使子窗体也可以使用这些控件。
【 例 12.2】 进一步完善简易书写器的功能。
Visual Basic 语 言 程 序 设 计
12.2 图像列表框、工具栏和状态栏
工具栏为用户在应用程序时,快速访问最常用的菜单命令提供了很大的方便,进一步增加应用程序的菜单界面,已经成为 Windows应用程序的标准功能。制作工具栏有两种方法:一是手工制作,即利用图形框和命令按钮,这种方法比较繁琐,在 VB 6.0示例程序中,SDI和 MDI
两个实例都是采用这种方法制作的;另一种方法是将 ToolBar、
ImageList组合使用,使得工具栏制作与菜单制作一样简单易学。状态栏 StatusBar可显示各种状态信息。
使用这些控件必须打开,部件,对话框,选择,Microsoft Windows
Common Controls 6.0”,将控件添加到工具箱,如图 12.10所示。
在多文档界面 (MDI)的应用程序开发中,工具栏和状态栏应在 MDI父窗体中。
Visual Basic 语 言 程 序 设 计创建工具栏的步骤是:
(1)在 ImageList控件中添加所需的图像
(2)在 ToolBar控件中创建 Button对象。
(3)在 ButtonClick事件中用 Select Case语句对各按钮进行相应的编程。
Visual Basic 语 言 程 序 设 计
12.2.1 图像列表框
图像列表框控件 (ImageList)不能单独使用,它专门为其他控件提供图像库,
是一个图像容器控件。工具栏按钮的图像就是通过 ToolBar控件从 ImageList
的图像库中获得的。
1.常用属性
(1)Index属性
该属性设置或返回控件在控件数组中的标识号。
(2)ListImages属性
该属性返回对图像列表控件中,ListImage 对象,的集合的引用。
2.“ListImage对象,的常用属性,ListImage对象,是任意大小的位图,是组成
,ListImages集合,的成员。
(1)Count属性
该属性返回集合中对象的数目。
(2)Index属性
该属性返回或设置一个数,它惟一指定集合中的对象。
(3)Key属性
该属性返回或设置字符串,在集合中惟一地标识一个成员。
(4)Picture属性
该属性返回或设置控件中要显示的图片。
Visual Basic 语 言 程 序 设 计
3.图像列表框的使用
使用图像列表框的操作步骤如下:
(1)在窗体上增加 ImageList控件后,选中该控件,默认名为
ImageList1。
(2)单击右键,在弹出的快捷菜单中,选择,属性,,然后在,属性页,对话框中,选择,图像,标签,如图 12.11所示。其中:
,索引 (Index)”表示每个图像的编号,在 ToolBar的按钮中引用;
,关键字 (Key)”表示每个图像的标识名,在 ToolBar的按钮中引用;
,图像数,表示已插入的图像数目;,插入图片,按钮,插入新图像,图像文件的扩展名为,ico,.bmp,.gif,.jpg等。,删除图片,按钮,用于删除选中的图像。
(3)各属性设置完成后,单击,确定,按钮。
【 例 12.3】 建立一个图像列表框控件 ImageList1,它装入了 12个图像,每个图像的属性如表 12.5左面所示。
Visual Basic 语 言 程 序 设 计
12.2.2 工具栏
在 Windows应用程序中我们经常见到并使用工具栏,工具栏上按钮的使用使我们很容易完成多应用程序的操作。 Toolbar控件包含一个 Button对象集合,利用该控件我们可以很方便地将经常使用的命令建成工具栏按钮,并为按钮指定图像、文字和工具提示,从而构成功能全面的工具栏。使用工具栏 (ToolBar)可以建立多个按钮,每个按钮的图像来自 ImageList对象中插入的图像。
Visual Basic 语 言 程 序 设 计
1.常用属性
(1)Align属性
该属性决定工具栏控件在窗体上的显示位置与大小,其值为 1~ 4,
分别表示在窗体的顶部、底部、左边和右边,且随窗体自动调整。
(2)TextAlignment属性
该属性决定按钮文本显示在按钮下方还是右侧。 0为下方; 1为右侧。
(3)Style属性
该属性返回或设置一个值,它决定控件的外观。 0为立体的; 1为平面的。
(4)ImageList属性
该属性设定与本控件相关联的 ImageList控件名称,以便在按钮上显示图像。该属性必须在,属性页,中设置。
Visual Basic 语 言 程 序 设 计
2.Button对象的属性
(1)Caption属性
该属性设置或返回该对象在集合中的标题。
(2)Index属性
该属性设置或返回该对象在集合中的索引值。
(3)Key属性
该属性设置或返回该对象在集合中的惟一字符串标识。
(4)Image属性
该属性设置或返回该对象上显示的图像,其值为该图像在图像列表中的 Index属性值。
(5)Style属性
该属性决定该对象的外观与状态,0为默认的标准按钮,另有值为 1~ 5。
(6)Enabled属性
该属性设置或返回该对象是否可用。
(7)Visible属性
该属性设置或返回该对象是否可见。
(8)Value属性
该属性设置或返回该对象的值。默认 0表示未按下按钮,1表示按下按钮。
(9)Count属性
该属性用于返回 Buttons集合中的按钮数目。
Visual Basic 语 言 程 序 设 计
3.为工具栏连接图像
为工具栏连接图像的操作步骤如下:
(1)选中,部件,对话框中的,Microsoft Windows Common
Controls 6.0”选项,可以把工具栏控件调出到工具箱上。
(2)在窗体上增加 ToolBar控件后,打开,属性页,对话框。
(3)选择,通用,标签,如图 12.12所示。在,通用,标签对话框中:
,图像列表,框,表示与 ImageList控件的连接,此例选择
,ImageList1”控件名;如果,可换行,复选框被选中,表示当工具栏的长度不能容纳所有的按钮时,在下一行显示,如果,可换行,复选框未被选中,剩余的按钮不显示;,样式,有两种选择:
0-tbrSTandard,表示如 Windows 95采用的普通风格;
1-tbrFlat,表示如 Windows 98采用的平面风格。
主要区别在于当按钮样式选择 0时,前者按钮不可见,只留出一点空间;
选择 1时,有一条竖线的细窄按钮。
其余各项含义显而易见,一般取默认值。
Visual Basic 语 言 程 序 设 计为工具栏连接图像的操作步骤如下:
(4)连接图像操作完成后,单击,确定,按钮。
建立一个工具栏 ToolBar1,有 12个按钮组成,
其按钮的属性如表 12.5右面所示。设计工具栏的效果如图 12.13所示。
说明:若要对 ImageList控件进行增、删图像,
必须先在 ToolBar控件的,图像列表,框中设置
,无,,即与 ImageList切断联系,否则 VB提示无法对 ImageList控件进行编辑。
Visual Basic 语 言 程 序 设 计
4.为工具栏增加按钮
为工具栏增加按钮的操作步骤如下:
(1)打开,属性页,对话框,选择,按钮,标签,屏幕显示
ToolBar“按钮,标签对话框,如图 12.14所示。
(2)单击,插入按钮,,可以在工具栏中增加按钮,对话框中主要属性的意义及使用方法如下:
索引 (Index):表示每个按钮的数字编号,在 ButtonClick事件中引用;
关键字 (Key):表示每个按钮的标识名,在 ButtonClick事件中引用;
样式 (Style):按钮样式,共 5种,含义如表 12.6所示,效果如图
12.13所示;图像 (Image),ImageList对象中的图像,它的值可以是图中的 Key或 Index;值 (Value):表示按钮的状态,有按下
(tbrPressed)和没按下 (tbrUnpressed),对样式 1和样式 2有用。
(3)工具栏按钮插入操作完成后,单击,确定,按钮。
Visual Basic 语 言 程 序 设 计
5.响应 ToolBar控件事件
ToolBar控件常用的事件有两个,ButtonClick和 ButtonMenuClick。前者对应按钮样式为 0-2,后者对应样式为 5的菜单按钮。
实际上,工具栏上的按钮是控件数组,单击工具栏上的按钮会发生
ButtonClick事件或 ButtonMenuClick事件,可以利用数组的索引 (Index属性 )
或关键字 (Key属性 )来识别被单击的按钮,再使用 Select Case语句完成代码编制。现以 ButtonClick事件为例说明。
(1)用索引 Index确定按钮
Private Sub Toolbar1-ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Index
Case 1 '按了新建按钮,执行新建过程,该过程代码在标准模块
FileNewProc
Case 2 '按了打开按钮,执行打开过程
FileOpenProc
……
End Select
End Sub
Visual Basic 语 言 程 序 设 计
(2)用关键字 Key确定按钮
如下程序段与 (1)程序段作用相同,仅用 Button.Key代替 Button.Index。
Private Sub Toolbar1-ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key
Case "TNew" '按了新建按钮,执行新建过程,该过程代码在标准模块 "
FileNewProc
Case "TOpen" '按了打开按钮,执行打开过程
FileOpenProc
……
End Select
End Sub
使用 Button.Key程序可读性好;而且当按钮有增删时,使用关键字不影响程序。
当单击菜单按钮时,响应 ButtonMenuClick事件,该事件形式如下:
Private Sub Object-ButtonMenuClick([ Index As Integer,]
lByVal Button As ConctlLib.Button) End Sub
Index表示菜单按钮在控件数组中的索引; Button表示对菜单按钮对象的引用。
【 例 12.4】 设计一个工具栏,由 4个按钮组成,能实现改变标签的字体、
字号、粗体和颜色功能。
Visual Basic 语 言 程 序 设 计
12.2.3 状态栏
状态栏控件 (StatusBar)用来显示系统的某些当前状态值。无论是
Windows操作系统还是其他应用软件,通常在窗口的底部都有一个状态栏,且状态栏上即可以显示文本又可以显示图像。 VB提供的状态栏控件也能使我们在自己所编制的程序中使用状态栏。
状态栏控件是由 Panel对象组成的,每一个 Panel对象都能包含文本或图片。状态栏的外观是一组窗格,在程序中每一个窗格都作为 Panel
对象来访问。所有 Panel对象组成 Panels集合。状态栏最多能够包含
16个 Panel对象。利用其 Style属性值中的一个值,程序就可以自动地显示公共数据,如日期、时间和键盘状态等。
状态栏控件可以显示有关在窗体上所查看到的对象、对象组件的信息或关系到该对象操作的上下文信息。状态栏控件与工具栏控件一起使用,就可以提供建立用户界面的有力工具,该界面既经济又含有丰富的信息。
Visual Basic 语 言 程 序 设 计
1.状态栏控件的常用属性
(1)Align属性
该属性决定状态栏控件在窗体中的显示位置和大小。其值为 1~ 4,分别表示在窗体的顶部,底部,左边和右边,且随窗体自动调整。
(2)Style属性
该属性设置或返回状态栏控件的样式。默认值 0表示 Normal样式,正常显示所有 Panel对象;值为 1时表示 Simple样式,仅显示一个大窗格。
(3)Height和 Width属性
该属性决定控件的高度和宽度。
(4)Top属性
该属性决定控件顶端距窗体顶端的距离。
(5)ShowTips属性
该属性决定当鼠标指针在状态栏上的某个窗格停留时,是否显示该窗格的文本,默认为 True。
(6)ToolTipText属性
当 ShowTips属性为 True时,该属性设定要显示的提示文本。
(7)SimpleText属性
当状态栏控件的 Style属性设置为 Simple时,该属性返回或设置显示的字符串文本。
Visual Basic 语 言 程 序 设 计
2.常用事件
状态栏的常用事件:
Click,DblClick,PanelClick和
PanelDblClick事件。
Visual Basic 语 言 程 序 设 计
3.Panel对象的常用属性
(1)Key属性
该属性设置或返回该对象 (窗格 )在 Buttons集合中的惟一字符串标识。
(2)Index属性
该属性设置或返回该对象 (窗格 )在集合中的索引值。
(3)Picture属性
该属性设置或返回控件 (窗格 )中要显示的图片文件名。
(4)Text属性
该属性设置或返回该对象 (窗格 )中显示的文本。
(5)Style属性
设置该对象的样式,默认为 0,表示显示文本和位图。
(6)Alignment属性
该属性设置或返回该对象的标题文本对齐方式。
(7)Bevel属性,
设置或返回该对象的斜面样式,0为没有显示斜面,1为凹下显示,2为凸起显示。
(8)AutoSize属性
调整状态栏的大小后,该属性返回或设置确定 Panel对象的宽度值。
(9)Count属性
该属性返回 Panels集合中 Panels对象的数目。
Visual Basic 语 言 程 序 设 计
4.建立状态栏
建立状态栏的操作步骤如下:
(1)在窗体上增加 Statusbar控件后,打开,属性页,对话框。
(2)在,属性页,对话框中,选择,窗格,标签,屏幕显示,窗格,
标签对话框,如图 12.16所示,可进行所需的设计。
,插入窗格,按钮:在状态栏中增加新的窗格,最多可分成 16个窗格。
,删除窗格,按钮:在状态栏中删除窗格。
,浏览,按钮:可插入图像,图像文件的扩展名为,,ico”或
,.bmp”。
,索引,,表示每个窗格的编号;
,关键字,,表示每个窗格的标识;
,文本,,在窗格上显示的文本;
,样式,,在下拉列表框中,各常数指定系统提供的显示信息。
Visual Basic 语 言 程 序 设 计
5.运行时改变状态栏
运行时,能重新设置窗格 Panel对象以显示不同的功能,这些功能取决于应用程序的状态和各控制键的状态。有些状态要通过编程实现,有些系统已具备。
【 例 12.5】 在窗体上放置标签框、文本框、
命令按钮、列表框、计时器以及一个状态栏。
【 例 12.6】 设计一个具有图像列框、工具栏、状态栏的程序。
Visual Basic 语 言 程 序 设 计
12.3 高级文本框
高级文本框控件 (RichTextBox)可用于输入和编辑文本,它同时提供了比常规的 TextBox控件更高级的格式特性。
从前几章可以知道,对 Text控件只能进行单一的文字格式设置。使用
RichTextBox控件可以实现多种文字格式、段落等的设置,还可以插入图形,可真正构成一个像 Word一样的字处理软件。
要使用 RichTextBox控件,必须打开,部件,对话框,选择
,Microsoft Rich TextBox Controls 6.0”,将控件添加到工具箱。
1.文件操作方法
用 LoadFile和 SaveFile方法,可以方便地为 RichTextBox控件打开或保存文件。
(1)LoadFile方法
格式:对象,LoadFile 文件标识符[,文件类型]
功能,LoadFile方法能够将 RTF文件或文本文件装入控件中。
Visual Basic 语 言 程 序 设 计说明:
(1)文件类型取值 0或 rtfRTF时为 RTF文件 (缺省 )。
(2)文件类型取 1或 rtfTEXT时为文本文件。
(3)过程存放在标准模块中,利用 CommonDialog控件提供路径名。
例如:
Public Sub FileOpenProc()
If frmMDI.ActiveFrom Is Nothing Then FileNewProc '若无子窗体则新建
With frmMDI.ActiveForm
,CommonDialog1.Filter="RTF文件 (*.rtf)|*.rtf|TXT文件 (*.txt)|*.txt"
,CommonDialog1.Action=1
If,CommonDialog1.FilterIndex=1 Then
,RichTextBox1.LoadFile.CommonDialog1.FileName 'RTF格式文件
Else
,RichTextBox1.LoadFile.commonDialog1.FileName,1 'TXT格式文件
End If
,Caption=.CommonDialog1.FileName '文件名显示在子窗体标题栏
End With
End Sub
Visual Basic 语 言 程 序 设 计
(2)SaveFile方法
格式:对象,SaveFile(文件标识符[,文件类型] )
功能:该方法能够将控件中的文档保存在 RTF文件或文本文件中。
例如:下面语句把文档以 RTF格式保存在 D盘 My子目录的 T1.txt文件中。
RichTextBox1.SaveFile("D:\ my\
T1.txt",rtfTEXT)
完整的保存文件的 FileSaveProc过程,可参照
FileOpenProc过程,请读者自行完成。
Visual Basic 语 言 程 序 设 计
2.常用格式化属性
RichTextBox控件提供了一些属性,可对该控件中任何部分的文本使用不同的格式。
例如可以将文本变为粗体或斜体,改变文本的颜色,创建上标或下标。可以调整段落的左右缩进值,还可以使用悬挂式缩进。
为了压缩篇幅,表 12.12只列出了常用格式属性,更详细的介绍见 VB帮助。
【 例 12.7】 用 RichTextBox控件,设计一个文本编辑器。
Visual Basic 语 言 程 序 设 计
12.4 应用程序向导
在 Microsoft Office应用程序中,虽然各种应用程序功能不同,但界面基本相同,
即都由菜单、工具栏、多文档界面构成。
为了提高应用程序开发的效率,VB提供了
,VB应用程序向导,,这是一个非常方便的程序生成器,用户可以用来生成一个应用程序的界面。图 12.22是生成的一个多文档编辑器。
Visual Basic 语 言 程 序 设 计
12.4.1 生成多文档
编辑器生成多文档编辑器的操作步骤如下:
(1)在,文件,菜单中,选择,新建工程,命令,
就会打开,新建工程,对话框,如图 12.23所示。
(2)双击,VB应用程序向导,图标,打开,VB应用程序向导,对话框。
(3)在该向导的一步步带领下,用户可以设计应用程序的界面。
Visual Basic 语 言 程 序 设 计
1.选择操作界面
,VB应用程序向导,提供了三种常用的操作界面,如图 12.24所示。
(1)多文档界面,可同时打开多个文档,如
Office应用程序。
(2)单文档界面,只能打开一文档,如 Notepade
文本编辑器。
(3)资源管理器样式,类似于 Windows资源管理器一样,有 TreeView等控件。
向导还提供了加入其他窗体,使应用程序更加完美;另外,向导还提供了与数据库的链接等。
Visual Basic 语 言 程 序 设 计
2.选取菜单和菜单项
向导中提供了文件、编辑、视图、工具、
窗口、帮助六个菜单名,每个菜单名下有若干个菜单项,如图 12.25所示。用户可自由地选择、取消某个菜单或子菜单项。由此可见,应用程序向导替用户省去了编辑菜单的时间。
Visual Basic 语 言 程 序 设 计
3.选取工具栏按钮
,VB应用程序向导,提供的工具栏有 13个按钮 (除分隔按钮外 ),如图 12.26所示。用户也可根据需要增加 (右移所选按钮 )或删除
(左移所选按钮 )按钮。
Visual Basic 语 言 程 序 设 计
12.4.2 生成 WWW浏览器
在,Internet连接,对话框中,,应用程序向导,还提供了是否访问 Internet的选项,若选中,可生成一个小型的 WWW浏览器,
效果如图 12.28所示。
Visual Basic 语 言 程 序 设 计
12.4.3 生成资源管理器
,VB应用程序向导,中,选择,资源管理器样式,,可以生成类似于 Windows资源管理器一样的应用程序,如图 12.29所示。
说明:
(1)在使用向导的过程中,任何时候单击,完成,
按钮,表示以默认的方式快速生成应用程序。
(2)生成的应用程序主要节省了用户设计界面的工作量,仅仅完成了应用程序的框架,很多过程还须用户根据实际问题的需要,来加以完善。