【VB开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了VB开源代码-VB高级应用 项目四 文字处理程序 - 综合课件的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
VB项目四文字处理程序项目五图形控件与绘图操作项目六多媒体播放器程序项目七使用ADO编写销售程序掌握MDI应用程序设计和编程。
掌握菜单、图像列表框、工具栏和状态栏控件的基本属性和事件。
掌握RichTextBox控件的初步应用。
掌握通用对话框控件的基本属性和应用。
掌握Clipboard对象剪贴板的使用。
我们经常使用的Windws的记事本是单文档界面在这个界面中当打开一个文件时自动关闭原来的文件。
同一个时刻只能处理一个文档。
多文档界面MDIMultiple Document Interface允许创建在单个容器窗体中包含多个窗体的应用程序。
绝大多数基于Windows的大型应用程序都是多文档界面例如Microsoft Word和Microsoft Excel等。
多文档界面可同时打开多个文档它简化了文档之间的信息交换。
一、多文档界面的特性多文档界面由父窗体和子窗体组成父窗体也称MDI窗体是作为子窗体的容器子窗体也称文档窗口显示各自
文档。
图是一个多
文档应用程序它由一个父窗体和三个子窗口组成。
多文档界面有如下特性1所有子窗体均显示在MDI窗体的工作区中。
用户可以改变、移动子窗体的大小但被限制在MDI窗体中。
2当最小化子窗体时它的图标将显示在MDI窗体上而不是在任务栏中。
当最小化MDI窗体时所有的子窗体也被最小化只有MDI窗体的图标出现在任务栏中。
3当最大化一个子窗体时它的标题与MDI窗体的标题一起显示在MDI窗体的标题栏上。
4MDI窗体和子窗体都可以有各自的菜单当子窗体加载时覆盖MDI窗体的菜单。
二、创建和设计MDI窗体开发多文档界面的一个应用程序至少需要两个窗体一个只能一个MDI窗体和一个或若干个子窗体。
在不同窗体中共用的过程、变量应存放在标准模块中。
MDI窗体是子窗体的容器该窗体中一般有菜单栏、工具栏、状态栏不可以有文本框等控件。
1.创建MDI窗体用户要建立一个MDI窗体可以选择“工程”菜单中的“添加MDI窗体”命令即可。
2.设计MDI窗体设计MDI窗体时可以建立菜单栏、工具栏、状态栏。
三、创建和设计MDI子窗体MDI子窗体主要是显示应用程序的文档通常在该窗体上应用有文本框也可以有菜单栏以及工具栏。
1.创建MDI子窗体MDI子窗体是一个MDIChild属性为True的普通窗体。
因此要创建一个MDI子窗体应先创建一个新的普通窗体然后将它的MDIChild属性设置为True即可。
在工程管理窗口中可以看到子窗体的图标与普通窗体的图标不同。
若要建立多个子窗体则重复进行上述操作。
三、创建和设计MDI子窗体1创建对象变量创建以文档为中心的应用程序为了在运行时建立若干个子窗体存取不同的文档一般先创建一个子窗体作为这个应用程序文档的模板然后通过调用对象变量来创建其他子窗体。
创建对象变量用下面的语句。
格式Dim 〈变量名〉As New〈对象类型〉功能声明对象变量。
例如如果已建立了一个Name为“frmChild”的子窗体则Dim NewDoc As New frmChild就会为“frmChild”建立一个新实例新实例具有与“frmChild”窗体相同的属性、控件、
代码。
说明New关键字后应是“类名”。
实际上在工程中添加的窗体有着特殊性它既是窗体类也是窗体对象与在窗体上建立的控件具有不同的性质。
例如Dim NewDoc As New Form1 声明并创建一个NewDoc窗体变量NewDoc.Show 新窗体显示在屏幕上三、创建和设计MDI子窗体2创建MDI子窗体的
代码窗体程序运行时建立一个子窗体的程序
代码如下Dim No As IntegerPublic Sub FileNewProcDim NewDoc As New frmChildNoNo1NewDoc.Captionquot编辑区quotNewDoc.Show 显示子窗体End Sub如果多次调用FileNewProc过程则可以产生多个“frmChild”的子窗体。
例设计一个简易的书写器。
四、MDI窗体的属性和方法1特有属性AutoShowChildren属性为True时表示加载子窗体时将自动显示该子窗体。
为False时需要使用Show方法显示子窗体。
ActiveForm属性表示MDI窗体中的活动子窗体。
2方法Arrange方法设置子窗体的排列方式。
格式对象.Arrange 值值有0—vbCas
cade层叠排列1—vbTileHorizontal水平平铺排列2—vbTileVertical垂直平铺排列3—vbArrangeIcons重排最小化子窗体的图标五、应用MDI窗体注意事项MDI窗体为使用
VB进行应用程序的开发提供了高效、多功能的良好平台采用MDI窗体已是非常普遍的技术手段。
为了提高其性能在使用MDI编写应用程序时要注意以下事项1应尽量少地使用MDI子窗体。
因为每加载一个子窗体就要占据较多的内存及系统资源。
过多地使用子窗体会造成内存和系统资源不够影响
程序运行的速度。
2在MDI应用程序的设计中若在子窗体中尽量用Me关键字表示当前窗体而在MDI窗体中则应使用ActiveForm属性。
3对于在子窗体菜单项、MDI菜单项或工具栏上都要执行的相同功能应以过程的形式存放在标准模块Model中供各模块共享。
4如果应用程序中所使用的是不可视控件如Timer、CommonDialog控件等都应放在MDI窗体上使子窗体也可以使用这些控件。
用Me关键字来引用当前
代码正在运行的窗体。
活动二、菜单的设计教学目标1、下拉式菜单的
设计2、弹出式菜单的设计菜单可分为下拉式菜单和弹出式菜单两种基本类型。
菜单控件只包含一个事件即单击事件。
下拉式菜单系统的组成结构主菜单名快捷键热键下级子菜单标记主菜单栏分隔线菜单项子菜单名设计菜单的步骤设计菜单的操作步骤如下1建立窗体添加控件。
2打开“菜单编辑器”窗口。
3设置各菜单项属性。
4为相应的菜单命令添加事件过程。
一、菜单编辑器的使用打开菜单编辑器工具菜单编辑器CtrlE窗体上的快捷菜单菜单编辑器。
菜单编辑器界面菜单编器窗口分为三个部分即数据区、编辑区和菜单项显示区。
常用属性1. 标题Caption 热键前面加amp2. 名称Name文本框分隔符也应有名称3. 快捷键Shortcut 菜单名没有快捷键4. 复选Checked 检查框TRUE 有5. 有效Enabled 检查框6. 可见Visible 检查框菜单列表框菜单项属性操作按钮编辑区数据区菜单项显示区要加一条分隔线应在标题处输入减号-二、菜单设计实例【例1】菜单设计。
建立一个如图10-3所示的菜单用户可以通过选择菜单中的菜单项改变文本框中内容的外观。
菜单项名称快捷键字体zt….宋体stCtrlA….黑体HtCtrlB….隶书LshCtrlC…._sep….退出QuitCtrlQ字形Zx….粗体CtCtrlD….斜体xtCtrlE….下划线xhxCtrlF字号Zh….20号H20CtrlG….12号h12CtrlH菜单项及其属性设置程序如下Private Sub ct_ClickText1.FontBold Not Text1.FontBoldCt.CheckedNot Ct.CheckedEnd SubPrivate Sub er_ClickText1.FontSize 20End SubPrivate Sub ht_ClickText1.FontName quot黑体quotEnd Sub Private Sub lsh_ClickText1.FontName quot隶书quotEnd Sub Private Sub quit_ClickEndEnd Sub Private Sub sh_ClickText1.FontSize 12End Sub Private Sub st_ClickText1.FontName quot宋体quotEnd Sub Private Sub xhx_ClickText1.FontUnderline Not Text1.FontUnderlineXhx.CheckedNot xhx.CheckedEnd SubPrivate Sub xt_Click Text1.FontItalic Not Text1.FontItalicXt.CheckedNot Xt.CheckedEnd Sub三、菜单项的有效性控制菜单中的某些菜单项能根据执行条件的不同进行动态变化即当条件满足时可以执行否则不能执行。
只要把一个菜单项的“有效”属性设置为False就可以使菜单项的“有效”属性失效运行后该菜单项变为灰色为了使一个失效的菜单项变为有效只要把它的“有效”属性重新设置True即可实现。
例如使子菜单“宋体”设置“失效”则st.EnabledFalse使子菜单“隶书”设置“有效”则lsh.EnabledTrue四、菜单项标记标记菜单项标记通过菜单设计窗口中的“复选”属性设置当该属性为True时相应的菜单项前有“√”标记如果该属性为False则相应的菜单项前没有“√”标记。
但是菜单项标记通常是动态地加上或取消的因此应在程序
代码中根据执行情况设置。
例设置“粗体”菜单项前有标记ct.checkedtrue五、弹出式菜单快捷菜单弹出式菜单是独立于窗体菜单栏而显示在窗体内的浮动菜单。
显示位置取决于单击鼠标键时指针的位置。
建立弹出式菜单通常有两步第一步用菜单编辑器建立菜单操作与前面介绍的基本相同唯一的区别是把菜单名即主菜单项的“可见”属性设置为False子菜单项不要设置为False。
第二步然后用PopupMenu方法弹出显示。
通常该方法放在MouseDown事件中。
PopupMenu方法用来显示弹出式菜单其格式为对象. PopupMenu 菜单名FlagsxyBoldCommandSub Text1_MouseDownButton As Integer Shift As Integer X As Single Y As SingleIf Button 2 Then PopupMenu EditMenu vbPopupMenuCenterAlign or vbPopupMenRightButtonend ifEnd Sub常数位置值描述vbPopupMenuLeftAlign0缺省值。
弹出式菜单的左边定位于x坐标。
vbPopupMenuCenterAlign4弹出式菜单以x坐标为中心。
vbPopupMenuRightAlign8弹出式菜单的右边定位于x坐标。
常数行为值描述vbPopupMenuLeftButton0缺省值。
仅当使用鼠标左按钮时弹出式菜单中的菜单命令才响应鼠标单击。
vbPopupMenuRightButton8不论使用鼠标右按钮还是左按钮弹出式菜单中的菜单命令都响应鼠标单击。
Flag参数表示弹出的位置和触发的键。
分两组一组用于指定弹出的菜单位置另一组用于指定触发菜单命令的键。
或PopupMenu EditMenu 48【例2】我们将例1中的“字形”菜单的内容作为弹出式菜单的内容。
我们只需在
代码窗口添加如下
代码PrivateSubForm_MouseDownButtonAsIntegerShiftAsInteger_XAsSingleYAsSingleIfButton2ThenPopupMenuzxEndIfEndSub运行程序鼠标右键单击窗体即可弹出“字形”菜单的菜单内容。
如果不想在窗体顶部显示“字形”菜单则可在窗体编辑器中将zx主菜单项的“可见”属性设为False即可。
活动二实例工具栏为用户在应用程序时快速访问最常用的菜单命令提供了很大的方便进一步增加应用程序的菜单界面已经成为Windows应用程序的标准功能。
制作工具栏有两种方法一是手工制作即利用图形框和命令按钮这种方法比较繁琐另一种方法是将ToolBar、ImageList组合使用使得工具栏制作与菜单制作一样简单易学。
状态栏StatusBar可显示各种状态信息。
使用这些控件必须打开“部件”对话框选择“Microsoft Windows Common Controls 6.0”将控件添加到工具箱。
在多文档界面MDI的应用程序开发中工具栏和状态栏应在MDI父窗体中。
创建工具栏的步骤1在ImageList控件中添加所需的图像2在ToolBar控件中创建Button对象。
3在ButtonClick事件中用Select Case语句对各按钮进行相应的编程。
图像列表框控件ImageList不能单独使用它专门为其他控件提供图像库是一个图像容器控件。
工具栏按钮的图像就是通过ToolBar控件从ImageList的图像库中获得的。
1.常用属性1Index属性该属性设置或返回控件在控件数组中的标识号。
2ListImages属性该属性返回对图像列表控件中“ListImage 对象”的集合的引用。
一、图像列表框2.“ListImage对象”的常用属性“ListImage对象”是任意大小的位图是组成“ListImages集合”的成员。
常用属性如下1Count属性该属性返回集合中对象的数目。
2Index属性该属性返回或设置一个数它惟一指定集合中的对象。
3Key属性该属性返回或设置字符串在集合中惟一地标识一个成员。
4Picture属性该属性返回或设置控件中要显示的图片。
一、图像列表框3.图像
列表框的使用在ToolBar控件上添加ImageList控件如ImageList1控件后用右键单击ImageList1控件在弹出的快捷菜单中选择“属性”命令打开“属性页”对话框选择其中的“图像”选项卡。
在ToolBar中引用图像文件的扩展名为.ico、.bmp、.gif、.jpg等。
关键字Key所有图像的Key属性都不相同。
索引Index第一个图像的Index值为1第二个为2依此类推。
一、图像列表框【例】建立一个图像列表框控件ImageList1装入12个图像。
4.图像列表框控件的方法1 Add 方法格式对象. ListImages.Add IndexKeyImage功能往图像列表框控件中的图像集合插入索引为Index、关键字为Key的图像Image。
2 Remove 方法格式对象. ListImages.Remove Index3 Picture 属性格式对象. ListImagesIndex Key .Picture属性值返回图像。
二、工具栏Toolbar工具栏控件包含一个按钮集合Buttons利用该控件我们可以很方便地将经常使用的命令建成工具栏按钮并为按钮指定图像、文字和工具提示从而构成功能全面的工具栏。
使用工具栏ToolBar可以建立多个按钮每个按钮的图像来自ImageList图像列表框对象中插入的图像。
二、工具栏1、为工具栏连接图像右键单击Toolbar控件选择“属性”命令打开如图所示的Toolbar 控件“属性页”对话框选择“通用”选项卡。
ToolBar与ImageList的连接按钮的外观当工具栏按钮变为不可用时Enabled为False按钮图像所在的图像列表ImageList工具栏的外观二、工具栏2、为工具栏增加按钮打开“属性页”上的“按钮”选项卡单击“插入按钮”可以在工具栏上插入按钮。
值常数按钮说明0tbrDefault普通按钮按下按钮后恢复原状如“新建”按钮1tbrCheck复选按钮按下按钮后保持按下状态如“加粗”等按钮2tbrButtonGroup单选按钮组在一组按钮中只能有一个有效如对齐方式按钮3tbrSeparator按钮分隔符将左右按钮分隔开4tbrPlaceholder占位符用来安放其它按钮可以设置其宽度width5tbrdropdown菜单按钮具有下拉菜单如Word中的“字符缩放”按钮Toolbar控件“按钮”选项卡表12-12 按钮样式索引Index和关键字Key为按钮的编号和标识在ButtonClick事件中引用图像Image 使用ImageList对象中的图像值可以是Key或Index按钮的样式Style共6种当按钮被按下时值为1否则为0二、工具栏3. 响应Toolbar控件的事件ToolBar控件
常用的事件有两个ButtonClick和ButtonMenuClick。
前者对应按钮样式为0-2后者对应样式为5的菜单按钮。
由于工具栏上的按钮为控件数组可以利用数组的索引Index属性或关键字Key属性来识别被单击的按钮再使用Select Case语句完成
代码编制。
1用索引Index确定按钮Private Sub Toolbar1-ButtonClickByVal Button As ComctlLib.ButtonSelect Case Button.IndexCase 1 按了新建按钮执行新建过程该过程
代码在标准模块FileNewProcCase 2 按了打开按钮执行打开过程FileOpenProc……End SelectEnd Sub二、工具栏2用关键字Key确定按钮如下程序段与1程序段作用相同仅用Button.Key代替Button.Index。
Private Sub Toolbar1-ButtonClickByVal Button As ComctlLib.ButtonSelect Case Button.KeyCase quotTNewquot 按了新建按钮执行新建过程FileNewProcCase quotTOpenquot 按了打开按钮执行打开过程FileOpenProc……End SelectEnd Sub使用Button.Key程序可读性好而且当按钮有增删时使用关键字不影响程序。
二、工具栏当单击菜单按钮时响应ButtonMenuClick事件该事件形式如下Private Sub Object-ButtonMenuClickIndex As IntegerlByVal Button As ConctlLib.Button ……End SubIndex表示菜单按钮在控件数组中的索引Button表示对菜单按钮对象的引用。
例设计一个工具栏由4个按钮组成能实现改变标签的字体、字号、粗体和颜色功能。
三、状态栏状态栏控件StatusBar用来显示系统的某些当前状态值。
状态栏控件是由Panel对象组成的每一个Panel对象都能包含文本或图片。
状态栏的外观是一组窗格在程序中每一个窗格都作为Panel对象来访问。
所有Panel对象组成Panels集合。
状态栏最多能够包含16个Panel对象。
利用其Style属性值中的一个值程序就可以自动地显示公共数据如日期、时间和键盘状态等。
三、状态栏状态栏的建立在设计时在窗体上增加StatusBar 控件并在其属性页的“窗格”选项卡中进行必要的设置以建立面板并定制它们的外观。
可插入图像Panel 对象的Text属性显示的文本样式索引从1开始编号应用程序能够使用索引号访问各个窗格Panel 对象的Key属性可通过关键字访问窗格。
三、状态栏状态栏的Style属性常数值描述sbrText0缺省。
文本和/或位图。
用Text 属性设置文本。
sbrCaps1Caps Lock 键。
当激活Caps Lock 时用黑体显示字母CAPS反之当停用Caps Lock 时显示暗淡的字母。
sbrNum2Number Lock。
当激活数字锁定键时用黑体显示字母NUM反之当停用数字锁定键时显示暗淡的字母。
sbrIns3Insert 键。
当激活插入键时用黑体显示字母INS。
反之当停用插入键时显示暗淡的字母。
sbrScrl4Scroll Lock 键。
当激活滚动锁定时用黑体显示字母SCRL反之当停用滚动键时显示暗淡的字母。
sbrTime5Time。
以
系统格式显示当前时间。
sbrDate6Date。
以系统格式显示当前日期。
sbrKana7显示Kana键的状态当激活KANA LOCK 键时用黑体显示字母KANA。
反之当滚动锁定停用时显示暗淡的字母。
仅在日文操作系统中有效三、状态栏状态栏的常用事件状态栏的常用事件为PanelClick当用户单击状态栏的某个窗格时触发PanelClick事件。
Private sub statusbar1_panelclickbyval Panel as panelSelect case panel.keycase “b1”panel.text“aaa”case “b2”panel.pictureload“”end selectend subPanel参数指明了用户单击了哪个窗格该参数由系统自动提供。
四、高级文本框控件RichTextBox高级文本框控件RichTextBox可用于输入和编辑文本它同时提供了比常规的TextBox控件更高级的格式特性。
从前几章可以知道对Text控件只能进行单一的文字格式设置。
使用RichTextBox控件可以实现多种文字格式、段落等的设置还可以插入图形可真正构成一个像Word一样的字处理
软件。
要使用RichTextBox控件必须打开“部件”对话框选择“Microsoft Rich TextBox Controls 6.0”将控件添加到工具箱。
四、高级文本框控件RichTextBox1.文件操作方法用LoadFile和SaveFile方法可以方便地为RichTextBox控件打开或保存文件。
1LoadFile方法格式对象.LoadFile 文件标识符文件类型功能LoadFile方法能够将RTF文件或文本文件装入控件中。
说明1文件标识符为被加载文件的文件名包括路径。
2文件类型取值0或rtfRTF时为RTF文件缺省。
3文件类型取1或rtfTEXT时为文本文件。
例frmMDI.activeform.richtextbox1.loadfile “D:myt1.txt”1四、高级文本框控件RichTextBox2SaveFile方法格式对象.SaveFile 文件标识符文件类型功能该方法能够将控件中的文档保存在RTF文件或文本文件中。
例如下面语句把文档以文本文件格式保存在D盘My子目录的T1.txt文件中。
frmMDI.Activeform.RichTextBox1.SaveFile quotD:myT1.txtquot1四、高级文本框控件RichTextBox2.常用属性RichTextBox控件提供了一些属性可对该控件中任何部分的文本使用不同的格式。
例如可以将文本变为粗体或斜体改变文本的颜色创建上标或下标。
可以调整段落的左右缩进值还可以使用悬挂式缩进。
FileName属性加载到高级文本控件中的文件名称。
四、高级文本框控件RichTextBox2.常用属性分类属性值类型说明选中文本SelText、SelStart、SelLength意义同TextBox控件对应属性字体、字号SelFontName、SelFontSize当前选定的文本的字体、字号字型SelBold、SelItalic、SelUnderline、SelStrikethru逻辑值粗体、斜体、下划线、删除线上、下标SelCharoffset整型gt0上标lt0下标以Twip为单位颜色SelColor整型缩排SelIndent、SelRightIndent、SelHangingIndent数值型左缩进、右缩进、悬挂缩进单位以ScalMode决定对齐SelAlignment整型0左1右2中四、高级文本框控件RichTextBox例用RichTextBox控件设计一个文本编辑器利用工具栏格式.