1、VB高级应用,项目四 文字处理程序项目五 图形控件与绘图操作项目六 多媒体播放器程序项目七 使用ADO编写销售程序,项目四 文字处理程序,掌握MDI应用程序设计和编程。掌握菜单、图像列表框、工具栏和状态栏控件的基本属性和事件。掌握RichTextBox控件的初步应用。掌握通用对话框控件的基本属性和应用。掌握Clipboard对象(剪贴板)的使用。,活动一、多文档界面,我们经常使用的Windws的记事本,是单文档界面,在这个界面中,当打开一个文件时,自动关闭原来的文件。同一个时刻,只能处理一个文档。多文档界面(MDI,Multiple Document Interface)允许创建在单个容器窗体
2、中包含多个窗体的应用程序。绝大多数基于Windows的大型应用程序都是多文档界面,例如,Microsoft Word和Microsoft Excel等。多文档界面可同时打开多个文档,它简化了文档之间的信息交换。,一、多文档界面的特性,多文档界面由父窗体和子窗体组成,父窗体也称MDI窗体,是作为子窗体的容器;子窗体也称文档窗口,显示各自文档。图是一个多文档应用程序,它由一个父窗体和三个子窗口组成。多文档界面有如下特性:(1)所有子窗体均显示在MDI窗体的工作区中。用户可以改变、移动子窗体的大小,但被限制在MDI窗体中。(2)当最小化子窗体时,它的图标将显示在MDI窗体上,而不是在任务栏中。当最小
3、化MDI窗体时,所有的子窗体也被最小化,只有MDI窗体的图标出现在任务栏中。(3)当最大化一个子窗体时,它的标题与MDI窗体的标题一起显示在MDI窗体的标题栏上。(4)MDI窗体和子窗体都可以有各自的菜单,当子窗体加载时覆盖MDI窗体的菜单。,二、创建和设计MDI窗体,开发多文档界面的一个应用程序至少需要两个窗体:一个(只能一个)MDI窗体和一个(或若干个)子窗体。在不同窗体中共用的过程、变量应存放在标准模块中。MDI窗体是子窗体的容器,该窗体中一般有菜单栏、工具栏、状态栏,不可以有文本框等控件。1.创建MDI窗体用户要建立一个MDI窗体,可以选择“工程”菜单中的“添加MDI窗体”命令即可。2
4、.设计MDI窗体设计MDI窗体时,可以建立菜单栏、工具栏、状态栏。,三、创建和设计MDI子窗体,MDI子窗体主要是显示应用程序的文档,通常,在该窗体上应用有文本框,也可以有菜单栏以及工具栏。1.创建MDI子窗体MDI子窗体是一个MDIChild属性为True的普通窗体。因此,要创建一个MDI子窗体,应先创建一个新的普通窗体,然后将它的MDIChild属性设置为True即可。在工程管理窗口中,可以看到,子窗体的图标与普通窗体的图标不同。若要建立多个子窗体,则重复进行上述操作。,三、创建和设计MDI子窗体,(1)创建对象变量创建以文档为中心的应用程序,为了在运行时建立若干个子窗体存取不同的文档,一
5、般先创建一个子窗体作为这个应用程序文档的模板,然后通过调用对象变量来创建其他子窗体。创建对象变量用下面的语句。格式: Dim 变量名 As New对象类型功能:声明对象变量。例如:如果已建立了一个Name为“frmChild”的子窗体,则:Dim NewDoc As New frmChild就会为“frmChild”建立一个新实例,新实例具有与“frmChild”窗体相同的属性、控件、代码。说明:New关键字后应是“类名”。实际上,在工程中添加的窗体有着特殊性,它既是窗体类,也是窗体对象,与在窗体上建立的控件具有不同的性质。例如:Dim NewDoc As New Form1 声明并创建一个N
6、ewDoc窗体变量NewDoc.Show 新窗体显示在屏幕上,三、创建和设计MDI子窗体,(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”的子窗体。,例:设计一个简易的书写器。,四、MDI窗体的属性和方法,(1)特有属性AutoShowChildren属性
7、:为True时,表示加载子窗体时将自动显示该子窗体。为False时,需要使用Show方法显示子窗体。ActiveForm属性:表示MDI窗体中的活动子窗体。(2)方法Arrange方法:设置子窗体的排列方式。格式:对象.Arrange 值值有: 0vbCascade,层叠排列1vbTileHorizontal,水平平铺排列2vbTileVertical,垂直平铺排列3vbArrangeIcons,重排最小化子窗体的图标,五、应用MDI窗体注意事项,MDI窗体为使用VB进行应用程序的开发提供了高效、多功能的良好平台,采用MDI窗体已是非常普遍的技术手段。为了提高其性能,在使用MDI编写应用程序时
8、要注意以下事项:(1)应尽量少地使用MDI子窗体。因为,每加载一个子窗体,就要占据较多的内存及系统资源。过多地使用子窗体,会造成内存和系统资源不够,影响程序运行的速度。(2)在MDI应用程序的设计中,若在子窗体中,尽量用Me关键字表示当前窗体;而在MDI窗体中,则应使用ActiveForm属性。(3)对于在子窗体菜单项、MDI菜单项或工具栏上都要执行的相同功能,应以过程的形式存放在标准模块(Model)中,供各模块共享。(4)如果应用程序中所使用的是不可视控件,如Timer、CommonDialog控件等,都应放在MDI窗体上,使子窗体也可以使用这些控件。,用Me关键字来引用当前代码正在运行的
9、窗体。,活动二、菜单的设计,教学目标:1、下拉式菜单的设计2、弹出式菜单的设计,菜单可分为下拉式菜单和弹出式菜单两种基本类型。菜单控件只包含一个事件,即单击事件。,下拉式菜单系统的组成结构 :,主菜单名快捷键热键下级子菜单标记,主菜单栏,分隔线,子菜单名,设计菜单的步骤,设计菜单的操作步骤如下:(1)建立窗体,添加控件。(2)打开“菜单编辑器”窗口。(3)设置各菜单项属性。(4)为相应的菜单命令添加事件过程。,一、菜单编辑器的使用,打开菜单编辑器 工具菜单编辑器(Ctrl+E); 窗体上的快捷菜单菜单编辑器。菜单编辑器界面菜单编器窗口分为三个部分,即数据区、编辑区和菜单项显示区。,常用属性:1
10、. 标题(Caption) 热键 前面加&2. 名称(Name)文本框 分隔符也应有名称3. 快捷键(Shortcut) 菜单名没有快捷键4. 复选(Checked) 检查框 TRUE 有5. 有效(Enabled) 检查框6. 可见(Visible) 检查框,菜单列表框,菜单项属性,操作按钮 (编辑区),(数据区),(菜单项显示区),要加一条分隔线,应在标题处输入减号(-),二、菜单设计实例,【例1】菜单设计。建立一个如图10-3所示的菜单,用户可以通过选择菜单中的菜单项改变文本框中内容的外观。,菜单项及其属性设置:,程序如下: Private Sub ct_Click() Text1.Fo
11、ntBold = Not Text1.FontBold Ct.Checked=Not Ct.Checked End Sub Private Sub er_Click() Text1.FontSize = 20End SubPrivate Sub ht_Click() Text1.FontName = 黑体End Sub Private Sub lsh_Click() Text1.FontName = 隶书End Sub Private Sub quit_Click() EndEnd Sub,Private Sub sh_Click() Text1.FontSize = 12End Sub Pr
12、ivate Sub st_Click() Text1.FontName = 宋体End Sub Private Sub xhx_Click()Text1.FontUnderline = Not Text1.FontUnderlineXhx.Checked=Not xhx.CheckedEnd SubPrivate Sub xt_Click() Text1.FontItalic = Not Text1.FontItalicXt.Checked=Not Xt.CheckedEnd Sub,三、菜单项的有效性,控制菜单中的某些菜单项能根据执行条件的不同进行动态变化,即当条件满足时可以执行,否则不能执
13、行。只要把一个菜单项的“有效”属性设置为False,就可以使菜单项的“有效”属性失效,运行后该菜单项变为灰色;为了使一个失效的菜单项变为有效,只要把它的“有效”属性重新设置True即可实现。例如:使子菜单“宋体”设置“失效”,则: st.Enabled=False使子菜单“隶书”设置“有效”,则: lsh.Enabled=True,四、菜单项标记,标记菜单项标记通过菜单设计窗口中的“复选”属性设置,当该属性为True时,相应的菜单项前有“”标记;如果该属性为False,则相应的菜单项前没有“”标记。但是,菜单项标记通常是动态地加上或取消的,因此应在程序代码中根据执行情况设置。例:设置“粗体”菜
14、单项前有标记ct.checked=true,五、弹出式菜单(快捷菜单),弹出式菜单是独立于窗体菜单栏而显示在窗体内的浮动菜单。显示位置取决于单击鼠标键时指针的位置。建立弹出式菜单通常有两步:第一步:用菜单编辑器建立菜单,操作与前面介绍的基本相同,唯一的区别是把菜单名(即主菜单项)的“可见”属性设置为False(子菜单项不要设置为False)。第二步:然后用PopupMenu方法弹出显示。通常该方法放在MouseDown事件中。PopupMenu方法用来显示弹出式菜单,其格式为: 对象. PopupMenu 菜单名 ,Flags,x,y,BoldCommand,Sub Text1_MouseDo
15、wn(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu EditMenu, vbPopupMenuCenterAlign or vbPopupMenRightButton end ifEnd Sub,Flag参数:表示弹出的位置和触发的键。分两组:一组用于指定弹出的菜单位置,另一组用于指定触发菜单命令的键。,或 PopupMenu EditMenu, 4+8,【例2】我们将例1中的“字形”菜单的内容作为弹出式菜单的内容。我们只需在代码窗口添加如下代码:Priva
16、te Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button = 2 Then PopupMenu zx End If End Sub运行程序,鼠标右键单击窗体,即可弹出“字形”菜单的菜单内容。如果不想在窗体顶部显示“字形”菜单,则可在窗体编辑器中将zx主菜单项的“可见”属性设为False即可。,活动二实例,活动三、工具栏和状态栏,工具栏为用户在应用程序时,快速访问最常用的菜单命令提供了很大的方便,进一步增加应用程序的菜单界面,已经成为Windows应用程序的标准
17、功能。制作工具栏有两种方法:一是手工制作,即利用图形框和命令按钮,这种方法比较繁琐;另一种方法是将ToolBar、ImageList组合使用,使得工具栏制作与菜单制作一样简单易学。状态栏StatusBar可显示各种状态信息。使用这些控件必须打开“部件”对话框,选择“Microsoft Windows Common Controls 6.0”,将控件添加到工具箱。在多文档界面(MDI)的应用程序开发中,工具栏和状态栏应在MDI父窗体中。,创建工具栏的步骤:(1)在ImageList控件中添加所需的图像(2)在ToolBar控件中创建Button对象。(3)在ButtonClick事件中用Sele
18、ct Case语句对各按钮进行相应的编程。,一、图像列表框,图像列表框控件(ImageList)不能单独使用,它专门为其他控件提供图像库,是一个图像容器控件。工具栏按钮的图像就是通过ToolBar控件从ImageList的图像库中获得的。1.常用属性(1)Index属性该属性设置或返回控件在控件数组中的标识号。(2)ListImages属性该属性返回对图像列表控件中“ListImage 对象”的集合的引用。,一、图像列表框,2.“ListImage对象”的常用属性“ListImage对象”是任意大小的位图,是组成“ListImages集合”的成员。常用属性如下:(1)Count属性该属性返回集
19、合中对象的数目。(2)Index属性该属性返回或设置一个数,它惟一指定集合中的对象。(3)Key属性该属性返回或设置字符串,在集合中惟一地标识一个成员。(4)Picture属性该属性返回或设置控件中要显示的图片。,一、图像列表框,3.图像列表框的使用在ToolBar控件上添加ImageList控件(如ImageList1控件)后,用右键单击ImageList1控件,在弹出的快捷菜单中选择“属性”命令,打开“属性页”对话框,选择其中的“图像” 选项卡。,在ToolBar中引用图像文件的扩展名为: .ico、.bmp、.gif、.jpg等。,关键字(Key):所有图像的Key属性都不相同。,索引(
20、Index):第一个图像的Index值为1,第二个为2,依此类推。,一、图像列表框,【例】建立一个图像列表框控件ImageList1,装入12个图像。,4.图像列表框控件的方法:(1) Add 方法格式:对象. ListImages.Add Index,Key,Image功能:往图像列表框控件中的图像集合插入索引为Index、关键字为Key的图像Image。(2) Remove 方法格式: 对象. ListImages.Remove Index(3) Picture 属性格式: 对象. ListImages(Index | Key ).Picture属性值:返回图像。,二、工具栏,Toolba
21、r工具栏控件包含一个按钮集合(Buttons),利用该控件我们可以很方便地将经常使用的命令建成工具栏按钮,并为按钮指定图像、文字和工具提示,从而构成功能全面的工具栏。使用工具栏(ToolBar)可以建立多个按钮,每个按钮的图像来自ImageList图像列表框对象中插入的图像。,二、工具栏,1、为工具栏连接图像右键单击Toolbar控件,选择“属性”命令打开如图所示的Toolbar 控件“属性页”对话框,选择“通用”选项卡。,ToolBar与ImageList的连接,按钮的外观,当工具栏按钮变为不可用时(Enabled为False)按钮图像所在的图像列表ImageList,工具栏的外观,二、工具
22、栏,2、为工具栏增加按钮打开“属性页”上的“按钮”选项卡,单击“插入按钮”,可以在工具栏上插入按钮。,Toolbar控件“按钮”选项卡,表12-12 按钮样式,索引(Index)和关键字(Key)为按钮的编号和标识,在ButtonClick事件中引用;,图像(Image) :使用ImageList对象中的图像,值可以是Key或Index,按钮的样式(Style),共6种,当按钮被按下时,值为1,否则为0,二、工具栏,3. 响应Toolbar控件的事件ToolBar控件常用的事件有两个:ButtonClick和ButtonMenuClick。前者对应按钮样式为0-2,后者对应样式为5的菜单按钮。
23、由于工具栏上的按钮为控件数组,可以利用数组的索引(Index属性)或关键字(Key属性)来识别被单击的按钮,再使用Select Case语句完成代码编制。(1)用索引Index确定按钮Private Sub Toolbar1-ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Index Case 1 按了新建按钮,执行新建过程,该过程代码在标准模块 FileNewProc Case 2 按了打开按钮,执行打开过程 FileOpenProc End SelectEnd Sub,二、工具栏,(2)用关键字Key确定按钮
24、如下程序段与(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 SelectEnd Sub使用Button.Key程序可读性好;而且当按钮有增删时,使用关键字不影响程序。,二、工具栏,当单击菜单按钮时,响应ButtonMenuClick事件
25、,该事件形式如下:Private Sub Object-ButtonMenuClick(Index As Integer,lByVal Button As ConctlLib.Button) End SubIndex表示菜单按钮在控件数组中的索引;Button表示对菜单按钮对象的引用。,例:设计一个工具栏,由4个按钮组成,能实现改变标签的字体、字号、粗体和颜色功能。,三、状态栏,状态栏控件(StatusBar)用来显示系统的某些当前状态值。状态栏控件是由Panel对象组成的,每一个Panel对象都能包含文本或图片。状态栏的外观是一组窗格,在程序中每一个窗格都作为Panel对象来访问。所有Pan
26、el对象组成Panels集合。状态栏最多能够包含16个Panel对象。利用其Style属性值中的一个值,程序就可以自动地显示公共数据,如日期、时间和键盘状态等。,三、状态栏,状态栏的建立在设计时,在窗体上增加 StatusBar 控件,并在其属性页的“窗格”选项卡中进行必要的设置,以建立面板并定制它们的外观。,可插入图像,Panel 对象的Text属性:显示的文本,样式,索引:从1开始编号,应用程序能够使用索引号访问各个窗格,Panel 对象的Key属性:可通过关键字访问窗格。,三、状态栏,状态栏的Style属性,三、状态栏,状态栏的常用事件状态栏的常用事件为:PanelClick当用户单击状
27、态栏的某个窗格时,触发 PanelClick事件。,Private sub statusbar1_panelclick(byval Panel as panel) Select case panel.key case “b1”panel.text=“aaa” case “b2”panel.picture=load(“”) end selectend sub,Panel参数指明了用户单击了哪个窗格,该参数由系统自动提供。,四、高级文本框控件(RichTextBox),高级文本框控件(RichTextBox)可用于输入和编辑文本,它同时提供了比常规的TextBox控件更高级的格式特性。从前几章可以
28、知道,对Text控件只能进行单一的文字格式设置。使用RichTextBox控件可以实现多种文字格式、段落等的设置,还可以插入图形,可真正构成一个像Word一样的字处理软件。要使用RichTextBox控件,必须打开“部件”对话框,选择“Microsoft Rich TextBox Controls 6.0”,将控件添加到工具箱。,四、高级文本框控件(RichTextBox),1.文件操作方法用LoadFile和SaveFile方法,可以方便地为RichTextBox控件打开或保存文件。(1)LoadFile方法格式:对象.LoadFile 文件标识符,文件类型功能:LoadFile方法能够将R
29、TF文件或文本文件装入控件中。说明:(1)文件标识符为被加载文件的文件名(包括路径)。(2)文件类型取值0或rtfRTF时为RTF文件(缺省)。(3)文件类型取1或rtfTEXT时为文本文件。,例:frmMDI.activeform.richtextbox1.loadfile “D:myt1.txt”,1,四、高级文本框控件(RichTextBox),(2)SaveFile方法格式:对象.SaveFile 文件标识符,文件类型功能:该方法能够将控件中的文档保存在RTF文件或文本文件中。例如:下面语句把文档以文本文件格式保存在D盘My子目录的T1.txt文件中。frmMDI.Activeform
30、.RichTextBox1.SaveFile D:myT1.txt,1,四、高级文本框控件(RichTextBox),2.常用属性RichTextBox控件提供了一些属性,可对该控件中任何部分的文本使用不同的格式。例如可以将文本变为粗体或斜体,改变文本的颜色,创建上标或下标。可以调整段落的左右缩进值,还可以使用悬挂式缩进。FileName属性:加载到高级文本控件中的文件名称。,四、高级文本框控件(RichTextBox),2.常用属性,四、高级文本框控件(RichTextBox),例:用RichTextBox控件,设计一个文本编辑器,利用工具栏格式化文本。,五、Clipboard对象,Clip
31、board对象用于与Windows系统的剪切板进行交换数据,它使用户能够复制、剪切和粘贴应用程序中的文本和图形。Clipboard对象的方法:1. Clear方法:用于清除剪贴板的内容。格式: Clipboard.Clear2. GetFormat方法:用于检测剪贴板中数据的格式。格式: Clipboard.GetFormat(format)说明:format值有:1-文本;2-位图(.bmp文件)3-位元(.wmf文件);8-与设备无关位图(DIB);9-调色板;&-HBF01(.RTF格式文本),五、Clipboard对象,3.GetData方法:用于从剪贴板获取一个图形数据。格式:Cli
32、pboard.GatData( format )format:可选,如果为0可省略,GetData自动使用适当的格式。如果Clipboard对象没有与期望的格式相匹配的图形,则返回空。4.SetData方法:用于将图形数据传送到剪贴板中。格式:Clipboard.SetData(data)Data:放置在Clipboard对象中的图形,可以使用LoadPicture函数或控件的Picture属性。5.GetText方法:用于从剪贴板获取一个文本数据。格式:Clipboard.GetText(format)format:可选,默认值为1。如果Clipboard对象没有与期望的格式相匹配的图形,则
33、返回空。,五、Clipboard对象,6.SetText方法:用于将文本数据传送到剪贴板中。格式:Clipboard.SetText(data,format)data:被放置在剪贴板中的字符串数据。format:可选。指定文本格式。默认值为1。例:用RichTextBox控件,设计一个文本编辑器,利用Clipboard对象实现编辑菜单功能(复制、剪切和粘贴),六、计时器(Timer控件),计时器(Timer)控件是在应用程序中用来处理按一定时间间隔(Interval)触发事件的控件。在运行时不可见。1、计时器有两个关键属性:Enabled属性:当该属性为True时,定时器处于工作状态。而当 E
34、nabled 被设置为 False 时,停止时钟工作。因此,定时器的 Enabled 属性并不同于其它对象的 Enabled 属性。Interval属性:计时器事件之间的时间间隔(毫秒数)。1秒=1000毫秒,Interval0:屏蔽计时器。 2、计时器只有一个事件,即Timer事件。只要 Timer 控件的 Enabled 属性被设置为 True 而且 Interval 属性值大于 0,则 Timer 事件以 Interval 属性值指定的时间间隔发生。,六、计时器(Timer控件),例1:利用计时器控件,在标签中显示系统时间。例2:在文本编辑器实例中,利用计时器,动态改变剪切、复制、粘贴命
35、令的有效性。,活动五、通用对话框控件(CommonDialogBox),通用对话框控件为程序设计人员提供了几种不同类型的对话框,利用这些对话框,可以获取所需要的信息,打开文件、将文件存盘、选择颜色、选择字体、打印、帮助。这些对话框与Windows本身及许多应用程序具有相同的风格。通用对话框是一种ActiveX控件,把通用对话框控件加到工具箱中,其操作步骤如下:,工程/部件,选定“控件”标签,选定Microsoft Common Dialog Control 6.0,确定,通用对话框控件(CommonDialogBox),1.通用对话框的基本属性(1)Action属性该属性直接决定打开何种类型的
36、对话框。1Open:打开文件对话框;2Save As:另存为对话框;3Color:颜色对话框;4Font:字体对话框;5Printer:打印机对话框;6Help:帮助对话框。该属性不能在属性窗口中设置,只能在程序中赋值,用于调出相应的对话框。(2)DialogTitle属性该属性用来设置对话框的标题,可以是任意字符串。在默认情况下,“打开”对话框的标题是“打开”,“另存为”对话框的标题是“另存为”。,通用对话框控件(CommonDialogBox),2.通用对话框的方法为了打开通用对话框,VB还提供了一组方法,用来打开通用对话框。这些方法是:ShowOpen:打开文件对话框;ShowSave:
37、打开另存为对话框;ShowColor:选择颜色对话框;ShowFont:选择字体对话框;ShowPrinter:打开打印对话框;ShowHelp:调出帮助对话框。,通用对话框控件(CommonDialogBox),对话框类型,通用对话框的类型,Action属性值,方法,打开文件对话框,1,ShowOpen,保存文件对话框,2,ShowSave,颜色对话框,3,ShowColor,字体对话框,4,ShowFont,打印机对话框,5,ShowPrinter,帮助对话框,6,ShowHelp,一、文件对话框(“打开”和“另存为”对话框),1.文件对话框(打开、保存)需设置的属性,DialogTitl
38、e,属性:DefaultExt :设置缺省的文件扩展名,如 .txt 或 .doc。 FileName:文件的路径及文件名(包含路径); FileTitle:文件名(不包含路径)。 Filter:指定文件对话框中显示的文件类型。 格式:窗体.对话框名.Filter=描述符1|过滤器1|描述符2|过滤器2例如, Word文档(*.doc)|*.doc|文本文件(*.txt)|*.txt|All Files|*.* FilterIndex:用来指定默认的过滤器,其设置值为一整数。 InitDir:初始路径。缺省时显示当前目录。,2.“打开”文件对话框属性页,DialogTitle,FileName
39、,InitDir,Filter,FilterIndex,DefaultExt,文本描述,通配符和文件扩展名,一、文件对话框(“打开”和“另存为”对话框),3. “另存为”对话框属性与“打开”对话框基本一样。例:在文本编辑器实例中,利用文件对话框在RichTextBox控件中实现打开和保存文件功能。,二、“颜色”对话框,主要属性: Color:设置初始颜色,并返回选定的颜色。 Flags:其取值及值的含义见下表。,例、编写一个应用程序,用颜色对话框,改变窗体背景的颜色和标签的颜色。,三、“字体”对话框,1、字体对话框属性,FontBold、FontItalic,FontSize,FontStri
40、kethru,FontUnderline,Color,Min、Max指定字体大小的范围,FontName,Flags属性:指示所显示的字体类型,必须设置。 cdlCFScreenFonts1 屏幕字体 cdlCFPrinterFonts2 打印机字体 cdlCFBoth 3 打印机字体和屏幕字体。 cdlCFEffects 256 显示删除线和下划线检查框以及颜色组合框,三、“字体”对话框,例:在文本编辑器实例中,利用“字体”对话框在RichTextBox控件中对所选文本进行“字体”格式设置。,四、“打印”对话框,打印对话框是一个标准的打印对话框窗口界面,打印对话框并不能处理打印工作,仅仅是一
41、个供用户选择打印参数的界面。所选参数存于各属性中,再由编程来处理打印操作。常用属性:可以通过属性页进行设置(1)Copies属性指定要打印的文档的拷贝数。该属性值是整型值。(2)FromPage和ToPage属性指定要打印文档的页范围。如果要使用这两个属性,必须把Flags属性设置2。(3)Max和Min属性用来限制FromPage和ToPage的范围,其中Min指定所允许起始页码,Max指定所允许的最后页码。,五、“帮助”对话框,帮助对话框除了基本属性外,还有特殊属性:(1)HelpCommand属性(帮助命令)该属性用于返回或设置所需要的在线Help帮助类型。一般将该属性设置为9。(2)H
42、elpFile属性(帮助文件)该属性用于指定Help文件的路径及文件名称。即找到帮助文件,再从文件中找到相应内容,显示在Help窗口中。,例:在文本编辑器实例中, 当选择“帮助”按钮时,就弹出帮助窗口。,六、错误处理,1、On Error 语句On Error Resume Next语句:用于设置当系统错误产生后,程序将继续执行下一条语句。2、Err 对象Err 对象是一个包含关于运行时错误的信息的对象。主要属性:Number属性:列出错误的序号,当值为0时表示没有产生错误。,活动六、字处理软件的实现,例:,维护子窗体的状态信息,在用户决定退出MDI应用程序时,必须有保存信息的机会。为了使其能
43、够进行,应用程序必须随时确定自上次保存以来子窗体中的数据是否有改变。通过在子窗体中声明一个公用变量来实现此功能。例如: Public bTextChange As Boolean在子窗体中有一个Text1控件,当该控件中的Text属性每一次改变时,Change事件就会将bTextChange设置为True,表示自上次保存以来Text1的内容已经改变。 Private Sub Text1_Change bTextChange=True End Sub如果,用户每次保存子窗体的内容时,将bTextChange设置False,可以提示Text1的内容不再需要保存。例如,有一个叫做“保存”(mnuSa
44、ve)的菜单项和一个用来保存文本框内容的名为FileSaveProc的过程: Private Sub mnuSave_Click() FileSaveProc 调用保存Text1内容到文件的过程 bTextChange=False 设置状态变量 End Sub同样,当关闭当前活动子窗体时,判断bTextChange的状态,决定是否要存盘,确保文档的安全性。 Private Sub mnuClose-Click() If bTextChange Then FileSaveProc Unload Me End Sub,项目四小结,本章介绍编写多文档应用程序的设计方法。使学者在界面设计和应用程序开发两方面都得到提高。主要介绍多文档界面(MDI)、菜单、图像列表框、工具栏、状态栏、高级文本框、Clipboard对象、通用对话框、计时器等的使用。,