首页 第9章 界面设计

第9章 界面设计

举报
开通vip

第9章 界面设计第9章界面设计*【本章导读】本章介绍了通用对话框的的使用,菜单的设计,多重窗体和多文档界面以及键盘与鼠标事件过程。在通用对话框使用中着重讲述“文件”对话框,“打印”对话框和“字体”对话框;通过例子具体讲解菜单编辑器的使用,以及怎么处理动态菜单和弹出式菜单;认识多文档界面,了解多文档界面和多重窗体的区别,并给出了具体例子;最后还介绍了键盘和鼠标事件过程,通过实际例子的讲解认识KeyPress事件,KeyDown事件,KeyUp事件和鼠标事件等。第...

第9章 界面设计
第9章界面设计*【本章导读】本章介绍了通用对话框的的使用,菜单的设计,多重窗体和多文档界面以及键盘与鼠标事件过程。在通用对话框使用中着重讲述“文件”对话框,“打印”对话框和“字体”对话框;通过例子具体讲解菜单编辑器的使用,以及怎么处理动态菜单和弹出式菜单;认识多文档界面,了解多文档界面和多重窗体的区别,并给出了具体例子;最后还介绍了键盘和鼠标事件过程,通过实际例子的讲解认识KeyPress事件,KeyDown事件,KeyUp事件和鼠标事件等。第9章界面设计*第9章界面设计【本章要点】通用对话框的的使用菜单的设计多重窗体键盘与鼠标事件过程*9.1通用对话框通用对话框控件是一个AcitveX部件,由于通用对话框控件不是Visualbasic的标准控件,并不会直接显示在程序主界面中,所以要使用该控件编辑程序必须将它先添加到工具箱中,使用时和使用一般标准控件一样,将它添加到窗体中使用。具体方法如下所述。(1)单击菜单栏上的“ 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 “|“部件”命令,或者在工具箱上单击鼠标右键,弹出如图9-1所示的“部件”对话框。(2)单击“部件”对话框的“控件”选项卡,从列出来的控件列表中找到“MicrosoftCommonDialogControl6.0”选项,在其前面的方框内打上对勾选中。*9.1.1“文件”对话框在通用对话框中,用于获取文件的操作有两种:打开文件和保存文件。分别使用ShowOpen方法或ShowSave方法显示的“打开”文件对话框和“另存为”文件对话框。尽管作用不一样,但其外观及其属性基本一致,与熟悉的Word界面的“打开”文件对话框或“另存为”文件对话框的外观和作用类似。通用对话框仅用于应用程序与用户之间的信息交互,是输入输出界面,不能实现打开文件、存储文件以及其他具体的操作,如果需要实现相关的操作功能还需要编辑程序代码来实现。*9.1.1“文件”对话框“打开\另存为”选项卡设置属性*9.1.1“文件”对话框1.“打开”对话框“打开”对话框主要是应用程序打开文件操作,即在使用应用程序的过程中,要调用或使用某个文件时需要调用的对话框。*9.1.1“文件”对话框*9.1.1“文件”对话框【例9.1】设计一个应用程序。在运行时单击“打开”按钮显示“打开”对话框,可选择相应的文件,将选中的文件 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 显示在窗体中相对应的控件中。具体属性设置:参见书上表9-4*9.1.1“文件”对话框PrivateSubcmdOpen_Click()Dimfilestr,filestr1AsStringcdlOpen.Action=1'设置通用对话框为“打开”对话框filestr=""'字符串变量,用于读取文件OpencdlOpen.FileNameForInputAs#1'读取文件DoWhileNotEOF(1)'从文件中逐个读出,并存入到FileStr中LineInput#1,filestr1filestr=filestr+filestr1LooptxtWrite.Text=filestr'将文件内容显示在文本框中Close#1EndSub*9.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#1EndSub*9.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.EndDOCEndSub*9.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 送别山中相送罢,暮色掩柴扉。春草年年绿,王孙归不归 MultiLine True CommonButton (名称) 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.FontUnderlineEndSub*9.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'关闭文件ExitSubEndSub*9.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=TrueEndSub*9.2.2动态菜单PrivateSubcmdRemove_Click()DimtxtAsStringDimctlAsMenutxt=TxtCaption.TextTxtCaption.Text=""ForEachctlInmnuFileListIfctl.Caption=txtThenUnloadctlNextctlIfmnuFileList.Count<2ThenmnuFilebar.Visible=FalseEndifEndSub*9.2.2动态菜单PrivateSubmnuFileExit_Click()UnloadMeEndSubPrivateSubmnuFileList_Click(IndexAsInteger)MsgBox"Selecteditem"&Str$(Index)EndSub*9.2.3弹出菜单在Windows应用程序中,选中某个对象单击鼠标右键时,会出现一个包含该对象常用功能的弹出式菜单,从而是用户的操作更加便捷,这种菜单形式被称为快捷菜单或者弹出菜单。弹出菜单往往是独立于菜单栏而显示在窗体上任何一个地方的浮动菜单。弹出菜单上显示的内容取决于按下鼠标右键时光标所在的位置。*9.2.3弹出菜单【例9.7】设计一个弹出菜单,当用户用鼠标右键单击窗体时,弹出已经创建的菜单。方法如下所述:(1)在“菜单编辑器”中,设计一个没有缩进的菜单项(最高级别),由于弹出菜单的最高级别菜单项名称不显示,所以可以任意设定,在这里将其设置为mnuEdit。(2)将上述建立的最高级别菜单项的“可见”(Visible)属性为False,以便程序运行时不显示这个菜单项。(3)根据菜单编辑器的使用方法,依次在该菜单项后输入弹出菜单中的各个菜单项。程序设计步骤:*9.2.3弹出菜单例9.7弹出菜单属性设置 标题 名称 可见性 内缩符号 字体格式 mnuZtgs Flase 下划线 mnuHx True …. 粗体 mnuCt True … 斜体 mnuXt True … 退出 mnuTc True …*9.2.3弹出菜单*9.2.3弹出菜单编写代码,实现弹出菜单的功能:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then'鼠标单击右键PopupMenumnuZtgsEndIfEndSub*9.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的值 被按下的键 1 Shift 2 Ctrl 4 Alt*9.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 左键 2 右键 4 中键*1.MouseDown事件、MouseUp事件、MouseMove事件【例9.13】编制一个用鼠标画图的程序。DimsngDrawwidthAsSingle’模块级变量,保存线条宽度PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=1Then'如果按下左键 CrrentX=X:CurrentY=Y'设置画线起点 sngDrawwidth=1'设置线条初始宽度 DrawWidth=sngDrawwidth EndIfEndSub*1.MouseDown事件、MouseUp事件、MouseMove事件PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)DimIngDrawcolorAsLongIfButton=1Then'使用不同颜色Ifshift=1ThenIngDrawcolor=RGB(255,0,0)ElseIfshift=2ThenIngDrawcolor=vbGreenElseIfshift=4ThenIngDrawcolor=&HFF0000EndIfsngDrawwidth=sngDrawwidth+0.1DrawWidth=sngDrawwidthLine-(X,Y),IngDrawcolorEndIfEndSub*9.4.4拖放操作拖放(DragAndDrop)是Windows操作系统用户界面的一个独到之处。在Windows桌面、资源管理器、控制面板以及各应用程序中,随处都可以使用拖放操作。VisualBasic也支持对窗体上的控件进行拖放。但是,这里的“拖放”不是像在设计阶段拖动一个控件到新的位置上,而是在运行时,把控件中的内容或所包含的信息拖到其它控件中。*9.4.4拖放操作1.DragMode属性2.DragIcon属性3.DragOver事件4.DragDrop事件5.Drag方法6.TypeOf关键字7.Tag属性*本章 小结 学校三防设施建设情况幼儿园教研工作小结高血压知识讲座小结防范电信网络诈骗宣传幼儿园师德小结 通过本章的学习,读者应了解和掌握通用对话框的使用;菜单的设计,并能根据实际情况制作不同的菜单:如弹出式菜单和动态菜单;熟知键盘事件和鼠标事件;能熟练掌握多窗体的使用。并能在以后对的VB学习中灵活运用。
本文档为【第9章 界面设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:ppt
大小:569KB
软件:PowerPoint
页数:0
分类:建造师考试
上传时间:2020-03-20
浏览量:0