《《Visual Basic 6.0程序设计》第11章:高级界面设计.ppt》由会员分享,可在线阅读,更多相关《《Visual Basic 6.0程序设计》第11章:高级界面设计.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、http:/ 高级界面设计(时间:2次课,4学时)http:/ 高级界面设计 n用户界面是一个应用程序最重要的组成部分,对一个用户而言,界面就是应用程序。n本章主要介绍高级界面的设计方法,包括多文档界面、工具栏和状态栏等,使读者在界面设计和应用程序开发两方面都得到提高。http:/ 高级界面设计 n11.1 MDI设计设计 n11.2 工具栏设计工具栏设计 n11.3 状态栏设计状态栏设计 n11.4 RichTextBox 控件控件 n11.5 应用程序向导应用程序向导 n11.6 习题习题 http:/ MDI设计设计n11.1.1 创建创建MDI窗体窗体 n11.1.2 加入加入MDI子
2、窗体子窗体 n11.1.3 MDI窗体与子窗体的交互操作窗体与子窗体的交互操作n11.1.4 MDI窗体设计实例窗体设计实例 http:/ MDI设计设计 在基于Windows的应用程序中,用户界面主要有3大类:单文档界面(SDI)、多文档界面(MDI)和资源管理器界面。单文档界面(SDI)就是每次只能打开一个文档,如果希望打开另一个文档,就必须关闭当前的文档,如Microsoft Windows中的写字板和前几章中介绍的窗体等都属于单文档界面。多文档界面(MDI)是提供进行多个文档操作的界面,可以在应用程序中同时打开多个文档,分别以不同的窗体显示在程序画面中,让用户随意在各个文档间来回切换,
3、简化了文档之间的信息交换,如图11.1所示。MDI文件界面由一个(只能有一个)父窗体及多个子窗体组成。父窗体(或称MDI窗体)是作为子窗体的容器,负责管理各个子窗体的操作。子窗体(或称文档窗体)显示各自的文档,所有子窗体具有相同的功能。例如,Microsoft Word、Microsoft Excel等都是多文档界面。http:/ MDI设计设计图11.1 Microsoft Excel的多文档界面 http:/ MDI设计设计与一般的窗体相比,MDI窗体具有自己的特性。(1)MDI窗体(亦称父窗体)只能有且必须有一个。(2)子窗体至少有一个。(3)用户可以改变和移动子窗体的大小,但被限制在M
4、DI窗体中。(4)子窗体最小化后的图标位于MDI窗体的底部(不是在任务栏)。(5)MDI窗体最小化时(图标在任务栏),所有的子窗体也同时最小化(且MDI窗体及其所有子窗体将由一个图标来代表。(6)还原MDI窗体时MDI窗体及其所有子窗体将按最小化之前的状态显示出来。(7)通过设置子窗体的AutoShowChildren属性,可以在程序加载时自动显示或隐藏该 窗体。(8)MDI窗体和子窗体都可以有各自的菜单,当子窗体加载时覆盖MDI窗体的菜单。开发多文档界面的应用程序时至少需要一个(只能是一个)MDI窗体和一个(或若干个)子窗体,在不同窗体中共用的过程变量应存放在标准模块中。http:/ 创建创
5、建MDI窗体窗体 首先进入Visual Basic的系统集成环境,建立新的工程文件,选择【工程】|【添加MDI窗体】命令,在随后出现的对话框中单击【打开】按钮,即出现MDI主窗体。MDI窗体默认的标题和名称属性值均为MDIForml。在该窗体上只能放置图片框或菜单栏、工具栏和状态栏。在图片框中可以放置其他控件,如命令按钮和文本框等。http:/ 加入加入MDI子窗体子窗体 MDI子窗体主要是显示应用程序的文档,因此,在该窗体上可以有文本框,也可以有菜单栏。创建子窗体只要把一个普通窗体的MDIChild属性设置为True即可。有两种方法可以添入MDI子窗体。1.将一般窗体变为MDI子窗体 一般在
6、启动Visual Basic后,系统自动创建了一个窗体Forml,在建立了MDI窗体之后,Forml窗体还不是MDI中的一员,要想让它成为子窗体,必须将其MDIChild属性设置为True。2.添加MDI子窗体 选择【工程】|【添加窗体】命令,像前面添加MDI窗体一样,出现添加窗体时,单击【窗体】,在屏幕上会出现一个新的窗体,将其MDIChild属性设置为True。如果要建立多个子窗体,只要重复进行上述的操作即可。http:/ MDI窗体与子窗体的交互操作窗体与子窗体的交互操作1.加载MDI窗体及子窗体程序运行后,系统会自动加载并显示MDI窗体,但其子窗体不会自动加载。因此,需要在父窗体的Lo
7、ad事件代码中加载并显示子窗体的代码。例如,以下代码加载两个MDI子窗体Forml和Form2:Private Sub MDIForml_Load()Forml.Show Form2.ShowEnd Sub 2.关闭MDI窗体和普通窗体一样,关闭MDI窗体的代码如下:UnloadMDI窗体名 或Unload Mehttp:/ MDI窗体与子窗体的交互操作窗体与子窗体的交互操作系统在执行该代码后,将先触发QueryUnload事件,如果需要保存有关信息及其他处理,可在该事件代码中完成。然后卸载各子窗体,最后卸载MDI窗体。3.访问活动子窗体和活动控件把选定的文本复制到剪贴板上的过程:Sub Co
8、pyProc()调用CopyProc()过程 ClipBoard.SetText frmMDI.ActiveForm.ActiveControl.SelTextEnd Sub例如,要关闭当前窗体,其语句为:UnLoad Mehttp:/ MDI窗体设计实例窗体设计实例例例11.1 MDI窗体的设计(1)创建MDI窗体和子窗体。创建一个新工程,添加一个MDI窗体MDIForm1,创建4个子窗体,分别为Form1、Form2、Form3和Form4,并将这4个子窗体的MDIChild属性都设置为True,使其成为子窗体。(2)MDI窗体上的菜单设计如图11.2所示。【菜单编辑器】如图11.2所示。
9、(3)MDI子窗体设计MDI的子窗体主要用于显示应用程序文档,因此,在子窗体中应有文本框,也可以有菜单栏。建立窗体模板的基本格式为:Dim NewDoc As New frmMDIChild(4)子窗体排列方式的设计http:/ MDI窗体设计实例窗体设计实例图11.2 MDI窗体实例设计屏幕 http:/ MDIForm1的菜单编辑器设置 标 题名 称显示窗口列表说 明文件Mfile菜单名新建Mnew命令打开Mopen命令退出Mexit命令窗口1SW1命令 窗口2SW2命令窗口3SW3命令窗口Mwindows菜单名层叠SA0命令水平平铺SA1命令垂直平铺SA2命令排列图标SA3命令http:
10、/ MDI窗体设计实例窗体设计实例在对于子窗体或窗体图标的层叠、平铺和排列图标命令。表11.2 子窗体的排列方式 常 数值描 述vbCascade0层叠所有非最小化vbTileHorizontal1水平平铺所有非最小化 vbTileVertical2垂直平铺所有非最小化vbArrangeIcons3重排图标http:/ MDI窗体设计实例窗体设计实例程序代码如下:新建事件代码:Private Sub Mnew_Click()FileNewProc调用通用模块过程End Sub通用模块Module1代码:Dim Swno As Integer Public Sub FileNewProc()Di
11、m NewDoc As New Form4 声明并创建一个NewDoc窗体变量,Form4作为模板 Swno=Swno+1 NewDoc.Caption=新窗口&Swno NewDoc.Show 显示新窗体End Sub 窗口1窗口事件代码:Private Sub SW1_Click()Form1.ShowEnd Subhttp:/ MDI窗体设计实例窗体设计实例Private Sub SW2_Click()Form2.ShowEnd SubPrivate Sub SW3_Click()Form3.ShowEnd Sub窗体排列方式事件代码Private Sub SA0_Click()MDIF
12、orm1.Arrange vbCascade 层叠子窗体End SubPrivate Sub SA1_Click()MDIForm1.Arrange vbTileHorizontal 水平平铺子窗体End SubPrivate Sub SA2_Click()MDIForm1.Arrange vbTileVertical 垂直平铺子窗体End SubPrivate Sub SA3_Click()MDIForm1.Arrange 3 对任何已经最小化的子窗体排列图标End Subhttp:/ MDI窗体设计实例窗体设计实例表11.3 MDIForm1的菜单编辑器设置 标 题名 称索 引显示窗口列表
13、说 明窗口Swindows显示打开的窗口列表层叠SA0水平平铺SA1SA为控件数组垂直平铺SA2 排列图标SA3http:/ MDI窗体设计实例窗体设计实例修改窗口排列方式的程序代码只需3行语句即可,修改如下:Private Sub SA_Click(Index As Integer)MDIForm1.Arrange IndexEnd Sub运行时,选择【文件】菜单下的【窗口1】【窗口3】命令依次打开3个窗口,并选择【窗口】|【水平平铺】命令,显示如图11.3a所示窗口。如果选择【文件】|【新建】命令,产生的新文件都是基于Form4模板的子窗体,执行效果如图11.3b所示。http:/ MDI
14、窗体设计实例窗体设计实例a.窗口13的水平排列 b.新建窗口 图11.3 在MDI窗体中打开多个窗口 http:/ 工具栏设计工具栏设计 n11.2.1 在在ImageList控件中添加图像控件中添加图像 n11.2.2 在在ToolBar控件中添加按钮控件中添加按钮 http:/ 工具栏设计工具栏设计 工具栏设计有两种方法:一是手工制作,即利用图形框和命令按钮,这种方法比较繁琐。另一种方法是将ToolBar、ImageList组合使用,使工具栏制作与菜单制作一样简单易学。图11.4 工具箱新增控件创建工具栏的步骤是:(1)在ImageList控件中添加所需的图像。(2)在ToolBar控件中
15、创建Button对象。(3)在ButtonClick事件中用SelectCase语句对各按钮进行相应的编程。图11.4 工具箱新增控件http:/ 在在ImageList控件中添加图像控件中添加图像 使用工具栏控件ToolBar设计工具栏的具体操作如下:(1)设置ImageList控件。双击工具箱中的ImageList控件,向窗体添加一个ImageList控件,其默认名为ImageListl,右击,从弹出的快捷菜单中选择【属性】命令,然后在【属性页】对话框打开【通用】选项卡,选择图像大小为1616像素。(2)在【属性页】对话框打开【图像】选项卡,如图11.5所示(注:如果该对话框中没有所需的图
16、像,则应使用该窗口中的【插入图片(P)】按钮进行添加所需要的图片)。其中:【索引(Index)】表示每个图像的编号,在ToolBar的按钮中引用。【关键字(Key)】表示每个图像的标识名,在ToolBar的按钮中引用。【图像数】表示已插入的图像数目。(3)单击【确定】按钮,关闭【属性页】对话框。http:/ 在在ImageList控件中添加图像控件中添加图像图11.5 控件的【图像】选项卡 http:/ ImageList控件与ToolBar控件按钮的连接关系 ImageList控件属性ToolBar控件属性索引(Index)关键字(Key)图像名(.Bmp)索引(Index)关键字(Key)
17、样式(Style)工具提示文本(ToolTipText)图像(Image)1ICutcut1Icut12ICopycopy2ICopy0复制23IPastepaste3IPaste0粘贴34IBoldbld4Com4说明:放字号组合框宽度:8005IItalicItl5IBold0加粗46IUnderlineUndrln6IItalic0斜体57ILeftlft7IUnderline0下化线68ICerterctr8ILeft0左对齐79IRightrt9ICerter0居中810Irirht0右对齐9http:/ 在在ToolBar控件中添加按钮控件中添加按钮 1.为工具栏连接图像(1)双击
18、工具箱中的ToolBar按钮,向窗体中添加ToolBar控件,它是一条灰色的区域。(2)右击ToolBar控件,打开ToolBar控件的属性对话框,选择【通用】选项卡,如图11.6所示。其中:【图像列表】框表示与ImageList控件的连接,此例选择ImageList1控件名。【可换行】复选框被选中表示当工具栏的长度不能容纳所有的按钮时,在下一行显示,否则剩余部分不显示。【样式】是Visual Basic 6.0新增的功能,表示工具栏的风格。0-tbrStandard表示如Windows 95采用的普通风格,0-tbrFlat表示如Windows 98采用的平面风格。http:/ 在在Tool
19、Bar控件中添加按钮控件中添加按钮图11.6 ToolBar控件的【通用】选项卡 http:/ 在在ToolBar控件中添加按钮控件中添加按钮图11.7 ToolBar控件的【按钮】选项卡 http:/ 在在ToolBar控件中添加按钮控件中添加按钮 2.为工具栏增加按钮(1)在【属性页】对话框中切换到【按钮】选项卡,用来创建工具栏中的按钮,如图11.7所示。对话框中主要属性有:样式(Style);按钮样式,共6种,含义见表11.5。图像(Image):ImageList对象中的图像,值可以是图中的Key或Index值。值(Value):表示按钮的状态,有按下(tbrPressed)和没按下(
20、tbrUnpressed),对样式1和样式2有用。http:/ 在在ToolBar控件中添加按钮控件中添加按钮 表11.5 按钮样式 值常 数 说 明0tbrDefauit普通按钮。按钮按下后恢复原态,如【新建】等按钮1tbrCheck开关按钮。按钮按下后将保持按下状态,如【加粗】等按钮2tbrButtonGroup编组按钮。一组按钮同时只能一个有效,如【右对齐】等按钮3tbrScpatator分隔按钮。把左右的按钮分隔其他按钮4tbrPlaceholder占位按钮。以便安放其他控件,可设置按钮宽度(Width)5tbrdropdown菜单按钮。具有下拉式菜单,如Word中的【字符缩放】按钮h
21、ttp:/ 在在ToolBar控件中添加按钮控件中添加按钮(2)单击【插入按钮】按钮,插入第1个按钮。设置它的【关键字】属性值为ICopy;【工具提示文本】为【复制】;【图像】为1,表示使用ImageList中的第1个图像。(3)单击【插入按钮】按钮,插入第2个按钮。设置它的【关键字】为IPaste;【工具提示文本】为【粘贴】;【图像】为2,表示使用ImageList中的第2个图像,以此类推。http:/ 在在ToolBar控件中添加按钮控件中添加按钮 3.ToolBar事件ToolBar控件常用的事件有两个:ButtonClick和ButtonMenuClick。前者对应按钮样式为02,后者
22、对应样式为5的菜单按钮。现以ButtonClick事件举例如下:(1)用索引Index确定按钮,其形式为:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.IndexCase 1 按了第1个按钮,执行相应的过程,该过程代码在标准模块Case 2 按了第2个按钮,执行相应的过程 其他情况处理End SelectEnd Sub(2)用关键字Key来确定按钮(3)如下程序段与上面的程序段结构相同,本例仅用Button.Key 代替http:/ 在在ToolBar控件中添加按钮控
23、件中添加按钮 Button.Index。下面给出【剪切】、【复制】和【粘贴】3个按钮的程序。Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Key Case ICut Clipboard.SetText Text1.SelText Text1.SelText=Case ICopy Clipboard.Clear Clipboard.SetText Text1.SelText Case IPaste Text1.SelText=Clipboard.GetText()End
24、 SelectEnd Sub比较上面的两种程序的形式,如果使用Index时,当按钮有增删时,Index的值也随之改变,就要修改程序。但是如果使用Botton.Key,程序可读性好,而且当按钮有增删时,使用关键字不会影响程序。http:/ 状态栏设计状态栏设计 n11.3.1 在窗体中添加在窗体中添加StatusBar控件控件 n11.3.2 状态栏的属性状态栏的属性 n11.3.2 状态栏的设计示例状态栏的设计示例 http:/ 状态栏设计状态栏设计 状态栏通常位于窗体的底部,用于显示各种类型的状态信息,如通过设置它的Style属性可以显示事件、日期和键盘状态的信息,如CapsLock,Num
25、Lock,Inerst等键的状态。在状态栏中还可以包含文本和位图,使用它们的Text属性可以显示应用程序运行的信息。状态栏是由Panel(窗格)对象组成的,它最多可以被分成16个窗格,每个窗格显示一种状态。http:/ 在窗体中添加StatusBar控件 状态栏控件也是Microsoft Windows常用控件之一,要使用它必须事先将它加入到工具箱中。与前面讲述的添加工具栏控件一样,在添加Microsoft Windows Common Controls 6.0时状态栏控件已经和Toolbar控件、ImageList控件一起被装入工具箱中。双击工具箱里的StatusBar控件,就会在当前的活动
26、窗体的底部添加一个状态栏。http:/ 状态栏的属性在窗体上添加了StatusBar控件以后,在状态栏上右击,在出现的快捷菜单中选择【属性】命令,打开状态栏的【属性页】对话框。图11.9 状态栏的【属性页】对话 http:/ 状态栏的属性1.【通用】选项卡中的【样式】属性【样式】的值有以下两种:0-sbrNormal:通常方式,可以在状态栏上显示多种信息。多种信息是在【属性页】对话框的【窗格】选项卡中设置的。1-sbrSimple:是简单方式,只能在状态栏上显示一条信息,要显示的内容写在【简单文本】文本框中。2.【窗格】选项卡主要功能及属性【属性页】对话框的【窗格】选项卡如图11.10所示。设
27、计时,要对其中的属性进行设置。下面介绍其主要的功能和属性。索引:对应于Panel对象的Index属性,表示添加的Panel对象,该索引值由添加次序决定。在代码中访问此Panel对象时要使用该索引值。例如,用代码设置状态栏StatusBarl中索引值为1的窗格的显示文本为【编辑】,可以写成:StatusBarl.Panels(1).Text=编辑【插入窗格】按钮:每次单击该按钮可以在状态栏上添加一个窗格。http:/ 状态栏的属性图11.10 【属性页】对话框的【窗格】选项卡 http:/ 状态栏的属性【删除窗格】按钮:每次单击该按钮可以删除状态栏上由当前索引指定的窗格。【文本】文本框:对应于P
28、anel对象的Text属性,用于设置要在窗格中显示的文本。图片:对应于Panel对象的Picture属性,单击【浏览】按钮可以给窗格添加一幅图片;单击【无图片】按钮可以清除已添加的图片。【工具提示文本】文本框:对应于Panel对象的ToolTipText属性,用于设置相应窗格的提示信息,运行时鼠标指针指向该窗格时会出现该提示字符串。【关键字】文本框:对应于Panel对象的Key属性,用于给当前的Panel对象定义一个标识符。该标识符在整个Panel对象集合的标识符中必须惟一。【最小宽度】文本框:对应于Panel对象的MinWidth,返回或设置Panel对象的最小宽度,默认值与状态栏的实际宽度
29、(Width属性)的默认值相同。【对齐】(Alignment)下拉列表框:指定窗格中的文本/图像在窗格中的对齐方式,如表11.6所示。http:/ 状态栏的属性状态栏的属性表11.6 【对齐】属性设置 值常 数说 明0sbrLeft默认,居左显示1sbrCenter居中显示2sbrRight居右显示【斜面】(Bevel)下拉列表框:设置窗格的斜面样式,如表11.7所示。【自动调整大小】(Autosize)下拉列表框:决定当StatusBar控件的大小改变时,Panel对象本身的大小应该如何改变。其设置如表11.8所示。【样式】(Style)下拉列表框:返回或设置Panel对象的样式,如表11.
30、9所示。http:/ 数说 明0SbrNoBevel状态栏中的窗格无任何修饰1Sbrlnset默认设置,状态栏中的窗格呈凹进立体状2SbrRaised窗格呈凸出立体状值常 数说 明0默认值,窗格的宽度由属性指定,不自动调整1SbrSpring弹性窗格,当窗体调整大小时,具有该值的窗格平均分配调整的大小,但窗格宽度不能小于它的MinWidth属性值2SbrContents根据窗格的内容调整宽度,但不能小于它的MinWidth属性值表11.7 【斜面】属性设置 表11.8 【自动调整大小】属性设置 http:/ 【样式】属性设置 值常 数说 明0SbrText默认值,显示文本或位图,通过Text属
31、性设置1SbrCaps显示Caps Lock键的状态,有效时显示CAPS,无效时变为灰暗2SbrNum显示Num Lock键的状态,有效时显示NUM,无效时变为灰暗3SbrIns显示Inset键的状态,有效时显示INS,无效时变为灰暗4SbrScrl显示ScrollLock键的状态,有效时显示SCRL,无效时变为灰暗5SbrTime以系统格式显示当前时间6SbrDate以系统格式显示当前日期7SbrKana当Scroll Lock有效时以粗体显示KANA,无效时变为灰暗http:/ 状态栏的设计示例例例11.2 下面通过一个实例说明状态栏的设计方法。(1)以图11.8的设计窗口为基础,在窗体底
32、部添加一个状态栏。(2)右击该状态栏,然后在打开的对话框中切换到【窗格】选项卡,进入如图11.10所示的画面。(3)按表11.10进行有关属性的设置。其中对当前时间和时钟图像进行的设置时,要选择一个合适的图像,方法是单击【浏览】按钮,然后选择时钟图像所在的文件夹,选择一个自己喜欢的时钟图像即可,如图11.11所示。(4)选择【工具】|【菜单编辑器】命令在窗体上增加两个菜单项,【菜单编辑器】的设置如表11.11所示。(5)为了在运行时能改变状态栏的显示内容,要编写一些代码。命令编写代码如下:Private Sub m1_Click()StatusBar1.Panels(st1)=编辑End Su
33、bhttp:/ 窗格的主要属性设置 索引关键字最小宽度对齐样式自动调节大小说明1St172000-SbrText1显示提示信息2St2144006-SbrData0显示当前日期3St372005-SbrTime0显示当前时间和时钟图像4St472003-SbrCaps0显示大小写控制键的状态5St572004-SbrIns0显示插入控制键的状态http:/ 时钟属性设置 http:/ 状态栏设计完成的界面 http:/ 状态栏的设计示例状态栏可以在运行时控制其显示与否。本例选中【选项】菜单下的【状态栏】命令,表示显示状态栏;当未选中(【状态栏】前无“”)时,状态栏不显示,代码如下:Privat
34、e Sub m21_Click()If m21.Checked Then StatusBar1.Visible=0 m21.Checked=0 Else StatusBar1.Visible=1 m21.Checked=1 End IfEnd Sub http:/ RichTextBox 控件http:/ RichTextBox 控件 要使用RichTextBox控件,必须打开【部件】对话框,选择Microsoft RichTextBox Controls 6.0将控件添加到工具箱。1.文件操作方法RichTextBox控件打开或保存文件,是使用LoadFile和SaveFile方法实现的。(
35、1)LoadFile方法LoadFile方法能够将RTF文件或文本文件装入控件,其语法如下:对象.LoadFile 文件标识符,文件类型 其中,文件标识符是所加载的文件的路径和文件名。文件类型是可选的,取值可以是0或rtfRTF时,被加载的是RTF文件(默认);取1或rtfTEXT时为文本文件。当用LoadFile方法加载一个文件时,加载文件的内容将取代RichTextBox控件中的全部内容。http:/ RichTextBox 控件(2)SaveFile方法SaveFile方法能够将控件中的文档保存为RTF文件或文本文件,语法如下:对象SaveFile(文件标识符,文件类型1)例例11.3
36、在窗体上添加一个RichTextBox控件和一个通用对话框控件CommonDialog控件和两个命令按钮,如图11.13所示。两个命令按钮的单击事件代码如下:Private Sub Command1_Click()CommonDialog1.Filter=RTF 文 件(*.rtf)|*.rtf|TXT 文 件(*.txt)|*.txt CommonDialog1.ShowOpen If CommonDialog1.FilterIndex=1 Then RichTextBox1.LoadFile CommonDialog1.FileName 打开RTF格式文件 Else RichTextBox
37、1.LoadFile CommonDialog1.FileName,1 打开TXT格式文件 End IfEnd Subhttp:/ 界面设计 11.4 RichTextBox 控件http:/ RichTextBox 控件2.RichTextBox控件的常用属性 RichTextBox控件支持的一些属性,可对该控件中任何部分的文本使用不同的格式。例如,可以将文本变为粗体或斜体、改变文本的颜色、创建上标或下标、在文档中显示图片、调整段落的左右缩进值及使用悬挂式缩进等。表11.12列出了常用的格式化属性。http:/ 常用格式化属性分 类属 性值类型说 明选中文本SelTex SelStart S
38、elLength意义同Text控件对应属性字体、字号SelFontName SelFontSize同上字型SelBold SelItalicSelUnderline SelStrikethru逻辑量粗体 斜体下化线 删除线上、下标SelCharOffset整型0下标 0下标以Twip为单位颜色SelColor整型缩排SelIndent elRightIndentSelHangingIndent数值型缩排单位以ScalMode决定对齐方式SelAlignment整型0 左 1 右 2 中11.4 RichTextBox 控件http:/ RichTextBox 控件例例11.4 将图11.12所
39、示界面中的Text1文本框控件换成RichTextBox控件,利用工具栏,对其中的字体、字型和对齐方式以及【剪切】、【复制】和【粘贴】等按钮进行编程。Dim vars As RichTextBoxPrivate Sub Form_Load()Dim i As Integer RichTextBox1.Text=For i=8 To 72 Step 2 加载字号 Combo1.AddItem I Next i Combo1.ListIndex=1 使初始值为10,既10号字所在的位置End SubPrivate Sub Combo1_Click()RichTextBox1.SelFontSize
40、=Combo1.Text 选择的文本按字体组合框的值变化End Subhttp:/ RichTextBox 控件当插入点发生变化或重新选择了文本时,组合框中的内容同步变化Private Sub RichTextBox1_SelChange()If Not IsNull(RichTextBox1.SelFontSize)Then Combo1.Text=RichTextBox1.SelFontSize End IfEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Butto
41、n.Key Case ICut 【剪切】按钮处理 Clipboard.SetText RichTextBox1.SelText RichTextBox1.SelText=Case ICopy 【复制】按钮处理 Clipboard.Clear Set vars=RichTextBox1 Clipboard.Clear Clipboard.SetText RichTextBox1.SelText http:/ RichTextBox 控件Case IPaste 【粘贴】按钮处理 Set vars=RichTextBox1 vars.SelText=Clipboard.GetText()Case I
42、Bold 粗体处理 RichTextBox1.SelBold=Not RichTextBox1.SelBold Case IItalic 斜体处理 RichTextBox1.SelItalic=Not RichTextBox1.SelItalic Case IUnderline 下划线处理 RichTextBox1.SelUnderline=Not RichTextBox1.SelUnderline Case ILeft 左对齐 RichTextBox1.SelAlignment=0 Case IRight 右对齐 RichTextBox1.SelAlignment=1 Case ICente
43、r 居中 RichTextBox1.SelAlignment=2 End SelectEnd Subhttp:/ RichTextBox 控件http:/ 应用程序向导http:/ 应用程序向导 除除了了前前面面介介绍绍的的菜菜单单、工工具具栏栏、多多文文档档界界面面等等的的设设计计方方法法以以外外,Visual Basic还还提提供供了了【VB应应用用程程序序向向导导】,这这是是一一个个非非常常方方便便的的程程序序生生成成器器,用用来来快快速速生生成成一一个个应应用用程程序序界界面面,能能大大大大提提高高程程序序的的开开发发效效率率。图图11.16就是生成的一个多文档编辑器。就是生成的一个多
44、文档编辑器。http:/ 应用程序向导应用程序向导的使用方法非常简便,步骤如下:1.新建工程选择【文件】|【新建工程】命令,打开【新建工程】对话框,如图11.17所示,选择【VB应用程序向导】。2.选择操作界面类型【VB应用程序向导】提供了3种常用的操作界面,如图11.18所示。【多文档界面】,可同时打开多个文档,如Office应用程序。【单文档界面】,只能打开一个文档,如写字板编辑器。【资源管理器样式】,类似Windows资源管理器,有TreeView等控件。3.选取菜单和命令【VB应用程序向导】提供了6个常用的菜单名,分别是文件、编辑、视图、工具、窗口和帮助,每个菜单名下有若干个命令,可以
45、根据设计要求任意选取、取消某个菜单或命令,如图11.19所示。4.选取工具栏按钮应用程序向导提供了13个默认的工具栏按钮和一些分隔符按钮,如图11.20所示。通过左、右箭头来选取或移去工具栏按钮来定义自己的工具栏。http:/ VB应用程序向导 图11.18 选择应用程序操作界面 http:/ 选取菜单和命令 图11.20 选取工具栏 http:/ 应用程序向导5.其他界面的创建如果在应用程序向导中选取如果在应用程序向导中选取【资源管理器样式资源管理器样式】,生成具有树形视图和,生成具有树形视图和列表视图的界面,如图列表视图的界面,如图11.21所示。所示。说明:(1)向导还提供了加入其他窗体
46、及与数据库连接等功能,可使应用程序界面更加丰富。(2)在使用向导的工程中,任何时候单击【完成】按钮,表示以系统默认方式生成应用程序。(3)利用向导可以快速生成应用程序界面,其中有的控件和按钮已经由系统自动生成了代码,但是,还有很多过程需要设计者根据实际要求编写代码,才能最终设计出实用的应用程序。尽管如此,利用应用程序向导可以大大提高设计界面的工作效率,应当尽量利用向导产生符合自己要求的基本界面框架,然后再进一步完善程序。http:/ 习习 题题 http:/ 习习 题题 1.选择题(1)多文档界面具有的特性是_。A.子窗体可以被拖动到父窗体之外 B.子窗体被限制在父窗体之中C.父窗体有自己的菜
47、单,子窗体不可以有自己的菜单D.当最小化窗体时,MDI的图标显示在任务栏中(2)加载子窗体时,_。A.其父窗体会自动加载但不显示 B.其父窗体不会自动加载C.其父窗体会自动加载并显示D.其父窗体会自动加载,还需要用Show方法显示(3)MDI窗体的卸载过程是MDI窗体先调用QueryUnload事件,然后_。A.子窗体调用QueryUnload事件,随后先卸载各子窗体,再卸载MDI窗体B.子窗体调用QueryUnload事件,随后先卸载MDI窗体,再卸载子窗体C.先卸载各子窗体,再卸载MDI窗体D.先卸载MDI窗体,再卸载子窗体(4)在开发MDI的应用程序中,工具栏和状态栏一般应设计在_。A.
48、子窗体中 B.父窗体之外 C.父窗体之中 D.其他子窗体中(5)工具栏上的按钮样式有_种。A.3B.4C.5D.6http:/ 习习 题题2.填空题(1)在MDI窗体中,QueryUnload事件在 被触发,它的主要用途是 。(2)工具栏的制作方法有两种,它们分别是 和 。(3)单击工具栏上的按钮会发生ButtonClick事件或ButtonMenuClick事件,可以利 用 或 来识别被单击的按钮。(4)状态栏最多有 个窗格。(5)RichTextBox控件提供了比TextBox控件 的特性。http:/ 习习 题题3.简答题(1)在MDI窗体以及MDI子窗体中通常有【窗口】菜单,其中【层迭
49、】、【平铺】和【排列图标】命令的功能如何实现。(2)MDI中的主窗体和子窗体的创建顺序是什么?卸载顺序又是怎样的?(3)ToolBar控件的作用是什么?ImageLis控件的作用又是什么?如何使两个控件连接?(4)当要在ToolBar控件中增加一个按钮,如何实现?当要修改ToolBar控件某按钮的图像,如何实现?(5)当新建了若干个MDI子窗体中,用什么属性表示当前活动的窗体和活动的控件?(6)在窗体中加入了状态栏后,运行程序,却没有看到状态栏,试分析原因。http:/ 习习 题题4.编程题(1)设计一个MDI多文档界面,要求在【文件】菜单中打开【新建】对话框、【打开】对话框和【另存为】对话框等;在【窗口】菜单中实现【新建窗体】和对多个窗体实现不同的排列方式。(2)在图11.8的工具栏设计界面的基础上,再添加【新建】和【打开】两个工具栏按钮,并为【打开】编写相应的代码,调用打开对话框。(3)编写具有日期、时间和功能键状态的状态栏,并且可以在程序运行时控制状态栏的显示和隐藏。(4)利用【VB应用程序向导】设计一个多文档界面,其中命令和工具栏中的按钮根据自己的需要选定。运行该界面,观察哪些命令和按钮已经产生了代码。http:/