第6章VB界面设计.docx

上传人:b****4 文档编号:5970337 上传时间:2023-05-09 格式:DOCX 页数:18 大小:178.63KB
下载 相关 举报
第6章VB界面设计.docx_第1页
第1页 / 共18页
第6章VB界面设计.docx_第2页
第2页 / 共18页
第6章VB界面设计.docx_第3页
第3页 / 共18页
第6章VB界面设计.docx_第4页
第4页 / 共18页
第6章VB界面设计.docx_第5页
第5页 / 共18页
第6章VB界面设计.docx_第6页
第6页 / 共18页
第6章VB界面设计.docx_第7页
第7页 / 共18页
第6章VB界面设计.docx_第8页
第8页 / 共18页
第6章VB界面设计.docx_第9页
第9页 / 共18页
第6章VB界面设计.docx_第10页
第10页 / 共18页
第6章VB界面设计.docx_第11页
第11页 / 共18页
第6章VB界面设计.docx_第12页
第12页 / 共18页
第6章VB界面设计.docx_第13页
第13页 / 共18页
第6章VB界面设计.docx_第14页
第14页 / 共18页
第6章VB界面设计.docx_第15页
第15页 / 共18页
第6章VB界面设计.docx_第16页
第16页 / 共18页
第6章VB界面设计.docx_第17页
第17页 / 共18页
第6章VB界面设计.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第6章VB界面设计.docx

《第6章VB界面设计.docx》由会员分享,可在线阅读,更多相关《第6章VB界面设计.docx(18页珍藏版)》请在冰点文库上搜索。

第6章VB界面设计.docx

第6章VB界面设计

第6章VB界面设计

6.1基本要求

1.熟练掌握运用菜单编辑器建立菜单的方法;

2.掌握通用对话框的使用方法;

3.掌握窗体的显示与隐藏方法;

4.掌握在VB工程运用多重窗体的方法。

6.2知识点

1.通用对话框(CommonDialog)

VB的通用对话框CommonDialog控件就是提供了基于Windows的标准对话框。

CommonDialog控件不是VB的内部控件,它是ActiveX控件。

使用时选择“工程”菜单的“部件”命令,来打开“部件”对话框。

在其中选择“MicrosoftCommonDialogControl6.0”选项,将CommonDialog控件添加到工具箱。

VB通用对话框可以打开的Windows标准对话框界面有:

“打开”对话框,“另存为”对话框,“颜色”对话框,“字体”对话框,“打印”对话框和“帮助”对话框。

在使用通用对话框控件打开标准对话框时,必须对它的一个Action属性进行设置或调用该控件的Show方法,那样才能真正地打开标准对话框中某一种类型的对话框。

(1)打开对话框

当在程序中把Action属性值设置为1时或调用了ShowOpen方法,就可以打开通用对话框的“打开”对话框。

在“打开”对话框中,可以翻阅计算机的整个目录结构,查找所需要的文件。

如下图6-1所示。

图6-1打开对话框

要真正实现文件的打开需要设置几个必要的属性:

①FileName:

用于设置和得到用户所选的文件名(包括路径名),属性值为字符串。

②FileTitle:

用于返回文件名,不包含路径。

③InitDir:

用于指定初始化目录,或返回用户选择的文件目录。

④Filter:

用于设置对话框的文件类型列表框中的过滤器。

通过设定过滤器指定在文件类型列表框中显示的文件类型。

其格式为:

文件说明|文件类型

⑤FilterIndex:

当指定一个以上的过滤器时,需使用该属性确定哪一个作为默认过滤器显示,默认值为1。

(2)另存为对话框

当在程序中把Action属性值设置为2时或调用了ShowSave方法,就可以打开通用对话框的“另存为”对话框。

在“另存为”对话框中,可以翻阅计算机的整个目录结构,查找所需要的信息。

另存为对话框常用属性基本上与“打开”对话框相似,有一个DefaultExt属性是“另存为”对话框所特有的,它表示所存文件的默认扩展名。

(3)颜色对话框

当在程序中把Action属性值设置为3时或调用了ShowColor方法,就可以打开通用对话框的“颜色”对话框。

在“颜色”对话框的调色板中提供了基本颜色,还提供了用户的自定义颜色,即用户可以自己调色。

如图6-2。

图6-2颜色对话框

颜色对话框的常用属性是Color属性,当用户在调色板中选定颜色后,该颜色值赋给Color属性。

(4)字体对话框

当在程序中把Action属性值设置为4时或调用了ShowFont方法,就可以打开通用对话框的“字体”对话框。

在“字体”对话框中,拥有可供用户选择的字体。

如下图6-3。

图6-3字体对话框

在使用“字体”对话框之前,必须设置Flags属性,见下表。

假如没有设置Flags属性值,则使用“字体”对话框时会显示错误提示。

属性

Flags值

说明

CdlCFScreenFonts

1

屏幕字体

CdlCFPrinterFonts

2

打印机字体

CdlCFBoth

3

两者皆有

cdlCFEffects

100

出现删除线、下划线、颜色元素

(5)打印对话框

当在程序中把Action属性值设置为5时或调用了ShowPrinter方法,就可以打开通用对话框的“打印”对话框。

如下图6-4。

图6-4打印对话框

打印对话框不能直接处理打印任务,它仅是一个供用户选择打印参数的界面,所选参数存于各属性中,再由编程来处理打印任务。

属性如下表所示。

属性

说明

Copies

指定打印份数

FromPage

打印起始页号

ToPage

打印终止页号

(6)帮助对话框

帮助对话框用于制作应用程序的联机帮助,它可将已创建的帮助文件取出,并与界面连接起来,达到显示并检索帮助信息的目的。

当在程序中把Action属性值设置为6时或调用了ShowHelp方法,并且设定了HelpCommand、HelpFile属性值。

如:

CommonDialog1.HelpCommand=cdlHelpContents

CommonDialog1.HelpFile="c:

\windows\system32\winabc.hlp"

Me.CommonDialog1.Action=6

就可以打开通用对话框的帮助对话框。

如下图6-5所示。

图6-5帮助对话框

2.菜单编辑器

选择“工具”菜单的“菜单编辑器”命令,即可打开如图6-6所示的“菜单编辑器”窗口。

图6-6菜单编辑器

(1)菜单控件属性区

标题:

输入菜单标题及各菜单项的标题,也可以在菜单中创建分隔条。

名称:

输入菜单控件的名字,该名字用于在程序代码中引用菜单控件。

索引:

在创建菜单控件数组时作为索引。

快捷键:

允许为每个命令选定快捷键。

复选:

选择该项时,将一个复选框标志放置在菜单上(它只对子菜单项起作用)。

有效:

设置菜单或菜单项当前有效。

可见:

设置菜单或菜单项当前可见。

(2)编辑区

左、右箭头:

用来产生和消除内缩符号,即产生或消除子菜单。

上、下箭头:

每次单击都把选定的菜单项在同级菜单内向上、下移动一个位置。

下一个:

将选定移动到下一行。

插入:

在列表框的当前行上方插入新的菜单项。

删除:

删除当前选定的菜单项。

(3)菜单控件列表框区

①列表框区是用来列出当前窗体的所有菜单控件

②当在标题文本框中键入一个菜单项时,该项也会出现在菜单控件列表框中。

③在列表框中选取一个已存在的菜单控件,则可以编辑该控件的属性。

④菜单控件在列表框中的位置决定了该控件是菜单标题、菜单项、子菜单标题还是子菜单项。

3.弹出菜单设计

弹出菜单是独立于窗体菜单而显示在窗体上的菜单,其显示的位置取决于单击鼠标时指针的位置。

创建弹出菜单分为两步:

①建立弹出菜单:

使用菜单编辑器设计菜单,并设置弹出菜单的顶层菜单(主菜单项)为可见或不可见。

②设置弹出菜单显示方式:

使用PopupMenu方法来显示弹出菜单。

PopupMenu方法的使用形式:

[对象.]PopupMenu菜单名,标志,x,y

标志:

当标志为0时,弹出菜单的顶只能对鼠标左键起反应;当标志为1时,弹出菜单的顶只能对鼠标左键和右键都起反应;当标志为2时PopupMenu方法只能用在MouseDown事件过程。

4.多重窗体界面设计

①添加窗体:

创建一个新的窗体或把一个属于其他工程的窗体添加到当前工程中。

同一工程每个窗体的Name属性不能相同。

②设置启动对象。

5.有关窗体的语句、方法

①Load语句:

把窗体装入内存。

Load语句形式:

 Load窗体名称

②Unload语句:

从内存中删除指定的窗体。

Unload语句形式:

Unload窗体名称

③Show方法:

显示一个窗体,他兼有加载和显示窗体两种功能。

其形式:

[窗体名称].Show[模式]

其中:

“模式”用来确定窗体的状态,有0和1两个值。

若“模式”为1,表示窗体是“模式型”(Modal)的,用户无法将鼠标移到其他窗口,也就是说,只有在关闭该窗体后才能对其他窗口进行操作。

若“模式”为1,表示窗体是“非模式型”(Modeless)的,可以对其他窗口进行操作。

“模式”的缺省值为0。

“窗体名称”缺省时为当前窗口。

④Hide方法:

将窗体暂时隐藏起来,并没有从内存中删除。

其形式为:

[窗体名称].Hide

6.多文档界面的设计

开发多文档界面的一个应用程序至少需要两个窗体:

一个MDI窗体和一个或若干个子窗体。

在不同窗体中共用的过程、变量应存放在标准模块中。

①创建和设计MDI窗体

MDI窗体的默认名称为MDIForm1,大部分的控件不能放置在MDI窗体中,在此窗体中只能放置菜单、具有Align属性的控件和具有不可见界面的控件。

②创建MDI子窗体

先创建一个新窗体(或者打开一个存在的窗体),然后将它的MDIChild属性设置为True。

③编写程序代码

建立了MDI父窗体、子窗体后,就可以根据要求编写程序代码,其过程与单一窗体相同。

④加载MDI窗体与子窗体

在MDI应用程序中,由于加载子窗体时,其父窗体(MDI窗体)会自动加载并显示。

当子窗体被设置为默认的启动窗体时,程序运行后子窗体和MDI窗体两者都会加载。

而加载MDI窗体时,其子窗体并不会随着MDI窗体的加载而自动加载,因此当设置MDI窗体为启动窗体时,程序运行后只有MDI窗体被加载,若要加载子窗体则应使用Show方法。

7.MDI的属性、事件

(1)MdiChild属性:

设置一个窗体是否被作为MDI子窗体在一个MDI窗体内部显示。

(2)ScrollBars属性:

设置一个MDI窗体是否有水平滚动条或垂直滚动条。

(3)WindowState属性

该属性可以取三种值:

若取值为0(默认值)表示正常显示窗体;取值为1表示最小化,即将窗体缩小为一个图标;取值为2表示最大化,即将窗体充满屏幕,在MDI应用程序中子窗体将充满MDI父窗体。

(4)Arrange方法:

用于重排MDI窗口中的子窗体或图标。

格式为:

MDI窗体.Arrange方式

其中:

“MDI窗体”是需要重新排列的MDI窗体名字,在该窗体内有子窗体或图标;“方式”指定重排MDI窗体中子窗体或图标的方式。

(5)QueryUnload事件

在一个窗体或应用程序关闭之前触发该事件。

当MDI窗体被卸载时,QueryUnload事件首先为MDI窗体调用,然后再为每一个打开的子窗体调用。

由于QueryUnload事件在窗体卸载之前被调用,因此可以在事件过程中编写代码,使得用户能够在窗体卸载前保存那些被修改的窗体。

6.3疑难解析

1.在工程中添加现有窗体时发生加载错误

在使用“工程”菜单中的“添加窗体”命令添加一个现存的窗体时经常发生加载错误,绝大多数是因为窗体名称冲突的缘故。

例如,假定当前打开了一个含有名称为Form1的工程,如果想把属于另一个工程的Form1窗体装入则肯定会出错。

其实窗体名和窗体文件名可以使用不同的名称,不一定非要相同,但是为了不造成混乱,二者的名称最好一致。

在一个工程中,可以有两个窗体文件名相同的窗体(须在不同的文件夹中),但是绝对不能同时出现两个窗体名相同的窗体。

2.装入多窗体程序时出现对象不存在的错误

对于单窗体程序的加载,通常可以通过.vbp文件,有时也可以直接单击.frm窗体文件。

但对于多窗体程序的加载必须通过.vbp文件,它把属于该工程的所有文件(包括.frm文件和.bas文件)装入内存。

如果通过单击多窗体程序中某一窗体文件,只能加载该窗体文件,其他文件不能自动装入内存,程序运行时将出现对象不存在的错误。

此外,对于多窗体程序的编辑,当变化了窗体数量后,必须重新保存工程文件,否则,工程文件不包括新增的窗体文件。

对于记录在工程文件中的窗体文件和模块文件,必须注意所在的目录位置。

在复制多窗体程序对应的文件时不要遗漏,否则,在下次加载时会产生对象不存在的错误。

3.多窗体调用时出现对象不存在的错误

当用Show方法调用其他窗体时,被调用的窗体必须用窗体对象名,而不是窗体文件名。

否则,会产生实时错误424,要求对象。

4.在窗体加载过程中使用SetFocus方法出现“无效的过程调用或参数”错误

焦点只能移动可视的窗体或控件上。

在窗体的Load事件完成前窗体或窗体上的控件是不可视的,所以不能在Form_Load事件中把焦点移到正在加载的窗体上,也不能在Load事件内使用SetFocus方法将焦点移到窗体上的控件。

此外,也不能把焦点移到Enabled或Visible属性被设置为False的窗体或控件。

如果已在设计时将Enabled或Visible属性设置为False,必须在使用SetFocus方法前将Enabled或Visible属性设置为True。

5.与窗体有关的事件

在首次用Load语句将窗体(假定该窗体在内存中还没有创建)调入内存之时依次发生Initialize和Load事件。

Initialize是在窗体创建时发生的事件。

在窗体的整个生命周期中,Initialize事件只触发一次。

用户可以将一个窗体装入内存或从内存中删除很多次,但窗体的建立只有一次。

也就是说,在用Load语句将窗体装入内存时会触发Load事件,但并不一定触发Initialize事件。

在窗体从内存中卸载时依次发生QueryUnload和Unload事件。

QueryUnload事件可提供造成窗体卸载的原因,即是单击“关闭”按钮,或是程序中执行Unload语句,或在应用程序中关闭,或者是在Windows中的关闭。

如果在QueryUnload事件中把QueryUnload的参数Cancel设置为True,就会忽略Unload语句,从而不卸载窗体。

所以QueryUnload提供了取消关闭窗体的机会,同时也允许在需要时从代码中关闭窗体。

如果使用End语句来结束程序,窗体不会接收到QueryUnload事件。

而窗体Activate事件仅当窗体成为活动窗口时才发生,窗体必须可见。

6.在程序中对通用对话框的属性设置不起作用

在程序中对通用对话框的属性设置必须注意语句的先后顺序,属性设置语句必须放在打开对话框语句前,否则在程序中对通用对话框的属性设置在本次使用中不起作用。

例如,下面的程序代码由于先打开对话框,再进行属性设置。

在第一次执行本段代码时,无法过滤文件,ShowOpen语句后面的属性设置语句对下一次执行ShowOpen有效。

CommonDialog1.ShowOpen

CommonDialog1.FileName="*.bmp"

CommonDialog1.InitDir="c:

\windows"

CommonDialog1.Filter="图片(*.bmp)|*.bmp|所有文件(*.*)|*.*"

CommonDialog1.FilterIndex=1

7.设置通用对话框的CancelError属性为True发生错误

当通用对话框的CancelError属性设置为True时,无论何时选择“取消”按钮,均产生32755(cdlCancel)号错误。

VB通过系统对象Err来记录程序运行期间所发生的错误。

Err对象的Number属性记录错误号,Description属性保存有关错误的说明。

例如,当在CancelError属性为True的通用对话框中选择“取消”按钮时,产生一个错误,Err.Number被设置为32755,Description属性被设置为“选择‘取消’”。

如果不对错误进行处理,VB将显示出错消息并停止程序运行。

为防止由于错误造成停止程序运行的问题,可以使用OnError语句捕获错误,然后根据捕获的错误进行处理。

常用OnError语句的形式有:

OnErrorResumeNext'忽略发生错误的命令行,执行下一句命令

OnErrorGoTo语句标号'当发生错误时转向执行标号所指定的命令行

对于捕获到的错误号,可用分支语句处理。

下面的程序说明当在颜色对话框内选取“取消”按钮时,CommonDialog1.ShowColor语句产生32755号错误。

OnError语句在捕获到错误后,转向执行标号ErrorHandler所指定的命令行。

在标签Label1上显示“放弃操作”,并忽略产生错误的那一行命令与标号之间的所有语句。

PrivateSubCommand1_Click()

OnErrorGoToErrorHandler'错误捕获语句

CommonDialog1.CancelError=True'使选取“取消”按钮时能对出错做出响应

CommonDialog1.ShowColor

Text1.ForeColor=CommonDialog1.Color'设置颜色

ExitSub'无错误时正常退出本过程

'以下为错误处理的语句

ErrorHandler:

IfErr.Number=32755ThenLabel1.Caption="放弃操作"

EndSub

8.在使用CommonDialog控件控制字体选择时出现下图6-7所示错误

这是由于没有设置CommonDialog控件的Flags属性,或属性值不正确。

通常设置该值为&H103,表示屏幕字体、打印机字体两者皆有之,并在字体对话框中出现删除线、下划线、颜色等元素。

注意数字前的符号&H,表示十六进制。

图6-7字体提示框

9.窗体菜单名、顶层菜单与菜单项的区别

通常出现在菜单栏上的菜单对象叫做菜单名,菜单名以下拉列表形式包含的内容为菜单项。

菜单项可以包括菜单命令、分隔条和子菜单标题。

当菜单名没有菜单项时称为“顶层菜单”,可直接对应一个应用程序。

菜单名、顶层菜单与菜单项都是在菜单编辑器中定义,它们的区别在于:

(1)菜单名、顶层菜单不能定义快捷键,而菜单项可以有快捷键。

(2)当菜单包含有热键字母(菜单标题中“&”后的字母)时,按Alt+热键字母可选择窗体顶部菜单栏中的菜单项,当子菜单打开时,按热键字母选择子菜单中的菜单项。

如果子菜单没有打开时,按热键字母无法选择其中的菜单项。

(3)尽管所有的菜单项都能响应Click事件,但是菜单栏中的菜单名通常不需要编写事件过程。

10.动态菜单创建后不显示

创建动态菜单必须结合菜单项数组,样本菜单项的属性设置如下表所示:

Name

Caption

Index

Visible

必需的

可以没有

0

False

表中Index为0,表示样本菜单项是数组的第一个元素,其下标为0。

样本菜单项的Name属性是必需的,它作为数组的名称。

Visible可以设为True,如果设为False表示初始时该菜单项不可见。

在程序中用Load语句创建菜单项,用Unload清除菜单项。

动态创建的菜单项继承了除了Index之外的绝大部分属性,所以要对Caption属性设置菜单标题。

另外,使用Load语句建立的菜单项对象的Visible属性为False,如果其Visible属性不设置为True,创建的菜单项不显示。

另外,样本菜单项在菜单系统中的位置决定了新菜单项出现的位置。

11.在制作工具栏时ToolBar控件无法装入图像

ToolBar控件装入的图像来自与它关联的ImageList控件,必须先将图像添加到ImageList控件中,然后,在ToolBar控件的“图像列表”下拉式列表框中设置与之关联的ImageList控件,并为ToolBar控件中各工具按钮选择对应的图像/标。

12.在制作工具栏时无法对ImageList控件进行编辑

若要对ImageList控件进行增加、删除图像,必须先在ToolBar控件的“图像列表”下拉式列表框设置“无”,也就是与ImageList控件切断联系,否则VB提示无法对ImageList控件进行编辑。

13.当改变子窗体的属性后不能自动显示该子窗体

MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体。

如果它被设置为True,则当改变子窗体的属性后,会自动显示该子窗体;如果AutoShowChildren属性被设置为False,则改变子窗体的属性后,必须用Show方法把该子窗体显示出来。

6.4典型例题

例6-1编写一个简单的文本文件编辑器。

要求具有打开、复制、粘贴、保存、退出功能。

用户界面如下图6-8所示。

单击“剪切”菜单(mnuCut),将文本框Text1.text中选定的内容剪切到剪贴板;单击“复制”菜单(mnuCopy),将文本框Text1.text中选定的内容复制到剪贴板;单击“粘贴”菜单(mnuPaste),将剪贴板中的内容粘贴到文本框中当前插入点处;单击“打开”菜单(mnuOpen),打开“打开”对话框,输入要打开的文本文件名后,单击确定按钮后,文件在Text1中打开。

单击“保存”菜单(mnuSave),打开“保存文件”对话框,Text1.text中的内容以指定的路径及文件名保存。

单击“退出”菜单(mnuExit),结束程序。

图6-8例6-1程序界面

解答:

(1)新建工程,修改窗体的标题为“简易文本编辑器”。

(2)在窗体上右击鼠标,打开菜单编辑器,创建“剪切”、“复制”、“粘贴”、“打开”、“保存”、“退出”6个菜单。

(3)在窗体上添加一个文本框,调整其大小如上图所示。

(4)编写“剪切”菜单的单击事件过程,实现将文本框中的文本传送到剪帖板,并清除文本框内容。

PrivateSubmnuCut_Click()

Clipboard.SetTextText1.SelText

Text1.Text=""

EndSub

(5)编写“复制”菜单的单击事件过程,实现将文本框中的文本传送到剪帖板。

PrivateSubmnuCopy_Click()

Clipboard.SetTextText1.SelText

EndSub

(6)编写“粘贴”菜单的单击事件过程,实现将剪帖板中的文本传送到文本框。

PrivateSubmnuPaste_Click()

Text1.SelText=Clipboard.GetText()

EndSub

(7)编写“打开”菜单的单击事件过程,实现打开选择的文本文件,并将所有内容读入文本框。

PrivateSubmnuOpen_Click()

DimsAsString

Text1.Text=""

CommonDialog1.Action=1

OpenCommonDialog1.FileNameForInputAs2

DoWhileNotEOF

(2)

Input#2,s

Text1.Text=Text1.Text+s

Loop

Close#2

EndSub

(8)编写“保存”菜单的单击事件过程,实现将文本框中所有内容写入选择的文本文件。

PrivateSubmnuSave_Click()

CommonDialog1.Action=2

OpenCommonDialog1.FileNameForOutputAs1

Print#1,Text1.Text

Close#1

EndSub

(9)编写“退出”菜单的单击事件过程,结束程序的运行。

PrivateSubmnuExit_Click()

End

EndSub

6.5练习与思考

习题6-1新建工程,在Form1窗体上建立一个二级下拉菜单(菜单项见下表)运行时的窗体如图6-9所示。

请在“退出”菜单项中加入代码,使选择“退出”的时候能关闭程序。

菜单标题

菜单名称

备注

有效性

文件

File

一级菜单

有效

…打开

Open

二级菜单

无效

…退出

Exit

二级菜单

有效

图6-9习题6-1程序界面

习题6-2新建工程,在Form1窗体上放置一个列表框(初始值为空)和一个标签框,按下表建立菜单。

窗体标题显示的文字参照下图6-10。

菜单标题

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2