




已阅读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 楷体 GB2312 EndSub 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控件上右击 在弹出的快捷菜单中选择 属性 命令 打开 属性页 对话框 该对话框中有五个选项卡 分别可对不同类型的标准对话框设置属性 在设计时 可以通过属性窗口设置通用对话框的属性设置控件属性 也可以使用通用对话框的属性页设置相关属性 2 CommonDialog控件的方法在程序中要使用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 ShowFont CommonDialog1 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 ShowPrinter CommonDialog1 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 windows help notepad hlp CommonDialog1 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 IndexCase1FileNewProcCase2FileOpenProc EndSelectEndSub注意 第1个按钮的Index值为1 用Index还是用Key根据实际需要 Key可读性好 可维护性好 SelectCaseButton KeyCase TNew FileNewProcCase TOpen FileOpenProc 例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 KeyCase B Text1 FontBold NotText1 FontBoldCase I Text1 FontItalic NotText1 FontItalicCase U Text1 FontUnderline NotText1 FontUnderlineCase lt Text1 Alignment 0Case ct Text1 Alignment 2Case rt Text1 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 1ThenMsgBox YoupressedtheuppercaseAkey EndifEndSub 表10 8Shift参数的值 例10 12 设计一个程序 当按下Alt F5组合键时终止程序的运行 先把窗体的KeyPreview设置为True 再编写如下的程序 PrivateSubForm KeyDown KeyCodeAsInteger ShiftAsInteger 按下Alt键时 Shift的值为4If KeyCode vbKeyF5 And Shift vbAltMask 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 说明 1 Object是可选的一个对象表达式 可以是窗体对象和大多数可视控件 2 Button参数是表示按下或松开鼠标哪个按钮 10 4 2鼠标事件 参数Button值参数 Button 值说明vbLeftButton1左按钮被按下vbRightButton2右按钮被按下vbMiddleButton4中间按钮被按下 10 4 2鼠标事件 3 Shift参数包含了Alt Ctrl和Shift键的状态信息 和键盘事件过程中的Shift参数含义相同 如果要检测Ctrl和Shift键是否同时被按下 则应使用表达式 ShiftAndvbCtrlMask And ShiftAndvbShiftMask 或者表示为Shift 3 10 4 2鼠标事件 4 X 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 123456 ThenMsgBox 欢迎使用Form1 vbInformation titleForm1 ShowElseMsgBox 对不起 你不是合法用户 只能使用Form2 vbCritical titleForm2 ShowEndIfEndSub 10 5多重窗体与多模块程序设计 这个子过程不能放在窗体模块中 必须放在标准模块Module1中 如果要将SubMain过程设为启动对象 在 工程属性 对话框中设置启动对象为 SubMain 10 5 3窗体处理语句和方法 1 Load语句 该语句用来将新创建的窗体加载到内存中格式 Load窗体名 2 Show方法 该方法用来显示一个窗体格式 窗体名 Show模式其中 模式用来确定窗体的状态 有0和1两个值 0 默认值 表示非模态的 1表示模态 模态窗体和非模态窗体的区别 3 Hide方法 用于隐藏显示在屏幕上的窗体格式 窗体名 Hide 10 5 3窗体处理语句和方法 4 Unload语句 该语句与Load语句的功能相反 指从内存中删除指定的窗体格式 UnLoad窗体名 5 Print方法 该方法用于在窗体上输出数据格式 窗体名 Print数据列表 6 Cls方法 该方法用于清除程序运行时在窗体上显示的文本或图形 但Cls方法并不能清除在设计阶段设置的文本和图形 格式 窗体名 Cls 例10 14 编一个学生成绩处理程序 要求如下 程序包含3个窗体和1个标准模块主窗体是程序的主界面 提供用户选择操作 并根据用户选择的操作打开对应功能的窗体 主窗体的界面如图10 22 a 所示 在主窗体上单击 输入成绩 按钮后 打开输入成绩窗口 如图10 22 b 所示 在窗体中输入一同学4门课程成绩后 单击 返回 按钮 将输入的成绩保存在全局变量中 在主窗体上单击 计算成绩 按钮后 打开计算成绩窗口 如图10 22 c 所示 评价学生的等级 平均成绩90分以上为优秀 80 89为良好 70 79为中等 60 69为及格 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 封顶仪式布置工程方案(3篇)
- 电气工拆除工程方案(3篇)
- 球儿真好玩课件
- 安全教育预期培训收益课件
- 猫狗咬伤护理课件
- 猫咪课件课程总结
- 文化自信在中职语文教学中的表征与落实途径初探
- 农业无人机租赁市场2025年技术创新与产业升级趋势分析
- 工程安全防台方案(3篇)
- 电梯工程分包方案范本(3篇)
- 2025年大麻酚油(CBD油)行业研究报告及未来行业发展趋势预测
- 行政执法常识考试题库及答案
- 山东省潍坊市2025-2026学年上学期高三开学调研监测语文试题参考答案
- 钢结构隔断施工方案(3篇)
- 2025年IT技术支持工程师招聘面试技巧与模拟题答案
- 退休业务办理培训课件
- 2025-2026学年沪教版(五四学制)(2024)小学体育与健康三年级(全一册)教学设计(附目录)
- GB/T 20716.2-2025道路车辆牵引车和挂车之间的电连接器(7芯)第2部分:12 V标称电压车辆的制动系统和行走系的连接
- 学校“1530”安全教育记录表(2024年秋季全学期)
- 公路工程标准施工招标文件(2018年版)
- 最全的食物相克表(打印版)
评论
0/150
提交评论