VisualBasic编程及实例分析教程(下)ppt.ppt_第1页
VisualBasic编程及实例分析教程(下)ppt.ppt_第2页
VisualBasic编程及实例分析教程(下)ppt.ppt_第3页
VisualBasic编程及实例分析教程(下)ppt.ppt_第4页
VisualBasic编程及实例分析教程(下)ppt.ppt_第5页
已阅读5页,还剩179页未读 继续免费阅读

下载本文档

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

文档简介

VisualBasic编程及实例分析教程 1 VisualBasic编程及实例分析教程 主讲 郑海春 VisualBasic编程及实例分析教程 2 绪论 为什么要学这么课程 学习这么课程对以后的学习有何帮助 VisualBasic编程及实例分析教程 3 章节结构 第一章 VisualBasic概述第二章 VisualBasic编程起步第三章 VisualBasic语言基础第四章 VisualBasic程序结构第五章 应用程序用户界面第六章 多重窗体与多文档界面第七章 VisualBasic文件系统第八章 VisualBasic图形操作第九章 创建和使用自定义类第十章 WindowsAPI编程第十一章 程序调试与错误处理第十二章 VisualBasic数据库编程第十三章 学生信息管理系统开发实例 VisualBasic编程及实例分析教程 4 第六章多重窗体与多文档界面 本章内容掌握VB的多重窗体应用程序的设计方法掌握多文档 MDI 界面应用程序的设计方法 VisualBasic编程及实例分析教程 5 6 1多重窗体应用程序设计6 2多文档界面应用程序设计6 3小结6 4习题 本章目录 VisualBasic编程及实例分析教程 6 6 1多重窗体应用程序设计 添加多重窗体 多重窗体应用程序的工程包含多个普通窗体 其中的第一个窗体是在建立工程时由系统自动添加的 其余的窗体则要在设计界面时添加 设置启动对象 在程序运行时 首先被加载并执行的对象 称为程序的启动对象 多重窗体实际就是工程中包含多个普通窗体 每个窗体的用法和特点与前一章介绍的窗体一样 VisualBasic编程及实例分析教程 7 应用实例 例 编写一简单的学生成绩处理程序 实现学生成绩的输入 计算和评价的功能 分析 本程序需要用到三个窗体和一个标准模块文件 这三个窗体分别为主窗体 输入成绩窗体和计算成绩窗体 标准模块用来定义保存学生成绩的全局变量和对学生成绩等级进行评价的全局函数 窗体设计界面如图所示 VisualBasic编程及实例分析教程 8 2 有关属性的设置 工程 主窗体及控件属性值设置 VisualBasic编程及实例分析教程 9 输入成绩窗体及控件属性值设置 VisualBasic编程及实例分析教程 10 计算成绩窗体及控件属性值设置 VisualBasic编程及实例分析教程 11 3 代码编写 在主窗体frmMain的代码窗口编写如下程序代码 VisualBasic编程及实例分析教程 12 在输入成绩窗体frmInput的代码窗口编写如下程序代码 VisualBasic编程及实例分析教程 13 在计算成绩窗体frmCompute的代码窗口编写如下程序代码 VisualBasic编程及实例分析教程 14 在标准模块Common的代码窗口编写如下程序代码 VisualBasic编程及实例分析教程 15 4 设置好界面和属性后 请在工程的属性对话框中将主窗体frmMain设置为启动对象 然后运行程序 VisualBasic编程及实例分析教程 16 6 2多文档界面应用程序设计 MDI应用程序的创建创建MDI窗体新建一个标准EXE工程 单击 工程 菜单下的 添加MDI窗体 命令 打开 添加MDI窗体 对话框 在 新建 选项卡中 选择 MDI窗体 图标 单击 打开 按钮创建子窗体 用户界面样式主要有两种 单文档界面和多文档界面 SDI界面的一个示例就是MicrosoftWindows中的NotePad 记事本 应用程序 但绝大多数基于Windows的应用程序都是MDI界面 VisualBasic编程及实例分析教程 17 MDI窗体及其子窗体的加载 可以在MDI窗体的Click事件中加入代码 修改MDI窗体的Click事件过程 使其当改变子窗体Form1的 Caption 属性时 可自动显示该子窗体 代码如下 VisualBasic编程及实例分析教程 18 MDI窗体及其子窗体的操作移动窗体最大化子窗体最小化子窗体MDI窗体的常用属性 方法和事件ActiveForm属性ActiveControl属性Arrange方法QueryUnload事件 VisualBasic编程及实例分析教程 19 应用实例 例 设计一个MDI记事本程序 窗体设计界面如图所示 VisualBasic编程及实例分析教程 20 3 代码编写 见教材 4 运行结果如图所示 2 属性设置 见教材 VisualBasic编程及实例分析教程 21 6 3小结 本章主要对VB的多重窗体和多文档 MDI 界面应用程序的设计方法进行讲述 并给出了相应的具体应用实例 VisualBasic编程及实例分析教程 22 6 4习题 简答题1 文档界面一般有哪几中组织形式 简述创建MDI文档界面的一般方法和步骤 2 试说明普通窗体 MDI窗体 MDI子窗体之间的区别 3 MDI子窗体能否单独作为启动窗体 当关闭MDI子窗体时 其MDI窗体是否随之关闭 4 在MDI窗体中 是否可放置其他控件 若能 哪些控件可以放在MDI窗体上 5 如何指定多文档界面应用程序中的活动窗体 VisualBasic编程及实例分析教程 23 第七章VisualBasic文件系统 本章内容了解文件的结构及类型 掌握不同类型文件的读写操作 掌握常用的文件操作函数和语句 VisualBasic编程及实例分析教程 24 7 1文件结构及类型7 2文件操作7 3文件操作函数和语句7 4小结7 5习题 本章目录 VisualBasic编程及实例分析教程 25 7 1文件结构及类型 文件是存储在外部介质上的数据的集合 文件结构 计算机中 一般除一些内存驻留程序或正在执行的程序及少量数据被装入内存外 其余大量的程序和数据在外存中存放 必要时才被调入内存 那么当数据被调入 调出文件时 必须知道其存放的位置 否则很难查找相应的数据 为能有效的存放数据 就必须将数据以某种方式存储起来 这种特定的存储方式就是文件结构 VisualBasic编程及实例分析教程 26 文件类型1 顺序存取文件2 随机存取文件3 二进制存取文件 VisualBasic编程及实例分析教程 27 7 2文件操作 顺序文件的打开和关闭顺序文件的写操作顺序文件的读操作 VisualBasic编程及实例分析教程 28 随机文件的打开和关闭随机文件的写操作随机文件的读操作 VisualBasic编程及实例分析教程 29 二进制文件的打开和关闭二进制文件的写操作二进制文件的读操作 VisualBasic编程及实例分析教程 30 7 3文件操作函数和语句 FileCopy语句 VisualBasic提供了许多与文件操作有关的函数和语句 因而用户可以方便地对文件或目录进行复制 删除等维护工作 格式 FileCopy源文件 目标文件功能 复制一个文件 说明 1 源文件 和 目标文件 分别用来表示要被复制的源文件和目标文件名 可以包含目录 文件夹或驱动器 2 FileCopy语句不能复制一个已打开的文件 VisualBasic编程及实例分析教程 31 Kill语句 格式 Kill文件名功能 删除文件 说明 1 文件名 用来指定要被删除的文件 可以包含目录 文件夹或驱动器 可以使用通配符 代表任意多个字符 和 代表任意一个字符 2 如果文件打开 则不能删除 Name语句 格式 Name旧文件名As新文件名功能 文件重命名 说明 1 旧文件名 和 新文件名 为字符串表达式 分别指定已存在的文件和新文件的文件名和位置 可以包含目录 文件夹或驱动器 不能使用 和 2 不能对一个已打开的文件使用Name语句 3 Name语句不能创建新文件 目录或文件夹 4 如果 旧文件名 和 新文件名 的路径不同 则可重命名文件并将其移动到相应的目录或文件夹中 5 新文件名 所指定的文件名不能是已有的文件 否则将出错 VisualBasic编程及实例分析教程 32 ChDrive语句 格式 ChDrivedrive功能 改变当前驱动器 说明 字符串表达式drive的首字符指定将要改变到的驱动器名称 ChDir语句 格式 ChDirpath功能 改变当前目录 说明 1 字符串表达式path指定将要改变到的默认目录名称 2 改变默认目录并不改变默认驱动器 3 如果没有指定驱动器 则改变的是当前驱动器上的默认目录 MkDir语句 格式 MkDirpath功能 创建一个新的目录 说明 1 path参数是一个字符串表达式 用来指定要创建的目录 2 path应是完整路径 如果其中没有指定驱动器 则MkDir会在默认驱动器上创建新的目录 VisualBasic编程及实例分析教程 33 RmDir语句 格式 RmDirpath功能 删除一个存在的目录 说明 1 path参数是一个字符串表达式 指定要删除的目录 2 path应是完整路径 若其中未指定驱动器 则RmDir会在默认驱动器上删除目录 3 RmDir不能删除一个含有文件的目录 如要删除 则应先使用Kill语句删除目录下的所有文件 LOF函数 格式 LOF 文件号 功能 返回一个由文件号指定的己打开文件的大小 类型为Long 单位是字节 如LOF 1 返回 1文件的长度 VisualBasic编程及实例分析教程 34 FileLen函数 格式 FileLen 文件名 功能 返回一个未打开文件的大小 类型为Long 单位是字节 文件名可以包含驱动器和目录 EOF函数 格式 EOF 文件号 功能 此函数测试当前读写位置是否位于 文件号 所代表文件的末尾 如果是 则返回True 否则 返回False Seek函数 格式 Seek 文件号 功能 此函数返回 文件号 指定文件中的当前读写位置 返回值为长整型 如果程序中下一条读写操作语句没有提供读写位置参数 默认地 就会从这个位置开始进行读写 说明 1 对于随机文件 返回值表示记录号 2 对于顺序文件或二进制文件 返回值表示从文件开头算起以字节为单位的位置 VisualBasic编程及实例分析教程 35 Seek语句 格式 Seek 文件号 位置功能 Seek语句将 文件号 所代表文件的下一次读写位置设置在 位置 参数指定处 说明 1 随机文件的 位置 参数单位是记录 二进制文件的 位置 参数单位是字节 2 不能使用Seek语句来移动顺序文件的读写位置 Dir函数 格式 Dir pathname attributes 功能 用来测试一个指定的路径下是否有指定的文件和文件夹 目录 被测试的文件和文件夹名可包含通配符 和 除了文件和文件夹的名称之外 还可指定其属性 说明 1 pathname为可选参数 用来指定文件名的字符串表达式 可能包含目录或文件夹 以及驱动器 如果没有找到pathname 则会返回零长度字符串 2 attributes为可选参数 常数或数值表达式 其总和用来指定文件和文件夹的属性 如果省略 则会返回匹配pathname但不包含属性的文件 3 Dir会返回匹配pathname的第一个文件名 若想得到其他匹配的文件名 再一次调用不使用参数的Dir函数 如果已没有合乎条件的文件 Dir会返回一个空字符串 VisualBasic编程及实例分析教程 36 FreeFile函数 格式 FreeFile 范围 功能 返回一个尚未被占用的文件号 说明 参数 范围 可以是0 缺省值 或1 表示文件号的范围 FreeFile或FreeFile 0 返回1 255之间未使用的文件号 FreeFile 1 返回256 511之间未使用的文件号 CurDir函数 格式 CurDir drive 功能 此函数返回一个字符串值 该字符串表示指定驱动器上的默认目录 说明 1 drive参数是一个字符串表达式 它的第一个字符指定一个现有的驱动器 2 如果没有指定驱动器 或drive是空字符串 则CurDir函数返回当前驱动器上的默认目录 VisualBasic编程及实例分析教程 37 GetAttr函数 格式 GetAttr pathname 功能 此函数返回一个整型值 表示字符串类型参数pathname所指定的文件或文件夹的属性 GetAttr函数的返回值是表7 4中所列属性值中的一个或多个之和 VisualBasic编程及实例分析教程 38 7 4小结 文件系统是VB应用的一个重点 本章对VB的文件系统进行了比较详细的阐述 并结合了具体的应用实例 希望读者能认真掌握 灵活使用 VisualBasic编程及实例分析教程 39 7 5习题 编程题1 在窗体上的文本框中输入字符串 当单击 保存 按钮时 首先检查文本框中是否有字符串 如果没有 给出提示 否则 把文本框中的小写字母变成大写字母后 将整个字符串保存到一个名为FileString txt的文件中 2 设有一个学生基本情况记录文件Student txt 其中保存学生的学号 姓名 性别 年龄 专业等信息 编写一个程序 将Student txt文件中学生的学号和姓名保存到另一个新建的文件中 VisualBasic编程及实例分析教程 40 3 磁盘上有File1 txt和File2 txt两个文件 要求将两个文件中的数据读出 并保存到一个新的文件中 4 在窗体上添加文件系统控件 包括驱动器列表框 目录列表框和文件列表框 以及 保存 显示 和 退出 命令按钮 当单击窗体上的 保存 按钮时 将文件列表框中所显示的当前目录下的所有文件名保存到一个磁盘文件FileName txt中 当单击 显示 按钮时 将FileName txt中所保存的内容显示到窗体上的列表框控件中 VisualBasic编程及实例分析教程 41 第八章VisualBasic图形操作 本章内容掌握图形操作的基础掌握绘图属性 事件和绘图方法 VisualBasic编程及实例分析教程 42 8 1图形操作基础8 2绘图属性和事件8 3绘图方法8 4应用实例8 5小结8 6习题 本章目录 VisualBasic编程及实例分析教程 43 8 1图形操作基础 VB中的每一个图形操作 其中包括调整大小 移动和绘图等 都要使用绘图区或容器的坐标系统 掌握好坐标系统 就能绘制出更精致的图形 为了方便用户绘图 在VB中用户还可以自己定义坐标系 同时为了图形的美观 VB提供了多种颜色可供用户选择使用 坐标系统 在VB中 每个对象定位于存放它的容器内 这个容器可以是屏幕 窗体或图片框等 对象的定位就要使用容器的坐标系统 1 缺省坐标系统 容器缺省坐标系统的三个要素情况是 1 坐标原点为容器的左上角 且坐标为 0 0 2 坐标刻度以缇 twip 为单位 3 坐标轴方向为 x轴向右为正向 y轴向下为正向 VisualBasic编程及实例分析教程 44 2 自定义坐标系统 当ScaleMode 0时 即为用户自定义模式 可采用设置对象的相应属性 来创建所需的坐标系统 这些属性是 1 ScaleLeft 返回或设置对象左边界的水平坐标 2 ScaleTop 返回或设置对象上边界的垂直坐标 3 ScaleWidth 返回或设置对象内部的水平度量单位数 4 ScaleHeight 返回或设置对象内部的垂直度量单位数 颜色 窗体和图片框都有关于颜色的属性 如背景色 BackColor 属性定义了绘图区的背景颜色 前景色 ForeColor 属性决定了显示的文本或绘制的图形颜色 计算机一般采用RGB颜色模型 认为任何颜色都是由红 R 绿 G 蓝 B 三种颜色按不同比例混合的结果 因此设定一种颜色 只要指定其红 绿 蓝分量的大小即可 VB中颜色的表示就是基于这个概念 要得到一种颜色有下列五种方式 VisualBasic编程及实例分析教程 45 1 在属性窗口中 单击相应属性 利用调色板直接选择一种颜色 这种方式通常用来设置容器的背景色 2 使用RGB函数 VB的内部函数RGB可返回一个颜色值 此函数要求三个参数 取值都是0 255 分别表示所要颜色中红 R 绿 G 蓝 B 分量的大小 3 使用QBColor函数 语法是 QBColor i 其中参数i是一个介于0 15的整型数 用于指定颜色 如下表所示 QBColor函数的参数与返回颜色 VisualBasic编程及实例分析教程 46 4 直接输入一个颜色值其实 RGB函数返回的是一个长整型数 在VB中颜色就是由长整型数表示的 所以可以直接用长整型数来指定一个颜色 5 使用系统内部定义的颜色常量 VB为一些常用颜色定义了内部常量 颜色常量的特点是直观 易于记忆 如下表所示 内部颜色常量 VisualBasic编程及实例分析教程 47 8 2绘图属性和事件 CurrentX和CurrentY属性 CurrentX和CurrentY属性给出窗体或图片框对象在绘图时的当前坐标 这两个属性在设计阶段不能使用 如果要在特定位置上输出图形或文本 可以在程序中先设置这两个属性的值 然后使用相应的绘图方法 调用了绘图方法之后CurrentX和CurrentY两个属性的值也会自动地作出相应的变化 DrawWidth和DrawStyle属性 窗体和图片框对象拥有这两个属性 DrawWidth属性设置绘图方法生成图形的线条宽度 DrawStyle属性设置绘图方法生成图形的线条样式 VisualBasic编程及实例分析教程 48 FillColor和FillStyle属性 AutoRedraw属性 窗体 图片框和形状控件拥有这两个属性 FillColor属性设置由绘图方法生成的圆 矩形等封闭图形的内部填充颜色 FillStyle属性设置绘图方法产生的封闭图形的内部填充样式 该属性的默认值为1 透明 此时 FillColor属性的值被忽略 AutoRedraw属性为自动重绘属性 所谓重绘是指使用绘图方法在窗体或图片框上绘制的图形 部分或全部地被另外的窗体或对象覆盖 而一旦这些覆盖物被移走 被覆盖的图形如何重新显示 VisualBasic编程及实例分析教程 49 ClipControls属性 ClipControls属性决定Paint事件中的绘图方法是重绘整个对象还是只重绘刚刚露出的区域 当该属性为True 缺省值 时 Paint事件中的图形绘制方法重绘整个对象 当该属性为False时 Paint事件中的图形绘制方法只绘制刚刚露出的区域 Paint事件 窗体与图片框都支持Paint事件 当窗体或图片框被覆盖后又显示出来或被缩放时 VB向窗体或图片框发送Paint事件 允许程序进行重新绘制 写在Paint事件过程中的代码在每次窗体或图片框要重绘时会被调用 所以Paint事件过程中适合绘制永久显示的内容 VisualBasic编程及实例分析教程 50 8 3绘图方法 PSet方法 PSet方法可以在窗体或图片框的指定位置上使用指定颜色画一个点 点的大小由对象的DrawWidth属性指定 PSet的语法格式如下 说明 1 Step指定相对于当前绘图位置 CurrentX CurrentY 的坐标 可选 2 x y 设置所画点的水平和垂直坐标 若前面有Step 则所画点的实际位置 坐标 为 CurrentX x CurrentY y 3 参数 颜色 用来指定该点的颜色值 如果没有指定 颜色 参数 PSet将使用对象的前景色 VisualBasic编程及实例分析教程 51 Line方法 Line方法用来绘制直线或矩形 根据参数不同 该方法即可以画出直线 也可以画出空心矩形或实心矩形 Line方法的一般格式 说明 1 x1 y1 是直线或矩形的起点坐标 若省略 则从当前坐标位置 CurrentX CurrentY 开始 2 x2 y2 是直线或矩形的终点坐标 3 第一个Step指定它后面的一对坐标 x1 y1 相对于当前坐标 CurrentX CurrentY 的偏移量 第二个Step指定它后面的一对坐标相对于第一对坐标的偏移量 均为可选项 4 颜色 参数设置画线的颜色 如果没有指定 颜色 参数 Line将使用对象的前景色 VisualBasic编程及实例分析教程 52 5 B 为可选参数 如果没有参数 B 则绘制以给定两点为端点的直线 否则绘制以给定两点为对角的矩形 B 的含义是Box 无参数 B 时 不能使用参数 F 6 F 参数 画出一个实心的矩形 其填充颜色和图案由所在对象的FillColor和FillStyle决定 可选 Circle方法 VB提供的Circle方法可以绘制圆 椭圆 圆弧及扇形 该方法参数较多 选用不同的参数 可以分别画出不同的图形 1 用Circle方法绘制圆 说明 1 x y 为圆心坐标或偏移量 为单精度浮点参数 2 Step关键字 其后面的一对数字表示相对于当前坐标的偏移量 为可选项 VisualBasic编程及实例分析教程 53 3 半径 为单精度浮点参数 4 颜色 参数指定圆周的颜色 若省略 则使用当前对象的前景色 为可选的长整型参数 2 用Circle方法绘制圆弧及扇形 圆周的一部分就是圆弧 如果从圆心连接两条直线到圆弧的两端 就是一个扇形 用画圆的方法Circle来画圆弧及扇形非常容易 只要加上起始角和终止角即可 一般格式为 说明 1 起始角指弧的起点位置 单位为弧度 2 终止角指弧的终点位置 单位为弧度 VisualBasic编程及实例分析教程 54 3 Circle方法总是逆时针 正 方向绘图 在画扇形时 起始角和终止角前面带一负号 负号表示从圆心画一半径到起始弧或终止弧的位置 并且角度仍处理为正 3 用Circle方法绘制椭圆 在画圆的方法上加上一个参数就可以绘制出椭圆 一般格式为 说明 1 纵横比指椭圆的纵轴与横轴尺寸之比 默认值为1 0 为可选的单精度浮点参数 2 其他项与画圆方法中的相同 VisualBasic编程及实例分析教程 55 8 4应用实例 编写程序绘制产量随年份的变化曲线 绘图数据来源于文本文件 分析 工程应用中 常常需要绘制产量随时间的变化曲线 用来指导生产 生产数据可以来源于文本文件 通过使用前面学习的文件操作方法将数据读入到数组中 然后便可根据数组中的数据进行曲线绘制操作 绘图前 应定义一个绘图区域数据类型 里面保存绘图区域的左下角 右上角坐标 坐标单位由绘图对象的ScaleMode属性决定 刻度最值 刻度数量以及图形坐标变化系数 单位刻度表示的图形坐标大小 以下为具体应用 1 新建工程 新建一个VB 标准EXE 工程 使用 工程 菜单下的 添加模块 菜单命令向工程中加入程序所需的标准模块 并保存 2 窗体设计界面如下图图所示 界面由文本框 图片框 命令按钮 标签以及SSTab控件组成 VisualBasic编程及实例分析教程 56 VisualBasic编程及实例分析教程 57 3 有关属性的设置如下表所示 工程 窗体及控件属性值设置 VisualBasic编程及实例分析教程 58 4 本例使用的数据文件为一名为data dat的文本文件 即顺序文件 该文件可由用户自己手工创建并输入 如下图所示 第一列为年份序号 第二列为产量数据 5 代码编写参见教材第八章第四节 VisualBasic编程及实例分析教程 59 6 程序运行结果如下图所示 VisualBasic编程及实例分析教程 60 8 5小结 本章重点介绍了图形的具体绘制方法 在掌握坐标系统和颜色的使用规则之后 学习使用窗体和图片框控件提供的绘图属性 事件和方法 学会在界面中绘制点 线 圆及其它图形 最后给出一个很实用的曲线图绘制的应用实例 希望大家细心体会 VisualBasic编程及实例分析教程 61 8 6习题 一 选择题1 以下的属性和方法中 可重定义坐标系的是 A DrawStyle属性B DrawWidth属性C Scale方法D ScaleMode属性2 当使用Line方法画直线后 当前坐标在 A 0 0 B 直线起点C 直线终点D 容器的中心3 指令 Circle 1000 1000 500 8 6 3 将绘画 A 画圆B 椭圆C 圆弧D 扇形4 执行指令 Line 1200 1200 Step 1000 500 B 后 CurrentX A 2200B 1200C 1000D 17005 设计时添加到图片框或图像框的图片数据库保存在 A 窗体的Frm文件B 窗体的Frx文件C 图片的原始文件内D 编译后创建的Exe文件6 当窗体的AutoRedraw属性采用默认值时 若在窗体装入时使用绘画方法绘制图形 则应将程序放在 A Paint事件B Load事件C Initialize事件D Click事件 VisualBasic编程及实例分析教程 62 7 下列所使用的方法中 不能减少内存的开销的是 A 将窗体设置得尽量小B 使用ImageBox处理图形C 设置AutoRedraw FalseD 不设置DrawStyle8 Cls可清除窗体或图形框中的内容是 A Picture属性设置的背景图案B 在设计时放置的控件C 程序运行时产生的图形和文字D 以上全部都是 二 填空题1 容器的实际可用高度和宽度由和属性确定 2 设Picture1 ScaleLeft 200 Picture1 ScaleTop 250 Picture1 ScaleWidth 500 Picture1 ScaleHeight 400 则Picture1右下角坐标为 3 窗体Forml的左上角坐标为 200 250 窗体Forml的右下角坐标为 300 150 则X轴的正向向 Y轴的正向向 4 使用Line方法画矩形 必须在指令中使用关键字 三 简答题1 简述VB应用程序设计过程中图形载入的一般方法及其实现步骤 2 VB应用程序能够识别的几种常见的鼠标事件是什么 并说明在常用鼠标事件中Button参数的意义 VisualBasic编程及实例分析教程 63 第九章创建和使用自定义类 本章内容创建自定义类向类中添加属性 方法和事件创建自定义ActiveX控件 VisualBasic编程及实例分析教程 64 9 1创建自定义类9 2向类中添加属性和方法9 3向类中添加事件9 4创建自定义ActiveX控件9 5小结9 6习题 本章目录 VisualBasic编程及实例分析教程 65 9 1创建自定义类 类的创建非常简单 在 工程 菜单中选择 添加类模块 命令 打开 添加类模块 对话框 在该对话框中选择 类模块 然后单击 打开 按钮 即可在工程中添加一个空白的类模块 并同时打开该模块的代码窗口 见图9 1 类模块一般以 cls扩展名保存 刚添加的类模块几乎没有什么属性和方法 但有两个事件 Initialize和Terminate事件 其中Initialize事件当创建类的实例时被触发 用来执行类实例的初始化操作 Terminate事件则当类实例设置为Nothing时被触发 用来执行善后处理 VisualBasic编程及实例分析教程 66 9 2向类中添加属性和方法 向类添加属性 类中的数据分为两部分 可见部分和不可见部分 创建类模块后 可以有两种方法为类定义属性 即使用公有变量和使用属性过程 1 使用公有变量 添加类属性最简单的方法是向类模块添加公有变量 使用公有变量定义类的属性应在类模块的声明部分进行 其格式为 公有变量对应用程序是可见的 因此采用这种方法定义类的属性 当建立了类的对象后 可以在程序的任何地方访问变量的值 VisualBasic编程及实例分析教程 67 2 使用属性过程 如果只能通过声明公有变量来创建属性 那么就不能在更高层次上实现数据隐藏 为此 VB提供了属性过程 只能通过属性过程来获取属性值和对属性值进行修改 使用属性过程定义类的属性是最可靠的方法 因为属性过程具有封装功能 VB提供了三种属性过程 PropertyGet返回属性的值 PropertyLet设置属性的值 PropertySet设置对象属性的值 典型的属性由一对属性过程组成 PropertyGet用于检索属性的值 PropertyLet或PropertySet用于给属性赋值 向类添加方法 一般来说 属性是关于某个对象的数据 而方法则是该对象可能被要求去执行的动作 由类创建的对象同样可以具有方法 VisualBasic编程及实例分析教程 68 应用实例 要向类中添加方法 只需在类模块中声明公有的Sub或Function过程 使用PublicSub子过程创建的方法没有返回值 而采用PublicFunction函数过程创建的方法可以有返回值 也可以在类模块中创建私有过程 但是只能在类模块内部调用 在外部是不可见的 编写一个将华氏温度转换为摄氏温度的程序 转换公式为C 5 0 9 0 F 32 0 要求输出华氏温度和摄氏温度的对应值 要求 定义温度转换类TConvertClass来实现转换的功能 然后设计一个窗体使用该类进行温度的转换 1 新建工程 本例的工程由一个窗体和一个类模块组成 如下图所示 窗体是应用程序的界面 类模块用来定义温度转换类TConvertClass 2 窗体设计界面如下图所示 界面由框架 文本框 命令按钮以及标签控件构成 VisualBasic编程及实例分析教程 69 3 有关属性的设置如下表所示 工程 窗体及控件属性值设置 VisualBasic编程及实例分析教程 70 4 代码编写如下 在类模块TConvertClass bas的代码窗口编写如下程序代码 VisualBasic编程及实例分析教程 71 在窗体frmTConvert frm的代码窗口编写如下程序代码 VisualBasic编程及实例分析教程 72 5 程序运行后 在 华氏温度 文本框中输入温度值 单击 转换 命令按钮 则在 摄氏温度 文本框中显示转换的结果 如下图所示 VisualBasic编程及实例分析教程 73 9 3向类中添加事件 默认事件和自定义事件 通过属性和方法与对象进行的交流只是单向的 因为对象只能被动地改变属性值或调用方法 通过往类中添加事件 就可以使对象具有与外部进行双向交流的能力 1 默认事件 系统自身为创建类提供的事件为类的默认事件 这类事件有两个 即Initialize事件和Terminate事件 响应这两个事件的事件过程是在类模块内执行的 2 自定义事件 为了使得由类创建的对象具有与应用程序交互的功能 仅使用类的属性和调用其方法是不够的 默认事件也只能做些初始化和收尾工作 必要时还需编写自定义事件 VisualBasic编程及实例分析教程 74 这就是说 对象能够发送到外部过程的只能是事件过程 添加和处理事件的基本步骤如下 1 在定义类的类模块声明部分 用Event语句来声明事件 事件可以带有多个参数 事件没有返回值 而且总是公有的 2 在类模块中的适当地方 用RaiseEvent语句来引发事件 并提供所需要的参数 3 在将要处理事件的模块声明部分 使用WithEvent关键字 声明该类的对象变量 它必须是一个模块级的变量 4 在代码窗口左边的下拉菜单中 选择声明为WithEvent的变量 在代码窗口右边的下拉菜单中 选择希望处理的事件 使用所提供的参数 将代码添加到事件过程中 VisualBasic编程及实例分析教程 75 应用实例 设计一个自定义的定时器类 其功能类似于VB工具箱内的Timer标准控件 并在窗体中使用该类完成系统时间的显示任务 1 新建工程 本例的工程由一个窗体和一个类模块组成 如下图所示 窗体是应用程序的界面 类模块用来定义定时器类TimerClass 2 窗体设计界面如下图所示 界面由命令按钮和标签控件构成 VisualBasic编程及实例分析教程 76 3 有关属性的设置如下表所示 工程 窗体及控件属性值设置 VisualBasic编程及实例分析教程 77 4 代码编写见教材第九章第三节 5 程序运行后 单击 显示时间 按钮 开始显示系统时间 同时按钮标题改为 暂停显示 单击 暂停显示 按钮 则停止显示 如下图所示 与定时器控件相比 自定义的定时器对象资源占用较少 VisualBasic编程及实例分析教程 78 9 4创建自定义ActiveX控件 创建ActiveX控件的一般步骤 创建ActiveX控件的一般步骤如下 1 建立一个 ActiveX控件 工程 2 在一个类似Form的UserControl对象上设计控件界面 在UserControl对象上可以加入现有的各种控件 3 编写程序代码 4 为控件添加属性 事件和方法 5 建立属性页 属性页并非一个控件必须要有的 但建立属性页有助于控件的使用 6 测试控件 建立一个 标准EXE 测试工程来测试控件 VisualBasic编程及实例分析教程 79 应用实例 创建一个用来显示当前系统时间的自定义ActiveX控件 并对其进行测试 2 创建ActiveX控件 1 选择 文件 菜单中的 新建工程 命令 打开 新建工程 对话框 2 在对话框中选择 ActiveX控件 图标 选择生成一个ActiveX控件类型的新工程 3 单击 确定 按钮 4 通过属性窗口将工程名设置为myclock 设置好的工程资源管理器窗口 5 接下来 设计开发的是ActiveX控件的用户界面 双击工具箱中的Timer控件图标 将其添加到UserControl设计器上 再单击工具箱中的标签控件图标 然后在UserControl设计器中拖动鼠标 在UserControl设计器上添加一个标签控件 VisualBasic编程及实例分析教程 80 6 打开 代码窗口 添加以下程序代码 7 接下来就是为这个ActiveX控件添加属性 事件和方法的接口 8 在运行完接口向导以后 系统已为控件在原有的基础上又添加了相应的代码 现在的代码窗口内容如下 VisualBasic编程及实例分析教程 81 VisualBasic编程及实例分析教程 82 9 保存ActiveX控件工程 测试ActiveX控件 1 选择 文件 菜单下的 添加工程 命令 打开 添加工程 对话框 在 添加工程 对话框中选择 标准EXE 图标 2 单击 打开 按钮 则在现有工程中 添加了一个新的标准EXE工程 在工程资源管理器中将测试工程 工程1 设置为工程组的启动工程 3 关掉ActiveX控件的设计窗口 切换到刚添加的工程中 打开窗体Form1 这时 可激活工具箱中UserControl图标 双击该图标 将其添加到窗体中 将用户控件添加到窗体后 可以发现它实际上实现了时钟显示的功能 4 打开Form1的代码窗口 添加如下代码 VisualBasic编程及实例分析教程 83 5 运行程序 结果如下图所示 通过测试 可知设计的控件已满足了预期的目的 6 测试完成后 用户可以首先在工程资源管理器窗口中选中 myclock 工程 然后选择 文件 菜单下的 生成myclock ocx 命令 打开 生成工程 对话框 在选择了文件路径和文件名后 单击 确定 按钮 即可生成 ocx文件 VisualBasic编程及实例分析教程 84 9 5小结 本章主要介绍了VB如何创建和使用自定义类 首先介绍了使用类模块创建自定义类的过程以及如何向类中添加属性 方法和事件 然后介绍了如何创建自定义ActiveX控件 VisualBasic编程及实例分析教程 85 9 6习题 编程题1 编写一个程序 验证类的Initialize和Terminate事件的操作 2 创建一个类 用于计算两个字符串中子串在主串中的出现次数 并用信息框显示结果 3 编写一个ActiveX控件 将文本框与滚动条进行捆绑 文本框显示滚动条的当前值 当滚动条滚动时 文本框内容随之改变 当文本框内容改变时 滚动条也一样改变 该控件提供的对外接口变量 即属性 包括 滚动条最小值 最大值 当前值等等 VisualBasic编程及实例分析教程 86 第十章WindowsAPI编程 本章内容掌握WindowsAPI编程 VisualBasic编程及实例分析教程 87 10 1WindowsAPI编程基础10 2应用实例10 3小结10 4习题 本章目录 VisualBasic编程及实例分析教程 88 10 1WindowsAPI编程基础 API简介 API的英文全称为ApplicationProgrammingInterface 即应用程序编程接口 是一些用C语言编写由操作系统自身调用的函数 用来控制Windows的各个部件的外观和行为 API函数是由函数 结构和常量 即Sub或Function Type Constant 组成的 可以分为4个功能类别 1 窗口管理 User 提供建立和管理应用程序的重要函数 2 图形设备接口 GDI 提供用于管理系统支持的所有图形设备的函数 3 系统服务 Kernel 提供访问计算机和操作系统资源的函数 4 多媒体 提供播放声音 动画等的函数 VisualBasic编程及实例分析教程 89 API浏览器 由于API函数不是VB的内部函数 所以在使用它们之前必须显示地加以声明 下面具体介绍API浏览器的使用 1 添加 API浏览器 菜单命令 为方便程序员打开API浏览器 可以将 API浏览器 菜单命令添加到 外接程序 菜单中 步骤如下 1 启动VB 打开一个新的标准EXE工程 2 单击 外接程序 菜单下的 外接程序管理器 菜单命令 打开 外接程序管理器 对话框 3 在 可用外接程序 列表栏中选取 VB6APIViewer 项 并在 加载行为 框架中选取 在启动中加载 和 加载 卸载 两个复选框 4 单击 确定 按钮 则将 API浏览器 菜单命令添加到了 外接程序 菜单中 VisualBasic编程及实例分析教程 90 2 加载WIN32API文件 VB提供了一个名为WIN32API TXT的文件 其中包含了在VB在调用API函数时所需要的所有声明 常量以及类型 该文件可以加载到 API浏览器 中 步骤如下 1 单击 外接程序 菜单下的 API浏览器 命令 打开API浏览器 2 单击API浏览器的 文件 菜单下的 加载文本文件 命令 弹出 选择一个文本API文件 对话框 从中选择 WIN32API TXT 文本文件 单击 打开 命令按钮 关闭对话框 这时 便完成了加载WIN32API TXT文件的过程 3 API浏览器 功能介绍 API浏览器的界面由 菜单栏 API类型 组合框 可用项 列表框 选定项 列表框 声明范围 框架 和一个 键入您要查找的内容的开头几个字母 文本框 以及 添加 删除 清除 插入 和 复制 几个命令按钮组成 VisualBasic编程及实例分析教程 91 API函数声明 VB内部函数和Win32API函数间唯一的差别是 API函数需要先声明后使用 声明后 即可象使用VB内部函数一样使用API函数了 这里以SendMessageAPI函数为例 介绍有关API函数的声明 下面解释一下这个函数声明的各个部分 1 Public 表示所有模块的所有过程都可以调用这个API函数 声明时 要在Public和Private中选择一个 2 DeclareFunction 声明对动态链接库 DLL 中函数的引用 3 SendMessage 函数的名称 通常名称可以反映函数的功能 本函数用于向窗口发送消息 窗口接收到消息后 可以根据程序设计处理它们 VisualBasic编程及实例分析教程 92 4 Lib user32 表明这个函数是user32 dll动态链接库中的 5 Alias SendMessageA Alias表明为函数起个别名 SendMessageA就是这个函数的别名 也可以起别的名称 以避免与已有的函数或变量的名称发生冲突 6 ByVal 函数参数传递的类型 ByVal表示传递的是参数的值 如果使用ByRef或什么都不写 则传递的是参数的地址 7 hwndAsLong 参数 并且指明参数的数据类型为Long 其他参数也一样 最后参数的数据类型为Any 表示一种可变的类型 8 AsLong 最后的AsLong表示函数的返回值为Long型数据 在VisualBasic中使用WindowsAPI 在VB中 用户使用Name属性来标识每一个控件 而Windows通过句柄 Handle 识别每个窗体 控件 菜单或菜单项等对象 句柄就象人的身份证 不会出现重复 句柄都以h字母开头 且为Long型 而且要按值传递 ByVal VisualBasic编程及实例分析教程 93 当通过API来执行有关控件的某种操作时就必须使用该控件的句柄 为了获得控件的句柄 VB为每个拥有Windows句柄的控件都提供了hWnd属性来表示其句柄 在调用API函数时 有些函数参数需要使用控件的hDC句柄 有些控件 如图片框控件 VB已经为其提供了hDC属性 可以直接使用它作为hDC句柄 而有些控件 如文本框控件 VB只为其提供了hWnd属性 并未为其提供hDC属性 这时 可以通过调用GetDC 这个API函数得到控件的hDC值 VisualBasic编程及实例分析教程 94 10 2应用实例 设计一个程序 运行的窗体界面为一个椭圆形状 单击该窗体时可以使窗体形状在矩形窗体和椭圆窗体形状之间进行切换显示 1 分析 正常的VB窗体为矩形 为了生成椭圆窗体 必须使用API函数 2 新建一个标准EXE工程 工程中包含一个窗体 3 使用 API浏览器 向窗体的代码窗口中添加CreateEllipticRgn CreateRectRgn SetWindowRgn和DeleteObject四个API函数的声明 4 有关属性的设置如下表所示 工程及窗体属性值设置 VisualBasic编程及实例分析教程 95 5 在窗体的代码窗口中编写代码 见教材第十章第二节 6 运行程序 结果如椭圆形状图所示 单击窗体 窗体形状如矩形图所示 再次单击又回到椭圆形状图 VisualBasic编程及实例分析教程 96 10 3小结 本章主要介绍了WindowsAPI的概念 API浏览器的使用 API函数声明的组成以及VisualBasic语言中使用API的注意事项 最后给出一个简单的API应用实例 WindowsAPI是应用程序调用系统动态连接库的接口 它提供了强大的功能 可以弥补VB的不足 VisualBasic编程及实例分析教程 97 10 4习题 一 选择题1 在使用WindowsAPI的过程中 句柄是一个非常重要的概念 句柄的一个重要属性为Handle属性 其取值不可以为 A HBITMAPB HMETAFILEC HICOND HNAME2 Windows操作系统给用户提供了大量的API函数 这些API函数可以根据各自的功能划分为不同的类别 则API函数EnumFontFamilies 可以归到 A 窗口管理类B 图形设备接口类C 系统服务类D 多媒体类二 填空题1 VB可以完成几乎所有的Windows应用程序编写 但对于操作系统的访问 对于图形设备的访问等 还需要WindowsAPI函数来完成 所有的API函数是由 等组成的 2 在Windows操作系统中 系统中的动态链接库文件提供了大量的WindowsAPI函数供用户使用 所谓API是英文 的缩写 VisualBasic编程及实例分析教程 98 三 简答题1 简述在VB中 声明和使用API函数的一般方法和过程 2 如何添加 API文本浏览器 四 编程题1 使用API函数mciSendString弹出和关闭光驱

温馨提示

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

评论

0/150

提交评论