VB教程 用户界面设计PPT课件_第1页
VB教程 用户界面设计PPT课件_第2页
VB教程 用户界面设计PPT课件_第3页
VB教程 用户界面设计PPT课件_第4页
VB教程 用户界面设计PPT课件_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

菜单设计通用对话框设计工具栏设计键盘与鼠标事件多重窗体与多模块程序设计,本章要求:,第10章用户界面设计,本章重点:,本章难点:,通用对话框的使用、菜单的建立与使用键盘与鼠标事件,通用对话框的使用、动态菜单、多模块设计,10.1菜单设计,Windows环境下的应用程序一般为用户提供三种菜单:窗体控制菜单、下拉菜单与快捷菜单。,一.启动菜单编辑器:有三种方法:1单击工具栏菜单图标2工具/菜单编辑器(CTRL+E)3窗体上快捷菜单菜单编辑器菜单编辑器操作界面如右所示。,10.1.1菜单编辑器,菜单编辑器介绍:,1.标题(Caption):2.名称(Name):3.快捷键(Shortcut):4.下一个(Next):5.和按钮6.插入(Insert)按钮:7.删除(Delete)按钮:8和按钮:10.复选(Checked)检查框:10.有效(Enabled)检查框:11.显示窗口列表(WindowList)检查框:,菜单的主要属性1.标题(Caption):在窗口上显示,例如:输入&File,显示为:File,热键:Alt+F2.名称(Name):菜单项的名称,分界符也应有名称。3.快捷键(Shortcut):下拉列表框4下一个(Next):设置下一个菜单项。5.和按钮:“”下一级菜单项;“”上一级菜单项。6.插入(Insert)按钮:插入菜单项7.删除(Delete)按钮:删除菜单项8.和按钮:改变菜单项位置。10.复选(Checked)检查框:菜单项为选定项。10.有效(Enabled)检查框:True:菜单项可选;False:不可选。11.显示窗口列表(WindowList)检查框:,1设计下拉菜单2设计子菜单或改变子菜单级别3为菜单项分组菜单名用减号“-”4为菜单项指定访问键和快捷键与命令按钮设置访问键相同。5为菜单项加上复选标记6禁止使用菜单项在程序代码中可以通过程序代码:菜单名.Enabled=False7菜单项的增减,菜单设计的常用的几项操作:,10.1.2下拉式菜单,10.1菜单设计,在下拉式菜单中,一般只需要对下拉菜单的最低级菜单项编写单击事件代码,如果对一个有下级菜单的菜单项编写了单击事件,则在执行下一级菜单时,该菜单程序将先执行。,在下拉式菜单中,一般有一个主菜单,称为菜单栏。每个菜单栏包括一个或多个选择项,称为菜单标题。,菜单控件(对象)只有一个事件单击事件(Click()),一.设计下拉式菜单的步骤:(1)新建一个窗体,并设计用户界面。(2)利用菜单编辑器设计各菜单项。(3)编写每个菜单项的事件过程。(4)运行调试各菜单命令。,二、下拉式菜单设计举例,【例10.1】设计菜单程序,通过菜单控制标签中文字的字体,字型等,程序运行界面如图10.3所示。当用户选择某一菜单项时执行相应的命令功能。,图10.3程序运行界面,设计步骤如下:1.界面设计在窗体上添加一个Frame1和Label1,用于显示文字信息。启动菜单编辑器,所要建立的菜单中各菜单项的属性设置如表10.1所示,菜单编辑器中各项设置如图10.4所示,对每一个菜单项输入标题、名称和选择相应的快捷键。,表10.1菜单项属性设置,(2)编写菜单项代码,PrivateSubForm_Load()Label1.FontSize=16Label1.Caption=长亭外古道边+Chr(13)+Chr(10)+芳草碧连天+Chr(13)+Chr(10)+问君此去几时来+Chr(13)+Chr(10)+来时莫徘徊EndSub,PrivateSubsongti_Click()Label1.FontName=宋体EndSub,PrivateSubheiti_Click()Label1.FontName=黑体EndSub,PrivateSubkaiti_Click()Label1.FontName=楷体_GB2312EndSub,PrivateSubfontstyle_Click(IndexAsInteger)fontstyle(Index).Checked=Notfontstyle(Index).CheckedSelectCaseIndexCase0Label1.FontBold=fontstyle(Index).CheckedCase1Label1.FontItalic=fontstyle(Index).CheckedCase2Label1.FontUnderline=fontstyle(Index).CheckedEndSelectEndSub,字型下拉菜单代码如下:,弹出式菜单是独立于菜单栏显示在窗体或指定控件上的浮动菜单,菜单的显示位置与鼠标当前位置有关。实现步骤如下:1.在菜单编辑器中建立该菜单。2.设置其顶层菜单项(主菜单项)的Visible属性为False(不可见)。3.在窗体或控件的MouseUp或MouseDown事件中调用PopupMenu方法显示该菜单。PopupMenu的使用方法为:PopupMenu,flags,x,y,Boldcommand,10.1.3弹出式菜单,其中:关键字“PopupMenu”可以前置窗体名称,但不可前置其他控件名称。是指通过菜单编辑器设计的、至少有一个子菜单项的菜单名称(Name)。Flags参数为常数,用来定义显示位置与行为,其取值见表10.2,10.1.3弹出式菜单设计,表10.2flags参数值表,Boldcommand参数设置菜单项可以粗体显示。,一般的弹出式菜单是在右击时弹出,所以PopupMenu方法一般是放在对象的MouseDown事件过程中,根据按下的是鼠标左键还是右键来决定是否弹出菜单。,例10.2】为【例10.1】添加一个标签的弹出式菜单,该菜单包含有“10”、“12”和“14”3个菜单项,如图10.5所示。单击相应的菜单项后可以改变标签中文字的字体大小。,弹出式式菜单设计举例,图10.5弹出式菜单,PrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then按下鼠标右键Form1.PopupMenufsize,4Or2EndIfEndsubPrivateSubsize_Click(IndexAsInteger)SelectCaseIndexCase0Label1.fontsize=10Case1Label1.fontsize=12Case2Label1.fontsize=14EndSelectEndsub,用“菜单编辑器”对话框创建好的菜单,在程序运行过程中并非就一成不变。用户可以根据实际运行情况动态地调整和控制菜单的使用,给菜单增加一些灵活性。如当某菜单项执行的操作不适合当前环境时,可以暂时使其失效或将其隐藏起来。当需要时也可以添加或删除某菜单项。隐藏或显示菜单项并不能真正地改变菜单的数量,要使菜单项真正地、动态地增减(从内存中),则必须使用菜单控件数组实现。运行时通过Load语句增加新的菜单控件,使用UnLoad语句将其删除。,10.1.4动态菜单,Load控件数组名(index)Unload控件数组名(index),10.1.4动态菜单,【例10.3】设计如下程序,当文本框中没有任何文字时,“字体大小”菜单中的各项均变为灰色显示,表示当前不可用;当用户在文本框中输入了文字后选择某菜单项后,可将文字大小设为对应值并在当前菜单项的前面加一个“”,如图10.6(a)、图10.6(b)所示。如果用户选择了“14”菜单项,则“10”菜单项将隐藏,并且添加菜单项“16”,其功能与其他菜单项相同,当用户重新选择了“12”菜单项时,“16”菜单项将被删除,并恢复菜单项“10”的可见性,即文字字号最大值为16,最小为10,菜单中只能同时存在三个选项,如图10.6(c)、图10.6(d)所示。,10.2通用对话框,工程/部件,选定控件标签,选定MicrosoftCommDialogControl6.0,CommonDialog控件不是标准控件,是一种ActiveX控件,位于MicrosoftCommonDialogControl6.0部件中。,确定,通用对话框图标,10.2.1通用对话框的基本属性和方法,CommonDialog控件的基本属性(1)Action属性:该属性决定打开何种类型的标准对话框,其取值如表10.4所示。该属性不能在属性窗口中设置,只能在程序中赋值。,表10.4打开通用对话框的方法与Action属性设置,(2)Name属性:CommonDialog控件的名称属性。(3)CancelError属性:多数对话框都有“取消”按钮,用于向应用程序表示用户想取消当前操作。CancelError属性的作用是向应用程序报告用户取消当前的操作,通过一个错误报告给应用程序。如果该属性设置为True,在程序的运行阶段,用户选择“取消”操作时,出现错误提示。默认是False,不出现错误提示。对话框打开后,为了防止用户没有输入任何信息便使用取消操作,则可用此属性设置出错警告。(4)Flags属性:用于设置对话框外观及工作方式。对于每种对话框都有许多不同的设置值。在通用对话框的使用过程中,每种对话框都有自己的特殊属性。CommonDialog控件的属性可以在属性窗口中设置,也可在其“属性页”对话框中设置。在窗体中的CommonDialog控件上右击,在弹出的快捷菜单中选择“属性”命令,打开“属性页”对话框,该对话框中有五个选项卡,分别可对不同类型的标准对话框设置属性。,在设计时,可以通过属性窗口设置通用对话框的属性设置控件属性,也可以使用通用对话框的属性页设置相关属性。,2CommonDialog控件的方法在程序中要使用CommonDialog控件的标准对话框,除了使用CommonDialog控件的Action属性设置对话框的类型外,还可以使用CommonDialog控件的方法。这些方法如表10.4所示。例如:CommonDialog1.Action=1或者CommonDialog1.ShowOpen,10.2.2“打开”对话框,CancelError:返回或设置一个值,该值指示当单击“取消”按钮时是否出错。DefaultExt:用于设置或返回对话框默认的文件扩展名。该属性值是一个文件扩展名字符串,如“*.txt”、“*.doc”等。当保存一个没有指定扩展名的文件时,系统自动添加默认扩展名。DialogTitle:返回或设置对话框的标题。Filename:返回或设置用户所选择的文件的完整路径和文件名称。FileTitle:返回用户选择文件的文件名称,包括扩展名,但不包括路径。,使用通用对话框控件的ShowOpen方法,或将Action属性赋值为1,可以在运行时显示“打开”对话框。需要设置以下属性:,6.Filter:设置或返回在对话框的文件类型列表框中所显示文件类型。该属性值可以是一组元素或用“|”符号分开的分别表示不同类型文件的多组元素组成。例如,如果要在“文件类型”列表框中显示下列三种文件类型以供用户选择。WORD文档(*.DOC)扩展名为DOC的Word文件文本文件(*.TXT)扩展名为TXT的文本文件AllFiles(*.*)所有文件那么Filter属性就应该设为:WORD文档(*.doc)|*.doc|文本文件(*.txt)|*.txt|所有文件|*.*7.FilterIndex:返回或设置“打开”或“另存为”对话框中一个默认的过滤器。8.InitDir:返回或设置“打开”对话框中的初始目录。9.MaxFileSize:返回或设置使用CommonDialog控件时,被打开的文件名的最大尺寸。,10.2.2“打开”对话框,上述属性若在程序中设置,都必须放在使用Action属性或ShowOPen和ShowSave方法调用的“打开”或“另存为”对话框语句之前。否则起不到其功能,【例10.4】编写一个简单的文本文件编辑程序,如图10.9所示,文件的内容显示在上面的文本框中。从左到右共6个命令按钮依次按约定命名。下面列出了Command1事件过程的程序代码,其他的事件过程在以后的各节中分别给出。,10.2.2“打开”对话框,图10.9通用对话框示例,程序运行时,当CommonDialog控件的Action属性为2或者调用ShowSave方法时,系统就会弹出“另存为”对话框,它为用户在存储文件时提供了一个标准的用户界面。实际上“另存为”对话框和“打开”对话框涉及的属性基本一样,独有一个属性DefaultExt,表示默认扩展名。,10.2.3“另存为”对话框,【例10.5】为例10.4中的“另存为”命令按钮(Command2)编写事件过程,把文本框(Text1)中的内容写入一个文本文件。,颜色对话框是当Action值为3时或者调用ShowColor方法时,系统就会弹出“颜色”对话框,为用户提供了颜色选择器,如右图。重要属性Color:用来返回或设置选定的颜色。,10.2.4“颜色”对话框,【例10.6】为例10.4中的“颜色”命令按钮(Command3)编写事件过程,用“颜色”对话框设置文本框的前景颜色。“颜色”按钮的单击事件过程如下:PrivateSubCommand3_Click()CommonDialog1.Action=3Text1.ForeColor=CommonDialog1.ColorEndSub,10.2.5“字体”对话框,字体对话框是Action为4时的通用对话框,如下图所示,提供用户选择字体、字号及字体样式等。字体对话框重要的属性有:Color,FontName,FontSize,FontBoldFontItalic,FontStrikethru,FontUnderline,Max等.,Flags属性:设置所显示的字体类型,数据类型为Long。注意在显示“字体”对话框前,必须先将Flags属性设置为cdlCFScreenFonts,cdlCFPrinterFonts,或cdlCFBoth。否则,会发生字体不存在的错误。“字体”对话框的Flags属性设置值,10.2.5“字体”对话框,【例10.7】为例10.4中的“字体”命令按钮(Command4)编写事件过程,设置文本框的字体。“字体”按钮的单击事件过程如下:PrivateSubCommand4_Click()CommonDialog1.Flags=cdlCFScreenFontsOrcdlCFEffectsCommonDialog1.Max=100CommonDialog1.Min=1CommonDialog1.ShowFontCommonDialog1.Action=4Text1.FontName=CommonDialog1.FontNameText1.FontSize=CommonDialog1.FontSizeText1.FontBold=CommonDialog1.FontBoldText1.FontItalic=CommonDialog1.FontItalicText1.FontStrikethru=CommonDialog1.FontStrikethruText1.FontUnderline=CommonDialog1.FontUnderlineText1.ForeColor=CommonDialog1.ColorEndSub,程序运行时,当CommonDialog控件的Action属性为5或者调用ShowPrinter方法时,系统就会弹出“打印”对话框,它是一个设置选择打印参数的界面,如图10.12所示。,10.2.6“打印”对话框,图10.12“打印”对话框,重要属性:Copies:返回或设置需要打印的份数。Max、Min:返回或设置打印范围允许的最大和最小值。FromPage、ToPage:返回或设置起始页号和终止页号。当cdlPDPageNums标志被设置时才有效。,【例10.8】为例10.4中的“打印”命令按钮(Command5)编写事件过程,用“打印”对话框打印文本框(Text1)中的内容。“打印”按钮的单击事件过程如下:PrivateSubCommand5_Click()DimiAsIntegerCommonDialog1.ShowPrinterCommonDialog1.Action=5Fori=1ToCommonDialog1.CopiesPrinter.PrintText1.TextNextiPrinter.EndDoc结束打印EndSub,10.2.7“帮助”对话框,程序运行时,当CommonDialog控件的Action属性为6或者调用ShowHelp方法时,系统就会弹出“帮助”对话框,它可以为用户制作应用程序的联机帮助。“帮助”对话框本身不能建立应用程序的帮助文件,它只能将已建好的帮助文件从磁盘中提取出来,并与界面建立连接,从而达到显示并检索帮助信息的目的。使用ShowHelp方法前,必须将CommonDialog控件的HelpFile和HelpCommand属性设置为与其相应的一个常数或值,否则,Winhlp32.exe就不能显示帮助文件。对于“帮助”对话框,有以下几个重要属性:HelpCommand:返回或设置需要的联机帮助的类型。具体设置请参阅VB帮助系统HelpFile:确定MicrosoftWindowsHelp文件的路径和文件名,应用程序使用这个文件显示Help或联机文档。HelpKey:返回或设置标识请求的帮助主题的关键字。HelpContext:该属性与HelpCommand属性一起使用(设置HelpCommand=cdlHelpContext),返回或设置请求的帮助主题的上下文ID以指定要显示的帮助主题。,【例10.9】为例10.4中的“帮助”命令按钮(Command6)编写事件过程,通过“帮助”对话框来显示记事本程序的帮助文件。“帮助”按钮的单击事件过程如下:PrivateSubCommand6_Click()CommonDialog1.HelpCommand=cdlHelpContentsCommonDialog1.HelpFile=c:windowshelpnotepad.hlpCommonDialog1.ShowHelpEndSub,工具栏的制作有两种方法:1.是使用命令按钮和图形框来手工制作2.使用ToolBar控件和ImageList控件来制作。前一种方法比较繁琐,较少使用。后一种方法较容易,在VB中常用后一种方法。ToolBar控件和ImageList控件并没有在工具箱里,属于ActiveX控件,需要为工程加载“MicrosoftWindowsCommonControls6.0”控件。加载成功后控件工具栏如图10.13所示。,10.3工具栏,ImageList控件不单独使用,专门为其它控件提供图像库.,使用方法如下:在窗体中添加一个ImageList控件。其大小固定,运行时不可见。右击ImageList控件,选择“属性”,打开“属性页”对话框,如图所示。选择“图像”选项卡,单击“插入图片”按钮,逐个向ImageList控件中加入图片;如果需要删除多余的图片,选中后点击“删除图片”按钮。,10.3.1ImageList控件,使用ToolBar控件具体创建一个工具栏,首先在窗体中添加一个ToolBar控件,设置ToolBar控件的Align属性以控制工具栏在窗体中的位置。右击选择“属性”,打开“属性页”对话框。,10.3.2ToolBar控件,1.设置ToolBar控件中的按钮点击“按钮”选项卡,如图所示。单击“插入按钮”和“删除按钮”,可以增加或减少工具栏中的按钮;每个按钮需要使用ImageList控件中的哪个图片作为外观显示,在“图像”中进行设置;“关键字”用于在程序代码中引用该按钮。“标题”与“描述”文本框中是在按钮上显示的文字及按钮的说明信息。在“值”下拉列表中可以设置按钮的状态:0-tbrUnpressed为弹起状态1-tbrPressed为按下状态。,图10.15“属性页”中“按钮”选项卡,0-tbrDefault:普通(默认的)按钮。1-tbrCheck:复选框按钮。具有按下、放开两种状态。2-tbrButtonGroup:单选按钮3-tbrSeparator:分隔符。表示将不同组或不同类的按钮分开,如单选按钮。4-tbrPlaceholder:占位符。5-thrDropdown:下拉式按钮。可以建立下拉式菜单。,10.3.2ToolBar控件,图10.15“属性页”中“按钮”选项卡,在“样式”下拉列表中可以设置按钮的行为特点,并且将影响按钮的功能。具有六种类型:,2.设置ToolBar控件的通用属性,和ImageList控件建立关联。打开“通用”选项卡,在图像列表选项中选择图像列表控件名ImageList1,这样就建立了工具栏控件与图像列表控件的关联。在程序运行时,下述代码也可建立工具栏控件与图像列表控件的关联:PrivateSubForm_Load()Toolbar1.ImageList=ImageList1EndSub一旦工具栏控件与图像列表控件建立了关联,ToolBar控件“属性页”对话框的“按钮”选项卡中的“图像”选项即变为有效。只需在其中输入图像库中图像的索引号即可将对应的图片添加到按钮上。,10.3.2ToolBar控件,3.响应ToolBar控件事件ToolBar控件常用的事件有两个:ButtonClick和ButtonMenuClick。前者对按钮样式为0-2,后者对样式为5的菜单按钮。(1)用索引Index确定按钮(2)用关键字Key确定按钮,PrivateSubToolbar1_ButtonClick(ByvalButtonAsComctlLib.Button)SelectCaseButton.IndexCase1FileNewProcCase2FileOpenProcEndSelectEndSub注意:第1个按钮的Index值为1。用Index还是用Key根据实际需要,Key可读性好,可维护性好。,SelectCaseButton.KeyCaseTNewFileNewProcCaseTOpenFileOpenProc.,【例10.9】创建如图所示的窗体,并编写程序代码实现工具栏上各按钮的功能。,图10.16例10.9界面设计,设计步骤如下:1.设计界面首先在窗体上添加一个文本框,设置其Multiline属性为True,ScrollBars属性为2,添加ImageList控件,该控件包含有图所示的六个图形。添加ToolBar控件,在按钮选项卡中逐个添加按钮。各按钮属性设置如表10.6所示。,图10.16例10.9界面设计,2.编写程序代码PrivateSubForm_Load()Toolbar1.ImageList=ImageList1EndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCaseBText1.FontBold=NotText1.FontBoldCaseIText1.FontItalic=NotText1.FontItalicCaseUText1.FontUnderline=NotText1.FontUnderlineCaseltText1.Alignment=0CasectText1.Alignment=2CasertText1.Alignment=1EndSelectEndSub,10.4.1键盘事件,在VisualBasic中,提供KeyPress、KeyDown、KeyUp三种键盘事件,窗体和接受键盘输入的控件都识别这三种事件。KeyPress按下对应某ASCII字符的键。KeyDown按下键盘的任意键。KeyUp释放键盘的任意键只有获得焦点的对象才能够接受键盘事件。,1.KeyPress事件,在按下与ASCII字符对应的键时将触发KeyPress事件。,10.4键盘和鼠标事件,KeyPress事件过程的语法格式是:SubObject_KeyPress(KeyAsciiAsInteger)其中:Object是指窗体或控件对象名,KeyAscii参数返回对应于ASCII字符代码的整型数值。,例如,如果希望将文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:PrivateSubText1_KeyPress(KeyAsciiAsInteger)KeyAscii=Asc(Ucase(Chr(KeyAscii)EndSub,10.4键盘和鼠标事件,KeyPress事件只识别Enter、Tab和Backspace键。不能够检测其它功能键、编辑键和定位键。,【例10.10】设计一个应用程序,在窗体中建立一个文本框和一个标签,在文本框中限定只能输入英文字母、空格和BackSpace键,当从键盘向文本框输入英文字符时,将其转换成大写字母并显示在标签中。程序运行结果如图所示。,10.4键盘和鼠标事件,图10.17例10.10运行结果,PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimcharAsStringSelectCaseKeyAsciiCase65To90,97To122,32char=UCase(Chr(KeyAscii)Label1.Caption=Label1.Caption&charCase8Label1.Caption=Left(Label1.Caption,Len(Label1.Caption)-1)CaseElseKeyAscii=0EndSelectEndSub,2.KeyDown和KeyUp事件,当一个对象具有焦点时按下(KeyDown)或松开(KeyUp)一个键时发生。它们报告键盘本身准确的物理状态:按下键(KeyDown)及松开键(KeyUp)。,KeyDown和KeyUp事件能够检测其它功能键、编辑键和定位键。KeyUp和KeyDown事件过程的语法格式如下:SubObject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)SubObject_KeyUp(KeyCodeAsInteger,ShiftAsInteger),说明:(1)KeyCode参数值是用户所操作的键的扫描代码,它告诉事件过程用户所操作的物理键,例如,不管键盘处于小写状态还是大写状态,用户在键盘上按下“A”健,KeyCode参数值相同。对于有上档字符和下档字符的键,其KeyCode也是相同的,为下档字符的ASCII码。,keycode参数通过ASCII值或键代码常数来识别键。字母键的键代码与此字母的大写字符的ASCII值相同。所以“A”和“a”的keycode都是由Asc(“A”)返回的数值。,表10.7Keycode和KeyAscii值,2.KeyDown和KeyUp事件,KeyUp和KeyDown事件过程的语法格式如下:SubObject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)SubObject_KeyUp(KeyCodeAsInteger,ShiftAsInteger),说明:(2)Shift参数是一个整数,表示键盘事件发生时Shift、Ctrl和Alt键的状态。Shift是一个位域参数,由若干位组成,每个位的信息指出某一种状态是打开(用1表示)还是关闭(用0表示)。其中最右侧三位用来表示Shift、Ctrl和Alt键的状态,相应二进制位为0时表示未按下对应键,为1时表示按下了对应键。,例如:下例是用Shift参数判断是否按下了字母的大写形式。PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyAAndShift=1ThenMsgBoxYoupressedtheuppercaseAkey.EndifEndSub,表10.8Shift参数的值,【例10.12】设计一个程序,当按下Alt+F5组合键时终止程序的运行。,先把窗体的KeyPreview设置为True,再编写如下的程序:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)按下Alt键时,Shift的值为4If(KeyCode=vbKeyF5)And(ShiftvbAltMask)ThenEndEndSub,10.4键盘和鼠标事件,注意:KeyAscii是获取键的Ascii值,就是说你按下主键区的数字和按下数字键区的数字返回的是同一个Ascii值,同一个字母大、小写的KeyAscii是不同的。KeyCode值返回的相当于每个键的标号,每个键都有一个不同的KeyCode值,因而通过KeyCode值可以判断光标键、回车键等键是否按下,可用于程序的特殊控制。,10.4键盘和鼠标事件,大多数控件能够识别鼠标的MouseMove、MouseDown和MouseUp事件,通过响应这些鼠标事件,能在应用程序对鼠标位置及状态的变化作出响应操作。MouseMove每当鼠标指针移动到屏幕新位置时发生MouseDown按下任意鼠标键按钮时发生MouseUp释放任意鼠标键按钮时发生,10.4.2鼠标事件,MouseMove、MouseDown、MouseUp三个事件的过程的语法格式如下:SubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SubObject_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle),说明:1Object是可选的一个对象表达式,可以是窗体对象和大多数可视控件。2Button参数是表示按下或松开鼠标哪个按钮,,10.4.2鼠标事件,参数Button值参数(Button)值说明vbLeftButton1左按钮被按下vbRightButton2右按钮被按下vbMiddleButton4中间按钮被按下,10.4.2鼠标事件,3Shift参数包含了Alt、Ctrl和Shift键的状态信息,和键盘事件过程中的Shift参数含义相同。如果要检测Ctrl和Shift键是否同时被按下,则应使用表达式(ShiftAndvbCtrlMask)And(ShiftAndvbShiftMask),或者表示为Shift=3。,10.4.2鼠标事件,4X,Y:表示当前鼠标指针的位置,【例10.13】设计一个简单的绘图应用程序。当按下任意鼠标键并拖动时,MouseDown事件过程和一个相关的MouseMove事件过程协同工作以启动绘图。MouseUp事件过程禁止绘图。,图10.19简单画图程序,1.添加窗体2删除窗体3保存窗体,10.5.1管理多重窗体,10.5多重窗体与多模块程序设计,10.5.2设置启动窗体,1.设置启动窗体2启动时不加载窗体,图10.21“工程1-工程属性”对话框,在某些情况下,应用程序启动时不加载任何窗体,如先运行装入数据文件的代码,然后再根据数据文件的内容在不同窗体中选择要打开的窗体。要实现此功能,可以在工程中添加一个标准模块Module1,然后在标准模块中创建一个名为Main的子过程,在过程中按要求进行编程。如下面的例子所示。,Submain()Dimpasswordpassword=InputBox(请输入口令,用户注册)Ifpassword=ThenMsgBox没有输入密码,本次程序运行结束!,vbInformationExitSubEndIfIfpassword=123456ThenMsgBox(欢迎使用Form1!),vbInformation,titleForm1.ShowElseMsgBox对不起,你不是合法用户!,只能使用Form2,vbCritical,titleForm2.ShowEndIfEndSub,10.5多重窗体与多模块程序设计,这个子过程不能放在窗体模块中,必须放在标准模块Module1中。如果要将SubMain过程设为启动对象,在“工程属性”对话框中设置启动对象为“SubMain”。,10.5.3窗体处理语句和方法,1Load语句:该语句用来将新创建的窗体加载到内存中格式:Load窗体名,2Show方法:该方法用来显示一个窗体格式:窗体名.Show模式其中:模式用来确定窗体的状态,有0和1两个值。0(默认值)表示非模态的,1表示模态。模态窗体和非模态窗体的区别。,3Hide方法:用于隐藏显示在屏幕上的窗体格式:窗体名.Hide,10.5.3窗体处理语句和方法,4Unload语句:该语句与Load语句的功能相反,指从内存中删除指定的窗体格式:UnLoad窗体名,5Print方法:该方法用于在窗体上输出数据格式:窗体名.Print数据列表,6Cls方法:该方法用于清除程序运行时在窗体上显示的文本或图形。但Cls方法并不能清除在设计阶段设置的文本和图形。格式:窗体名.Cls,【例10.14】编一个学生成绩处理程序,要求如下:程序包含3个窗体和1个标准模块主窗体是程序的主界面,提供用户选择操作,并根据用户选择的操作打开对应功能的窗体,主窗体的界面如图10.22(a)所示。在主窗体上单击“输入成绩”按钮后,打开输入成绩窗口,如图10.22(b)所示。在窗体中输入一同学4门课程成绩后,单击“返回”按钮,将输入的成绩保存在全局变量中。在主窗体上单击“计算成绩”按钮后,打开计算成绩窗口,如图10.22(c)所示。评价学生的等级:平均成绩90分以上为优秀,8089为良好,7079为中等,6069为及格,60分以下为不及格。,10.5.4多模块程序设计示例,分析:根据题目要求,本题目有三个窗体FrmMain、Form2和Form3,三个窗体上各控件按默认约定依次命名。还有一个标准模块Module1,对窗体间公用的全局变量进行了说明。选择启动对象为FrmMain窗体。,方法一:在标准模块中定义全局变量及编写评级函数方法二:不添加标准模块,把上面标准模块里的代码都写到FrmMain中,直接进行窗体之间的数据访问,10.5.4多模块程序设计示例,10.6多文档界面设计,Windows应用程序风格:单文档界面(SDI)多文档界面(MDI)资源管理器风格的界面,要决定使用哪种界面样式需要看应用程序的目的。例如,一个处理学生档案的应用程序可能要用多文档界面样式,一个教师很可能会同时处理一个以上学生档案,或者需要对两个学生进行比较。另一方面,日历程序最好设成单文档界面样式,因为一般不会同时打开一个以上日历。,10.6.1多文档界面特点,多文档界面由父窗口和子窗口组成,一个父窗口可包含多个子窗口,子窗口最小化后将以图标形式出现在父窗口中,而不会出现在Windows的任务栏中。当最小化父窗口时,所有的子窗口也被最小化,只有父窗口的图标出现在任务栏中。父窗口就是MDI窗体,子窗口是指MDChild属性为True的普通窗体。,1区分MDI窗体与MDI子窗体在工程资源管理器的窗口中MDI窗体、MDI子窗体和标准窗体使用不同的图标来显示。如图10.23所示,窗体图标的左下角有一个小窗体的为MDI子窗体。,10.6.1多文档界面特点,2多文档界面的特点所有子窗体均显示在MDI窗体的工作空间内。像其他的窗体一样,用户能移动子窗体和改变子窗体的大小,但它们被限制在MDI窗体工作空间内。当MDI窗体最小化或关闭时,它所包含的所有子窗体都会被最小化或关闭。当各子窗体最小化时,最小化图标将显示在MDI窗体底部而不是在任务栏中。只有MDI窗体最小化后其图标才显示在任务栏中。当子窗体最大化时,它的标题会与MDI窗体的标题组合在一起显示在MDI窗体的标题栏上。MDI父窗体和子窗体可以有各自的菜单,活动子窗体的菜单显示在MDI窗体的菜单栏中,而不是显示在子窗体中。,在VisualBasic中创建多文档界面的步骤如下:(1)打开“工程”菜单,选择“添加MDI窗体”,打开“添加MDI窗体”对话框。(2)在“添加MDI窗体”对话框中选择“新建”选项卡,再选择“MDI窗体”,然后单击“打开”按钮,添加一个新的MDI父窗体(MDIForm对象)。一个应用程序只能有一个MDI父窗体。多数控件不能放在MDI窗体上,除非控件具有Align属性(如PictureBox控件)或者运行时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论