




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【本章导读】
本章介绍了通用对话框的的使用,菜单的设计,多重窗体和多文档界面以及键盘与鼠标事件过程。在通用对话框使用中着重讲述“文件”对话框,“打印”对话框和“字体”对话框;通过例子具体讲解菜单编辑器的使用,以及怎么处理动态菜单和弹出式菜单;认识多文档界面,了解多文档界面和多重窗体的区别,并给出了具体例子;最后还介绍了键盘和鼠标事件过程,通过实际例子的讲解认识KeyPress事件,KeyDown事件,KeyUp事件和鼠标事件等。第9章界面设计第9章界面设计【本章要点】通用对话框的的使用菜单的设计多重窗体键盘与鼠标事件过程9.1通用对话框
通用对话框控件是一个AcitveX部件,由于通用对话框控件不是Visualbasic的标准控件,并不会直接显示在程序主界面中,所以要使用该控件编辑程序必须将它先添加到工具箱中,使用时和使用一般标准控件一样,将它添加到窗体中使用。具体方法如下所述。(1)单击菜单栏上的“工程“|“部件”命令,或者在工具箱上单击鼠标右键,弹出如图9-1所示的“部件”对话框。(2)单击“部件”对话框的“控件”选项卡,从列出来的控件列表中找到“MicrosoftCommonDialogControl6.0”选项,在其前面的方框内打上对勾选中。
9.1.1“文件”对话框
在通用对话框中,用于获取文件的操作有两种:打开文件和保存文件。分别使用ShowOpen方法或ShowSave方法显示的“打开”文件对话框和“另存为”文件对话框。尽管作用不一样,但其外观及其属性基本一致,与熟悉的Word界面的“打开”文件对话框或“另存为”文件对话框的外观和作用类似。
通用对话框仅用于应用程序与用户之间的信息交互,是输入输出界面,不能实现打开文件、存储文件以及其他具体的操作,如果需要实现相关的操作功能还需要编辑程序代码来实现。9.1.1“文件”对话框属性“属性窗口”属性功能对话框标题DialogTitle用来给出对话框的标题内容,默认值为“打开”。文件名称FileName设置和返回选中的文件名初始化路径InitDir用来设置和返回选中的目录名,默认值是当前目录过滤器Fileter用来设置显示的文件类型,如文本文件(*.txt)标志Flags用来设置对话框的一些选项缺省扩展名DefaultExt用来显示在对话框的默认扩展名,即指定默认的文件类型文件最大长度MaxFileSize用来指定FileName的最大长度,默认值为256过滤器索引FilterIndex用来指定在对话框的“文件类型”列表中显示的默认过滤符取消引发错误CanceError用来设置选择“取消”按钮时,是否产生错误信息“打开\另存为”选项卡设置属性9.1.1“文件”对话框1.“打开”对话框“打开”对话框主要是应用程序打开文件操作,即在使用应用程序的过程中,要调用或使用某个文件时需要调用的对话框。9.1.1“文件”对话框9.1.1“文件”对话框【例9.1】设计一个应用程序。在运行时单击“打开”按钮显示“打开”对话框,可选择相应的文件,将选中的文件内容显示在窗体中相对应的控件中。具体属性设置:参见书上表9-49.1.1“文件”对话框PrivateSubcmdOpen_Click()Dimfilestr,filestr1AsStringcdlOpen.Action=1'设置通用对话框为“打开”对话框filestr=""'字符串变量,用于读取文件
OpencdlOpen.FileNameForInputAs#1'读取文件
DoWhileNotEOF(1)'从文件中逐个读出,并存入到FileStr中
LineInput#1,filestr1filestr=filestr+filestr1LooptxtWrite.Text=filestr'将文件内容显示在文本框中
Close#1EndSub9.1.1“文件”对话框9.1.1“文件”对话框2.“另存为”对话框建立“另存为”对话框的过程和建立“打开”对话框的过程大致相同。用于提供应用程序保存文件操作时弹出所使用对话框。【例9.2】在例9.1的基础上,增加一个“保存”命令按钮,实现打开“保存”对话框的操作。
9.1.1“文件”对话框PrivateSubcmdSave_Click()cdlSave.ShowSave'设置通用对话框为“保存”对话框cdlSave.DialogTitle="保存文件"cdlSave.Filter="AllFiles|*.*|文本文件(*.txt)|*.txt|工程文件(*.vbp)|*.vbp"cdlSave.FilterIndex=2cdlSave.InitDir="C:\Window"OpencdlSave.FileNameForOutputAs#1Print#1,txtWrite.Text'将文本框中的内容另存
Close#1EndSub9.1.1“文件”对话框9.1.2“打印”对话框
当通用对话框的Action属性值为5或者使用ShowPrinter方法时,通用对话框作为“打印”对话框使用。“打印”对话框为用户提供标准的打印对话窗口界面,并不能处理打印工作,只是一个提供用户选择打印参数的界面。所选参数存在与各属性中,由程序代码来处理打印操作。
9.1.2“打印”对话框【例9.3】给例9.1中的应用程序添加打印设置功能。
在原窗体的基础上添加一个命令按钮控件Command3,其名称为“cmdPrint”,Caption属性为“打印”;添加一个通用对话框控件,其名称为“cdlPrint”。程序执行界面如图9-7所示。9.1.2“打印”对话框9.1.2“打印”对话框Privatesubcmdprint_click() DimIASInteger cdlPrint.Flags=&H256 cdlPrint.ShowPrinter Fori=1TocdlPrint.Copies Printer.printtxtWrite.text Nexti Printer.EndDOCEndSub9.1.2“打印”对话框9.1.3“字体”对话框
当通用对话框的Action属性值为4调用ShowFont方法时,通用对话框作为“字体”对话框,该对话框列出了系统中可使用的字体列表及可定制的属性,例如大小,样式等供用户选择。9.1.3“字体”对话框“字体”对话框的主要属性有:(1)Flags属性。在显示“字体”对话框之前必须设置Flags属性,否则将发生不存在字体的错误,Flags属性参见下表9-5所示:常数cdlCFEffects不能单独使用,应与其他常数一起进行“or”运算使用,因为它的作用仅仅是在对话框上附加删除线和下划线复选框以及颜色组合框。9.1.3“字体”对话框表9-5Flags主要控件属性设置常数值描述CdlCFSreenFonts&H1只列出系统支持的屏幕字体CdlCFBoth&H3列出可用的打印机和屏幕字体。CdlCFHelpButton&H4显示帮助按钮CdlCFEffects&H100制定对话框允许删除线,下划线,以及颜色效果CdlCFApply&H200使用对话框的“应用”按钮有效CdlCF&H2000只能在由Min和Max属性规定的范围内选择字体大小CdlCFTTonly&H4000只允许选择TrueType型字体9.1.3“字体”对话框【例9.4】建立一个应用程序,将通用对话框控件设定为“字体”对话框。并在执行后,单击窗体上的“字体”按钮,设置文本框的字体。主要控件属性设置对象属性属性值功能TextBox(名称)Text1显示内容Text送别山中相送罢,暮色掩柴扉。春草年年绿,王孙归不归MultiLineTrueCommonButton(名称)cmdZt打开“字体”对话框Caption字体CommonButton(名称)cmdTc关闭Caption退出CommonDialog(名称)cdlZt字体对话框9.1.3“字体”对话框
“字体”命令按钮的Click事件代码编写如下:PrivateSubcmdZt_Click()cdlZt.Flags=cdlCFBothOrcdlCFEffectscdlZt.ShowFontText1.FontBold=cdlZt.FontBoldText1.FontItalic=cdlZt.FontItalicText1.FontSize=cdlZt.FontSizeText1.ForeColor=cdlZt.ColorText1.FontStrikethru=cdlZt.FontStrikethruText1.FontUnderline=cdlZt.FontUnderlineEndSub9.1.3“字体”对话框9.2菜单设计
菜单是Windows应用程序不可缺少的一个组成部分,使用它创建的用户界面更加友好、直观。在Windows应用程序中,菜单一般用来表示程序的各项命令,把程序所提供的各种命令按功能分类,功能类似的命令放在同一个子菜单中,功能相距较远的命令放在不同的子菜单中,这样组成一个个子菜单,并用菜单栏中的各项来代表它们,构成了整个菜单系统,用来实现各种操作。菜单具有很强的适应性。9.2菜单设计菜单具有多种不同的形式,一般标准菜单系统分为4个部分组成:(1)菜单栏:指位于窗口标题栏下方包含若干个菜单标题的水平矩形条状区域。(2)菜单标题:指菜单栏中菜单的名称。每个菜单标题标识了一个下拉列表。(3)菜单项:包含于菜单之中的各个选项,当选中了某个菜单项后,可能会执行一条命令,也可能是执行了一个过程或函数,甚至可能弹出一个子菜单。(4)子菜单:是指激活一个带有“”标记的菜单选项打开后的列表,它由一系列菜单项构成。9.2菜单设计
菜单编辑器并不在工具箱中出现。因此需要设计菜单的时候,首先应该把要编辑菜单栏的窗体作为当前活动窗口。然后调用“菜单编辑器”。
调用方法为:单击工具栏中的“菜单编辑”按钮,会弹出“菜单编辑器”窗口。
9.2菜单设计9.2菜单设计(1)标题(P):用来设置当前菜单项的标题。该标题将在用户建立的菜单栏中显示出来,相当于普通控件的Catpion属性。如果需要使用某个字母作为该菜单项的快捷访问键,在该字符前加上一个&符号。例如在标题栏里有“打开(&F)”,则F是该菜单的热键。如果要加入分隔条只需在标题栏输入“-”即可。(2)名称(M):用来设置菜单项的名称,该名称用来在编写代码时作为引用菜单控件使用。在设计菜单过程中习惯上以“mnu”作为前缀,例如“文件”菜单可以是“mnuFile”。(3)索引(X):在菜单编辑器中,每个菜单项是一个控件,索引用来设置一组名称统一却拥有不同属性的菜单控件数组的下标。(4)快捷键(S):用于选择当前菜单项所需要的快捷键。(5)协调位置(O):设置菜单的显示位置,可以从显示的列表中选择菜单是否出现或怎么出现。
9.2菜单设计(6)帮助上下文ID:通过输入相应的数字来选择帮助文件中特定的页数或与该菜单项上下文相关的帮助文件。(7)复选:用于设置当前菜单项是否可选。如果可选,则当前设计菜单前出现“√”,说明所设计的菜单实现了某项功能或某项操作。“复选”在属性窗口中对应的属性名称为“Checked”属性。当Checked=True时,设置当前菜单已选。当Checked=False时,当前菜单未选。(8)有效:设置当前菜单项是否可以执行,即是否响应某个事件。有效性也可用编写代码实现,有效性的属性为“Enabled”,其值有两种。设置为True,即选中该属性。则菜单项将对用户的事件作出响应。设置为False,即未选中该属性。则菜单项不响应用户事件,同时菜单项为灰色。9.2菜单设计(9)可见:设置所设计的当前菜单项是否可见,只有可见的菜单项才能执行。在编写代码时,用“Visible”表示可见属性,其值有“True”和“False”两种。设置为True(默认值)时,则该菜单项可见。设置为False时,则该菜单项不可见。当一个菜单控件不可见时,菜单中的其余控件会上移以填补空出菜单的空间。(10)显示窗口列表:设置在使用多文档程序时,是否使菜单项中有一个包含打开的多文档文件子窗口的列表框。只针对于多文档窗体(MDI),对普通窗体没有作用。9.2菜单设计【例9.5】建立一个有简单菜单功能的文本编辑器。9.2菜单设计菜单属性设置菜单项标题名称内缩符号说明1文件(&E)mnuFile热键【E】2新建mnuFileNew…..快捷键【Ctrl+N】3打开mnuFileOpen…..快捷键【Ctrl+O】4-mnuBar1…..分割符5保存mnuFileSave…..6另存为mnuFilsSaveAs…..7-mnubar2…..分割符8退出mnuExit…..9编辑(&F)mnuEdit热键【F】10复制mnuEditCopy…..快捷键【Ctrl+C】11剪切mnuEditCut…..快捷键【Ctrl+X】12粘贴mnuEditPaste…..快捷键【Ctrl+V】9.2菜单设计“文件”菜单中的“打开”菜单项的Click事件代码如下:PrivateSubmnuFileOpen_Click()cdlLialog1.InitDir="C:\Windows"cdlLialog1.Filter="文本文件|*.Txt"cdlialog1.CancelError=Truecdlialog1.ShowOpentxtWrite.Text=""OpenCommonDialog1.FileNameForInputAs#1'打开文件进行读操作
DoWhileNotEOF(1)LineInput#1,inputdata'读一行数据到变量inputdatatxtWrite.Text=txtWrite.Text&inputdata&vbCrLfLoopClose#1'关闭文件
ExitSubEndSub9.2.2动态菜单
在应用程序中,菜单的作用可以因执行条件的变化而相应地发生一些变化,例如显示菜单可见或不可见、菜单项是否有效、菜单项是否复选以及动态增删菜单项。我们称能够实现以上动态操作的菜单为动态菜单。使用菜单控件数组设计动态菜单的方法如下:(1)在“菜单编辑器”对话框中,加入一个菜单项,将其索引(Index)项属性设置为0。然后在同一缩进级上加入名称相同、Index值有序相连的菜单项。Index属性值确定了该菜单项在菜单控件数组中的位置。9.2.2动态菜单(2)也可以只有一个Index值为0的菜单项,在运行时,通过菜单项控件数组名和索引值使用Load方法来加如新的菜单项,另外,使用Unload方法删除菜单项。Load和Unload方法的格式如下:Load菜单项控件数组名(Index)Unload菜单项控件数组名(Index)9.2.2动态菜单【例9.6】建立一个动态实现菜单项增减的应用程序。设有一个“文件”主菜单(mnuFile),它的菜单项有三项:“新加菜单”(mnuNewList)、“退出”(mnuFileExit)和“分隔符”(mnuFilebar)。在窗体上有一个文本框(txtCaption)和两个按钮,当单击“添加”按钮(cmdAdd)时,“文件”菜单中添加一个名称为文本框内容的菜单项;当单击“删除”按钮(cmdRemove)时,“文件”菜单中删除一个名称为文本框内容相同的菜单项。9.2.2动态菜单主要代码编辑如下:OptionExplicitPrivatemax_indexAsIntegerPrivateSubcmdAdd_Click()max_index=max_index+1LoadmnuFileList(max_index)mnuFileList(max_index).Caption=TxtCaption.TextmnuFileList(max_index).Visible=TrueTxtCaption.Text=""mnuFilebar.Visible=TrueEndSub9.2.2动态菜单PrivateSubcmdRemove_Click()DimtxtAsStringDimctlAsMenutxt=TxtCaption.TextTxtCaption.Text=""ForEachctlInmnuFileListIfctl.Caption=txtThenUnloadctlNextctlIfmnuFileList.Count<2ThenmnuFilebar.Visible=FalseEndifEndSub9.2.2动态菜单PrivateSubmnuFileExit_Click()UnloadMeEndSubPrivateSubmnuFileList_Click(IndexAsInteger)MsgBox"Selecteditem"&Str$(Index)EndSub9.2.3弹出菜单
在Windows应用程序中,选中某个对象单击鼠标右键时,会出现一个包含该对象常用功能的弹出式菜单,从而是用户的操作更加便捷,这种菜单形式被称为快捷菜单或者弹出菜单。弹出菜单往往是独立于菜单栏而显示在窗体上任何一个地方的浮动菜单。弹出菜单上显示的内容取决于按下鼠标右键时光标所在的位置。9.2.3弹出菜单【例9.7】设计一个弹出菜单,当用户用鼠标右键单击窗体时,弹出已经创建的菜单。方法如下所述:(1)在“菜单编辑器”中,设计一个没有缩进的菜单项(最高级别),由于弹出菜单的最高级别菜单项名称不显示,所以可以任意设定,在这里将其设置为mnuEdit。(2)将上述建立的最高级别菜单项的“可见”(Visible)属性为False,以便程序运行时不显示这个菜单项。(3)根据菜单编辑器的使用方法,依次在该菜单项后输入弹出菜单中的各个菜单项。程序设计步骤:9.2.3弹出菜单例9.7弹出菜单属性设置标题名称可见性内缩符号字体格式mnuZtgsFlase下划线mnuHxTrue….粗体mnuCtTrue…斜体mnuXtTrue…退出mnuTcTrue…9.2.3弹出菜单9.2.3弹出菜单编写代码,实现弹出菜单的功能:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then'鼠标单击右键
PopupMenumnuZtgsEndIfEndSub9.3多重窗体此前,我们所设计的VB应用程序大都只包含一个窗体,但是在一个大型的应用程序中,如果只有一个窗体,就会显得十分单调、并且一个窗体往往不能满足设计应用的需要,严重影响整个程序的运行。基于这个问题,在VisualBasic设计过程中,就需要用到多个窗体配合使用,才能使设计的应用程序具有更完善的功能。多重窗体和多文档界面(MDI窗体)在结构上有很大的不同。多重窗体中各个窗体之间是彼此独立的,每个窗体可以有自己的运行界面和执行代码,以完成不同的功能;MDI窗体也可以含有多个窗体,但是它有一个父窗体,其他窗体都是父窗体的子窗体,它们之间不是独立的,子窗体完成的功能都一样。9.3.1多重窗体操作1.添加普通新窗体2.删除一个普通新窗体3.在多个窗体中切换4.与多重窗体程序设计有关的语句和方法9.4键盘与鼠标事件过程
对象的很多事件是由键盘触发的,常用的键盘事件有KeyDown事件、KeyUp事件和KeyPress事件。9.4.1KeyDown事件、KeyUp事件这两个事件是当一个对象具有焦点时,用户按下或松开按键时发生的。事件过程的语法为:PrivateSubObject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSubObject_KeyUp(KeyCodeAsInteger,ShiftAsInteger)其中:Object是窗体或控件对象名。KeyCode是一个整型参数,表示按键的代码。键盘上字母与数字键的键代码与其ASCII码是相同的。Shift参数:此参数也是一个整数,它表明在这个鼠标事件发生时,键盘上的哪一个控制键被按下。
9.4键盘与鼠标事件过程Shift参数值对应表Shift的值被按下的键1Shift2Ctrl4Alt9.4键盘与鼠标事件过程下面的情况不会产生KeyDown和KeyUp事件:(1)窗体上有一个Default属性设置为True的按钮控件时,按Enter键。(2)当窗体上有一个Cancel属性设置为True的按钮控件时,按Esc键。(3)窗体上有多个可拥有焦点的控件时,按下Tab键。9.4.2Keypress事件
当按了键盘上的一个可打印字符键(字母、数字和符号)时,触发此事件。事件过程的语法是:PrivateSubObject_KeyPress(KeyAsciiAsInteger)Object是指窗体或控件名。整型参数KeyAscii传递的是按键字符的ASCII码。KeyDown事件、KeyPress事件和KeyUp事件产生的顺序是:KeyDown,KeyPress,最后是KeyUp。9.4.2Keypress事件【例9.11】下面是文本框Text1的事件属性,它能阻止用户在这个文本框中输入除了数字(0~9)之外的任何其它字符。PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48OrKeyAscii>57ThenKeyAscii=0EndIfEndSub其中48是字符“0”的ASCII码,57是字符“9”的ASCII码。9.4.3鼠标事件
前面的章节中讲到过窗体与各种控件的Click事件和DblClick事件。这两个事件没有参数,当程序在处理这两个事件时,不能确定用户是在对象的什么位置上单击的鼠标,也不能确定用户单击的是鼠标上的哪一个键,更不能确定在单击鼠标时是否按下了键盘上的某个控制键(如Ctrl、Shift和Alt键)。如果要在程序中得知上面所述各种状态,就要处理下面的三个鼠标事件。1.MouseDown事件、MouseUp事件、MouseMove事件
当用户在对象上按下鼠标键时触发MouseDown事件。事件过程的语法为:PrivateSubObject-MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YASsingle)当用户在对象上释放鼠标键时引发MouseUp事件。事件过程的语法为:PrivateSubObject-MouseUp(ButtonASInteger,ShiftAsInteger,XASsingle,YAsSingle)当用户在对象上移动鼠标时引发MouseMove事件。事件过程的语法为PrivateSubObject-MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAssinglel)1.MouseDown事件、MouseUp事件、MouseMove事件Button参数值是一个整型数,参数的值反映事件发生时按下的是哪个鼠标键。Button参数值对应表参数值鼠标按键1左
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村种植租地合同范本
- 农药委托加工合同范本
- 餐饮转让店面合同范本
- 消防包工简易合同范本
- 公司产权房合同范本
- 蔬菜种苗合同范本
- 建筑劳务合作合同书
- 撮合融资服务合同范本
- 有限空间安全知识培训
- 财务知识培训课件
- 注塑机日常保养点检表
- DB37∕T 5130-2018 建设工程造价咨询服务规范
- DB37T 3953-2020 医疗卫生机构安全风险分级管控体系实施指南
- 腕管综合征护理查房
- 苏教版六年级下册数学 第一、二单元 跟踪检测卷 扇形统计图 圆柱和圆锥
- 小学教育学详细讲义(黄济)
- 信息发布系统深化设计方案
- 《实践论》(原文)毛泽东
- 箱变安装施工方案77341
- 家谱宗谱WORD模板
- 日本仿效唐制的变革PPT课件
评论
0/150
提交评论