电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

VB60自学教程

  • 资源ID:638       资源大小:740.55KB        全文页数:92页
  • 资源格式: PDF        下载积分:2金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要2金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

VB60自学教程

第一章第一章isual Basic 6.0 述述 V概概1.1 什么是什么是Visual Basic? Visual Basic 是微软(Microsoft)公司推出的、专门用于开发基于 Windows应用程序的工具语言,在数据库、分布式处理、Internet 及多媒体等方面有着广泛的应用。它由在计算机技术发展历史上应用最为广泛的 Basic 发展而来,如今已是一种可视化的、面向对象的程序设计语言。 好,下面我们一起去看看。 1.1.1 概念术语:概念术语: 对象对象:是面向对象程序设计的核心,是对现实世界中对象的模型化,是代码和数据的组合,具有自己的状态和行为,如某个同学。 学好 VB 的诀窍之一是要以“对象”的眼光去看待整个程序设计。 属性属性:对象中的数据,用来表示对象的状态,决定对象的外观。 方法方法:对象中的代码,决定对象可以进行的动作。 类类: 用来创建对象的样板,包含所创建对象的状态描述和方法定义,对象是类的一个实例,如球和排球的关系。 事件事件:来自外部的刺激,能被对象所识别的动作,如鼠标单击。事件决定了对象之间联系的手段。 事件过程事件过程:对象对事件作出的反应。 事件驱动事件驱动:在程序中流动的是事件,只有在事件发生时,程序才会运行。 在 VB 程序设计中,基本的设计机制就是改变对象的属性,使用对象的方法和为对象事件编写事件过程。 窗体窗体:是创建应用程序界面的基础,相当于一块画布,应用程序界面会全部在此画出,是运行应用程序时,与用户交互操作的实际窗口。 控件控件:组成用户界面的基本构件,如标签、命令按钮等。每个控件按钮可以看作是一个类,单击按钮在窗体上画下,即为由相应的类创建的对象。 从以上几个概念,我们可以感觉到:用 VB 编程,即先用面向对象的方法去分析所要解决的问题-建模-画界面-编写代码-调试运行。 1.1.2 VB的版本的版本 VB 由 1991 年微软公司首次推出 1.0 版本,经历七、八年的时间,目前最新的版本是 VB6.0,我们主要介绍 VB6.0 中文版。 VB6.0 包括三个版本: 学习版(学习版(Learning):基础版本,包括所有的内部控件以及网格、选项卡和数据绑定控件。 专业版(专业版(Professional):针对计算机专业开发人员,是一整套功能完备的开发工具。该版本包括学习版的全部功能以及ActiveX 控件、Internet Information Server Application Designer、集成的 Visual Database Tools 和 Data Environment、Active Data Objects 和 Dynamic HTML Page Designer。 企业版(企业版(Enteprise): VB6.0 的最高版本,企业版使得专业编程人员能够开发功能强大的组内分布式应用程序。该版本包括专业版的全部功能以及 Back Office 工具,例如 SQL Server 、 Microsoft Transaction Server 、 Internet Information Server、Visual SourceSafe、SNA Server 等。 我们使用的是 VB6.0 的企业版(中文版) ,主要介绍 VB 程序设计的基本概念、开发环境、基本数据结构,使大家具有用 VB 解决基本应用问题的能力。 1.2 VB的安装与启动的安装与启动 1.2.1 VB6.0的运行环境的运行环境 一一、 硬件硬件: CPU:Pentium(R) 90MHz 或更高的微处理器,最低为 Intel80486/DX66。 显示器:VGA 640x480 或 Microsoft Windows 支持的更高分辨率的屏幕。 内存:Windows 95 平台,需 24MB RAM ,对于 Windows NT 平台,需 32MB。 硬盘空间: 学习版: 典型安装 48MB,完全安装 80MB。 专业版: 典型安装 48MB,完全安装 80MB。 企业版:典型安装 128MB,完全安装 147MB。 附加部件(如果需要的话) : MSDN (用于文档): 67MB。 Internet Explorer 4.x: 大约 66MB。 CD-ROM 二、支撑软件二、支撑软件: 1.Microsoft Windows NT 3.51 或更新的版本。 2. Microsoft Windows 98 或更新的版本,最低 Windows95。 3.Microsoft Internet Explorer 4.01 或更新的版本(4.01 版的 Service Pack1或对 DHTML 应用程序开发者的更高版本,以及对这些应用程序的最终用户的 4.x 版本)。 1.2.2 VB的安装的安装 一、 安装步骤:一、 安装步骤: 1 将 VB6.0 光盘放入光驱中 2 在安装画面菜单上单击安装 3 跟随安装向导进行安装 (具体见教材 P8) 二、 添加或删除二、 添加或删除 VB 组件:组件: 1 将 VB6.0 光盘放入光驱中 2 单击“开始”按钮-设置-控制面板-添加/删除程序 3 选定“VB6”选项,单击“添加/删除”按钮 4 选“添加/删除” 、 “重新安装”或“全部删除” 1.2.3 VB6.0的启动与退出的启动与退出 一、 启动:一、 启动: 1 “开始”按钮-“程序”-“Microsoft Visual Basic6.0 中文版” 图 1.1 进入 VB6.0 窗口 2选“新建”选项卡 新建:建立新的工程 现存:选择和打开现有的工程 最新:最近使用过的工程 3单击“标准 EXE”项,再单击“打开”按钮 图 1.2 VB6.0 应用程序集成开发环境 实践一下 二、 退出:二、 退出: 在菜单文件(F)项中选“退出”或单击“关闭”按钮 1.3 VB6.0的集成开发环境的集成开发环境 如果把 VB 的编程方法和思想比作精深的武功, 那么 VB6 的集成开发环境就是一把锐利无比的宝剑,只有熟练地将二者结合在一起,才能将VB 巨大的潜力发挥到极点,笑傲 Windows“江湖” 。 VB6.0 的集成环境由以下九部分组成: 主窗口、工具箱、窗体窗口、属性窗口、代码窗口、工程资源管理窗口、主窗口、工具箱、窗体窗口、属性窗口、代码窗口、工程资源管理窗口、 布局窗口、对象浏览窗口、立即本地和监视窗口布局窗口、对象浏览窗口、立即本地和监视窗口 1.3.1 主窗口:由标题栏、菜单栏、工具栏和工作桌面组成。主窗口:由标题栏、菜单栏、工具栏和工作桌面组成。 图 1.3 主窗口 1标题栏:包含控制菜单、工作模式、最大化、最小化和关闭按钮 工作模式:设计模式(Design) :可进行用户界面的设计和代码的编制 运行模式(Run) :正在运行应用程序 中断模式(Break) :程序被暂时中断,可进行代码的编辑 2菜单栏:包含 13 个下拉菜单(具体参见教材 P11) 3工具栏:常用菜单命令的快捷方式 1.3.2 工具箱(工具箱(Tool Box) 提供一组工具,用于设计时在窗体中放置控件。通常工具箱中有 20 个标准控件,还可添加,方法为:工程-部件。 图 1.4 工具箱窗口 1.3.3 窗体窗口窗体窗口 窗体设计器是应用程序界面的载体,一个 VB 的应用程序至少有一个窗体窗口。 图 1.5 窗体窗口 窗体的网格点可帮助用户对安装的控件准确定位,间距可通过: 工具-选项-通用-窗体网格来设置。 VB 一般有两种窗体:SDI(单文档界面)其所有窗口可在屏幕上任何地方自由移动。 如:记事本。 MDI(多文档界面)所有窗口包含在一个大小可调的父窗口。 如:Word 中可打开多个文档 1.3.4 属性窗口:属性窗口:设置对象的属性 1 对象列表框 2 属性排列方式 3 属性列表框 4 属性解释栏 图 1.6 属性窗口 1.3.5 代码窗口:代码窗口:专门用来进行程序设计的窗口 1对象列表框 2过程列表框 3代码框 图 1.7 代码窗口 1.3.6 工程资源管理器窗口:工程资源管理器窗口: 工程是指用于创建一个应用程序的文件的集合,*.vbp。 工程中包含三类文件: 窗体文件窗体文件(. FRM):该文件储存窗体上使用的所有控件对象 、对象的属性、 对象相应的事件过程及程序代码。一个应用程序至少包含一个窗体文件。 标准模块文件标准模块文件(. BAS):所有模块级变量和用户自定义的通用过程都可产生这样的文件。一个通用过程是指可以被应用程序各处调用的过程。 类模块文件类模块文件(. CLS):可以用类模块来建立用户自己的对象。类模块包含用户对象的属性及方法,但不包含事件代码。 窗体中有三个按钮: “查看代码”“查看代码” 按钮: 切换到代码窗口, 显示和编辑代码。 “查看对象”“查看对象”按钮:切换到模块的对象窗口。 “切换文件夹”“切换文件夹”按钮:切换工程中的文件是否按类型显示,若按类型显示,则以树形的结构、文件夹的方式显示。 图 1.8 工程资源管理器窗口 1.3.7 窗体布局窗口:窗体布局窗口:用于指定程序运行时的初始位置 图 1.9 布局窗口 1.3.8 对象浏览器窗口:对象浏览器窗口: 可查看在工程中定义的模块或过程,也可以查看对象库、类型库、类、方法、书信、事件及可在过程中使用的常数。 图 1.10 对象浏览器窗口 1.3.9 立即、本地和监视窗口:立即、本地和监视窗口: 为调试应用程序提供的,只在运行应用程序时才有效 好了,利剑的功能和使用方法已作介绍,下面让我们来用一下吧。 1.4 创建第一个应用程序创建第一个应用程序 1.4.1 建立一个VB应用程序的一般步骤: 建立一个VB应用程序的一般步骤: 1. 设计窗体,建立用户界面的对象; 2. 设置各对象的属性; 3. 为必要的对象进行事件过程的编程; 4. 程序运行与调试; 5. 保存文件和编译。 1.4.2 实例 实例 【例 1.1】:设计一个计算两数乘法设计一个计算两数乘法C=A*B的程序,要求用两个文本框分别输入乘的程序,要求用两个文本框分别输入乘数和被乘数,一个文本框输出计算结果,两个按钮分别是计算按钮和清除按钮。数和被乘数,一个文本框输出计算结果,两个按钮分别是计算按钮和清除按钮。 1分析问题: (1)给出被乘数 A 和乘数 B 的值 (2)求积:C=A*B (3)显示积 C 的结果 根据题意,六个对象是必要的:被乘数 A、乘数 B 得到值,单击计算按钮算出积,在积 C 中显示结果,清除按钮可清除 A、B、C 中的值,以便再计算其它乘法,还有容器-窗体。 2设计界面: 图 1.11 设计用户界面 3属性的设置: 表 1.1 对象属性设置 默 认 控件名 设置的控件名 (名称) 标 题 (Caption)对齐方式 (Alignment)文 本 (Text)字体字号 (Font)磅值 Form1 Text1 Text2 Text3 Label1 Label2 Label3 Command1 Command2 Form1 txtMultiplicand txtMultiplier txtProduct lblMultiplicand lblMultiplier lblProduct cmdCalculate cmdClear 两数相乘 无定义 无定义 无定义 被乘数 a 乘数 b a*b 的值 计算 清除 无定义 0-Left 0-Left 0-Left 2-Center 2-Center 2-Center 无定义 无定义 无定义 空白 空白 空白 无定义 无定义 无定义 无定义 无定义 宋体规则小五 宋体规则小五 宋体规则小五 宋体规则小五 宋体粗体五号 宋体粗体五号 宋体粗体五号 宋体粗体小五 宋体粗体小五 注意:属性表中的“无定义”表示该对象无此属性, “空白”表示无内容。 4编写事件过程 单击计算按钮、单击清除按钮 5运行程序与调试 在 VB 中程序可以有两种运行模式:解释运行模式和编译运行模式。 解释运行模式解释运行模式是由系统读取事件激发的那段事件过程代码,将其转换为机器代码,然后执行该机器代码。由于转换后的机器代码不保存,如需再运行该程序,必须再解释一次。 编译运行模式编译运行模式是由系统读取程序中全部代码, 然后再将其全部转换为机器代码,并保存在 . EXE 的可执行文件中,供以后多次使用,显然编译程序的运行速度比解释运行模式速度快的多。 VB 中将错误分为三类:编译错误(语法错误) 、运行错误和逻辑错误。 6保存文件与编译 VB 应用程序的保存分为两类: 一类是对工程文件的保存;*.vbp 另一类是对工程中的各类具体文件的保存,(*.frm,*.bas,*.cls) 两者缺一不可。 编译:生成*.EXE 文件,可脱离 VB 环境直接在 Windows 平台上运行该程序。 有感觉了吗?别急,俗话说:一口吃不成胖子。慢慢消化吧! 本章重点:本章重点: 1面向对象的基本概念:对象、类、对象的属性、方法、事件、事件过程、事件驱动、窗体、控件 2 VB 的集成环境 3 VB 应用程序的开发步骤 第二章第二章 常用控件常用控件(一一) 在第一章中,我们已对用 VB 编写应用程序作一大致的了解:先分析问题,再设计用户界面,最后才去编写必要的事件过程。好,现在让我们一起先来学习窗体、几个常用的控件及简单的界面设计规则。 2.1 窗体 窗体是一种具有自身特定属性、方法和事件的对象,VB 程序的基本构造模块,是运行应用程序时用户交互操作的实际窗口,也是其他对象的载体,它具有Windows 窗体的基本特性,包括标题栏、控制菜单、窗体边框和窗口区。 图 2.1 应用程序窗体的外观 打开VB 一、 窗体的属性一、 窗体的属性 1 属性的设置属性的设置 方法一:属性窗口 方法二:在程序中用程序代码设置:窗体名称.属性名=属性值。 如:Form1.caption=“计算器” 2 常用属性常用属性 Caption、Height、Left、Name、Top、Visible、Width、AutoRedraw、backcolor、 CurrentX、 CurrentY、 Enabled、 FillColor、 FontStyle、 FontBold、 FontItalic、 FontName、FontSize、 FontStrikethru、 FontUnderline、 ForeColor、 MaxButton、 MinButton、 Picture、ScaleHeight、ScaleLeft、ScaleMode、ScaleWidth、ScaleTop、 WindowState 等 (1) 名称标识: ) 名称标识: Name 属性:用来标识窗体的名称, 是字符串类型, 它是一个以字母开头由字母、数字和下划线组成的长度不超过 40 个字符的字符串,最好设置一个有实际意义的名称,如:frmCalculator。该属性值不允许与其他对象重名,也不允许使用Visual Basic 的保留关键字和对象名,系统默认为在 Form 后加上 1,2 等。 (2) 外观:外观: Caption(标题)属性:用于设置窗体标题内容,其值是一个字符串。 BorderStyle(边界)属性:用于控制窗体边界的类型,表现窗体的显示风格,它有六个可选值(见表 2.1)。 表 2.1 边界属性值及其类型 属性值 边 界 类 型 0 None(无边界框架) 1 Fixed Single(窗口大小固定不变的单线框架) 2 Sizable(窗口大小可变的标准双线框架) 3 Fixed Dialog(窗口大小固定的对话框窗体) 4 Fixed Tool Window(窗口大小固定的工具箱窗体) 5 Sizable Tool Window(窗口大小可变的工具箱窗体) ControlBox(控制菜单)属性:用来设置在应用程序窗口左上角是否出现控制菜单,它有两个值:True 或 False,缺省值为 True,表示窗体有控制菜单。 MaxButton(最大化按钮)和 MinButton(最小化按钮)属性:指定在运行时在窗体的标题栏右边是否出现最大化和最小化按钮,只有当 ControlBox 属性值为True 时,这两个属性才起作用。 Icon(图标)属性:用于设置窗体运行时应用程序窗口标题栏最左边的图标形状,缺省的应用程序图标是 。在设计时可以通过打开 Icon 属性对话框,选择或输入一个图标文件名(扩展名为 ICO 的文件),就可以更换应用程序的图标。 BackColor(背景颜色)属性:设置窗体背景的颜色,系统默认的背景是灰色。 Picture(图片)属性:允许用户以一幅图片作为窗体背景。窗体背景的图像文件格式可以有多种,Visual Basic 支持以下几种图像文件格式:位图文件(*.bmp)、图形交换格式文件(*.gif)、JPEG 压缩文件(*.jpg)、图元文件(*.wmf)、图标文件(*.ico)。 (3)尺寸位置和输出特性 (3)尺寸位置和输出特性 Height(高度)、Width(宽度)、Left(左边距)和 Top(顶边距):用于设置窗体的大小以及窗体在屏幕中的实际位置。Height 和 Width 属性分别用于指定窗体的高度和宽度,即确定窗体的大小;Left 和 Top 属性用来确定窗体左边界或上边界分别离开屏幕左边缘或上边缘的距离,即确定窗体在屏幕上出现的位置。 ScaleMode:设置窗体的度量单位,缺省度量单位是缇(Twip),它是一个与屏幕无关的单位,用来保证屏幕应用程序对屏幕元素的定位和比例在所有的显示系统上的一致性。 1 缇等价于 1/20 个打印机的磅。 1 英寸大约有 1440 缇, 1 厘米约 567 缇。 FontName(字体)属性:用于指定在窗体上输出字体的字库名称,缺省是宋体。通过程序代码可给它赋值,如:form1.fontname=”黑体”。 FontSize(字号)属性:用于指定字体的大小,字体大小是以磅为单位。可在程序运行时通过程序代码给字号属性赋值实现。其格式为 FontSize=N 其中 N 是一个整型数,磅值。 FontBold( 黑 体 ) 、 FontItalic( 斜 体 ) 、 FontStrikethru( 笔 划 体 ) 、FontUnderline(下划线体)属性:用于指定输出到窗体上的数据格式,只有 True 或False 两种值,分别指定输出的字体风格是否为黑体、斜体、笔划体和下划线体。 CurrentX(X 坐标) 、CurrentY(Y 坐标)属性:运行时属性,用于控制输出到窗体的数据在窗体中的位置,分别代表当前输出点的 X 坐标和 Y 坐标。窗体坐标缺省是从窗体左上角作为度量的起点,在窗体的左边缘,CurrentX 的值为 0,在窗体的顶端,CurrentY 的值为 0。用户也可根据需要,通过设置窗体的 ScaleLeft、ScaleTop、ScaleHeight 和 ScaleWidth 属性值(以后介绍)来建立窗体自定义坐标系统。 FontTransparent(覆盖)属性:控制在向窗体输出数据时,若输出位置已有数据,是否将输出的数据覆盖背景文本或图形。值为 True 时表示覆盖原有数据,原有数据和新数据重叠显示;值为 False 时,擦除原有数据,只在指定输出位置显示新数据。 (4)其他特性 AutoRedraw 属性:控制窗体图形的重建。当其他窗口已覆盖某窗体,返回该窗体时,是否重画窗体,值为 True,则自动重画,缺省值为 False,则不重画。 FillColor 属性:对窗体中的各种形状(圆/矩形等)填充颜色。 FillStyle 属性:确定以何种风格填充窗体上形状(圆/矩形等) 。 如:Line (800, 800)-(2500, 2500), QBColor(13), B Visible(可见性)属性:用来控制窗体是否在屏幕上显示,缺省值为 True 表示可见。不可见状态并不意味着该窗体在应用程序中不存在,它只表示目前该窗体在屏幕上不显示,它仍随同应用程序一起加载到内存中,在适当的时候,应用程序仍然可以通过程序代码对该窗体对象进行控制和操作。 Enabled(可用性)属性:用于确定窗体能否响应用户事件。值为 True 表示窗体能响应用户事件,否则,窗体不接受用户事件,即当前窗体处于不可用状态,处于不可用状态下的窗体,其上的所有控件也是不可用的。 WindowState 属性: 确定窗体窗口在运行时的可视状态, 0: 缺省值, 正常窗口,1:窗口最小化,2:窗口最大化。 二、窗体的方法(二、窗体的方法(窗体作为对象所具有的行为窗体作为对象所具有的行为) ) Cls、Show、Print、Hide、Move 等 1 方法的调用方式: 对象名 . .方法名 参数 2 常用的方法: (1)Print(打印)方法:以当前所设置的前景色和字体在窗体上输出文本字符串。 调用格式:窗体名.Print Spc(n)|Tab(n) 表达式列表 其中 窗体名:是由窗体的 Name 属性所定义的窗体名称标识 Spc(n):在输出表达式前插入 n 个空格 Tab(n):将指定的表达式输出到窗体第 n 个打印列表区 表达式列表:由一个或多个数值或字符类型的表达式组成,表达式之间 必须用空格、分号或逗号隔开,空格视为和分号等价,若无表达式列表,则在当前位置输出一个空行。 打印区:VB 把屏幕行每隔 14 列为一个打印区,分号表示光标定位在上一个显示字符之后(紧凑) ;逗号表示光标定位在下一个打印区的开始位置。 通常,Print 方法打印一个表达式时,表达式的开始打印位置是由窗体当前的CurrentX 和 CurrentY 属性决定的。当打印完一个表达式列表,Print 方法会自动在表达式列表后加上一个回车,于是下一个 Print 方法会在下一行输出。 【例 2.1】 在应用程序的窗体上输出一行文字“我是一名合格的大学生” 。在应用程序的窗体上输出一行文字“我是一名合格的大学生” 。 (教材 P131 例 5.1) (2)Cls(清除)方法:用来清除运行时在窗体上显示的文本或图形,使用 Cls 方法后,窗体的 CurrentX 和 CurrentY 被设置为 0。 调用格式: 窗体名.Cls (3)Move(移动)方法:用来在在屏幕上移动窗体 调用格式:窗体名.Move left,top,width,height 其中,left、top、width、height 分别用来表示窗体相对于屏幕左边缘的水平坐标、相对于屏幕顶部的垂直坐标、窗体的新宽度和新高度。 Move 方法至少需要一个 left 参数值,如果要指定其余参数值,则必须按顺序依次给定前面的参数值。 【例 2.2】 使用 使用Move方法移动一个窗体,窗体移动后定位在屏幕的左上角,同时,窗体的尺寸也缩小一倍。方法移动一个窗体,窗体移动后定位在屏幕的左上角,同时,窗体的尺寸也缩小一倍。(教材P132 例 5.2) (4)Show(显示)方法:用于在屏幕上显示一个窗体,如果要显示的窗体事先未装入,则会自动装入该窗体再显示(使窗体的 Visible 为 True) 。 调用格式:调用格式: 窗体名窗体名.Show Modal|Modaless 其中:Modal 为缺省,用户只能在本窗体进行选择、输入,不能切换到其他窗口。如:消息框 Modaless 可以允许用户随意在各个窗体之间切换。如:集成环境下的“代码”窗口切换到任何其他窗口。 (5)Hide(隐藏)方法:用于使指定的窗体不显示(使窗体的 Visible 属性设置为 False) 调用格式:窗体名.Hide 【例 2.3】 实现将指定的窗体在屏幕上进行显示或隐藏的切换。 (教材例 5.3) 三、窗体的事件三、窗体的事件 Click、Load、Dblclick、KeyDown、KeyPress、KeyUp、MouseDown、MouseMove、MouseUp、Unload 等 在 Visual Basic 应用程序中,窗体的事件(Event)就是指由 Visual Basic 预先定义好的,能够被窗体对象所识别的动作。事件可以由用户激发,也可以由系统激发。窗体是控件的载体,是程序运行的主要场所,一些程序运行所必须的初始化操作和退出前的善后工作,往往要在窗体创建及退出时被激活的事件过程中进行。 下面我们边了解窗体的生命历程: 创建状态、加载状态、可见状态和卸载状态,边学习各阶段会发生的事件。 1 窗体的创建窗体的创建 Initialize 事件:窗体创建状态开始的标志,窗体创建时最先执行的代码,只有窗体的代码部分在内存中,而窗体的可视部分还没调入。 2 加载窗体加载窗体 Load 事件:标志着加载状态的开始,窗体上的所有控件都被创建和加载,加载状态是窗体的一个根状态。在任何时候,只要隐藏了窗体,就由可见状态回到加载状态,Load 事件在窗体的存活期中只运行一次。 3可见状态(活动状态)可见状态(活动状态) 使用窗体的 Show 方法,可以使窗体进入可见状态,使用 Hide 方法,窗体返回加载状态。 Active 事件:当一个窗体变成活动窗体时所产生的事件。 Deactivate 事件:当另一个窗体或应用程序被激活时所产生的事件。 Click 事件:单击事件。事件:单击事件。 Dblclick 事件:双击事件。 Keydown 事件:键盘按下事件。 接受几乎所有的 ASCII 字符 Keyup 事件:键盘释放事件。 Keypress 事件:按键事件,从键盘按下到放开。只接受可打印的 ASCII 字符和少数组合键。 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) Private Sub Form_KeyPress(KeyAscii As Integer) 其中: KeyCodeKeyCode 是键的编码,它是一个十进制整型数,键盘上的所有按键都有唯一确定的键的编码,它把输入的键解释为物理键,即只与键在键盘中的位置有关,通过第二个参数 Shift 来解释按键的状态。 ShiftShift 也是一个十进制整型数,它解释按键时组合键(Shift、Alt 和 Ctrl 键)的状态。 KeyAsciiKeyAscii,它表示所按键对应的 ASCII 码值。对于在键盘上相同位置的键,它们的ASCII 值可能不同,如小写字符“a”的 ASCII 码为 97,而大写字符“A”的 ASCII 码为 65。 【例 2.4】建立一个应用程序,实现将键盘输入的字符输出到当前应用程序的窗体上,当键入回车键时,清除窗体上输出的文本。建立一个应用程序,实现将键盘输入的字符输出到当前应用程序的窗体上,当键入回车键时,清除窗体上输出的文本。 (教材P136 例 5.4) Gotfocus 事件:获得焦点时发生的事件。 (焦点的概念在命令按钮中介绍) Lostfocus 事件:失去焦点时发生的事件。 MouseMove 事件:当在一个活动窗体上移动鼠标时,会触发的事件。 【例 2.5】显示鼠标指针当前在窗体上的坐标位置。显示鼠标指针当前在窗体上的坐标位置。(教材P137 例 5.5) Resize 事件:当窗体首次出现在屏幕上或窗体尺寸改变时,会触发的事件。 窗体的卸载:窗体所占的内存和资源完全收回。 窗体的卸载:窗体所占的内存和资源完全收回。 Unload 事件:窗体卸载前最后发生的事件。 窗体学习完了,你会用它吗?下面我们继续学习几个常用控件。 2.2 控件的使用控件的使用 控件是构成用户界面的基本构件,在中按其来源可分三大类: 内部控件内部控件:存在于的. .EXE 文件中,总在工具箱中。 Active XActive X 控件:扩展名为OCX 的独立文件,仅在专业版和企业版中提供的控件以及第三方开发商所提供的 Active X 控件。 可插入的对象可插入的对象:诸如 Microsoft Excel 工作表、Microsoft Project 日历等可以添加到工具箱中的对象。 我们仅介绍内部控件及 Active X 控件中的通用对话框。 添加和删除控件 添加和删除控件 添加控件添加控件 方法一:用鼠标左钮单击工具箱中所需控件的图标(选中) ,将鼠标指针移向窗体窗口上,指针变为“十”字,当指针位于要求位置上时,按下左钮并拖动鼠标,由鼠标移动而确定区域,显示为一个变灰的矩形区域, 若满意则放开鼠标按钮, 控件会出现在窗体的该位置上。 方法二: 双击工具箱中控件图标, 则该控件立刻会以缺省的大小出现在窗体的正中间。 删除控件 删除控件 方法一:选中控件,在 EDIT 菜单中选择 Delete 项 方法二:选中控件,按 Del 键 方法三:选中控件,按鼠标右键,弹出菜单,选择 Delete 项。 控件被删除后,为控件编写的事件过程还存在。 调整控件位置和大小 调整控件位置和大小 方法一:用鼠标手动改变位置及大小操作同在 Word 中处理图片。 方法二:在属性窗口中,改变 Left、Top、Height 和idth 属性 控件的复制和粘贴 控件的复制和粘贴 拷贝、粘贴和剪切时,与之相关的属性值被复制,而事件过程并不一同操作,要使该控件具有相同的事件过程必须另外拷贝每个事件过程。 控件数组是指一组具有相同名称和类型的控件, 它们的事件过程完全相同, 但属性可以单独设置。Index 属性:用于指明控件数组的下标。 成组处理控件 成组处理控件 成组控件成组控件 方法一:用鼠标拉一个矩形虚框,将需成组控件框住。 方法二:先选中第一个控件,按下 CTRL 键,选择其余控件 处理处理: ()被成组的控件可整体移动 ()可同时对成组控件中共同的属性赋值 ()排列整齐:用属性窗口中的 Height、Width、Left 和 Top 属性或用格式菜单中对齐、统一尺寸、按网格调整大小、水平间距、垂直间距等。 好,下面让我们开始学习常用控件,请注意它们的外观(属性) 、行为(方法)和事件。 2.3命令按钮命令按钮 命令按钮是使用最多的控件对象之一。常常用它来接受用户的操作信息,激发某些事件,实现一个命令的启动、中断和结束等操作。 1常用属性常用属性 Caption、Default、Enabled、Height、Name、Left、Top、Visible、Width、Cancel、FontBold、 FontItalic、 FontName、 FontSize、 FontStrikethru、 FontUnderline、 ForeColor、 Index、TabIndex 、TabStop、Value 等 Caption 属性 用于设置命令按钮上显示的文本。Caption 属性最多包含 255 个字符。若标题超过了命令按钮的宽度,文本将会折到下一行。如果内容超过 255 个字符,则标题超出部分被截去。 创建命令按钮的访问键快捷方式,其方法是在作为快捷访问键的字母前添加一个连字符(&)。例如标题为“Print”的命令按钮创建快捷访问键“Alt+P” ,则该命令按钮的Caption 属性应设为“&Print” 。运行时,字母 P 将带下划线,按 Alt+P 键就可选定命令按钮。 TabIndex 属性和 TabStop 属性 焦点(Focus) :是接受用户鼠标或键盘输入的能力,当对象具有焦点时,可接受用户的输入。 在 Windows 系统中,任一时刻可运行几个应用程序,但只有具有焦点的应用程序才有活动标题栏,才能接受用户输入。在有几个控件的窗体中,只有具有焦点的控件才可以接受用户的输入。并不是所有的控件都可以接受焦点,如 Frame、Label 等,而且只有不包含任何可接受焦点的控件的窗体,才能接受焦点。改变对象的焦点可以通过诸如制表(Tab)键切换、单击对象之类的用户动作以及在代码中使用 SetFocus 方法来实现。 TabIndex 属性:决定 Tab 键焦点移动的先后顺序,从 0 开始。 TabStop 属性:指出用户是否可以使用 Tab 键来选定对象,值为 True,则可以;值为 False, 则仍保持它在实际 Tab 键顺序中的位置, 只不过在按 Tab 键时这个控件被跳过。 Default 和 Cancel 属性 指定一个缺省命令按钮,应将其 Default 属性设置为True,则不管窗体上的哪一个控件有焦点,只要用户按 Enter 键,就相当于单击此缺省按钮。 Cancel 属性可以指定缺省的取消按钮,在把命令按钮的 Cancel 属性设置为 True 后,不管窗体当前哪个控件有焦点,按 Esc 键,就相当于单击此缺省按钮。 Value 属性 在程序代码中触发命令按钮,使之在程序运行时自动按下,将该按钮的 Value 属性设置为 True,则触发命令按钮的 Click 事件,执行命令按钮的 Click 事件过程。 2常用事件常用事件 Click、GotFocus、LostFocus、KeyDown、KeyPress、KeyUp、MouseDown、MouseMove、MouseUp 等 MouseDown 事件 按下任意鼠标按键时发生 MouseUp 事件 释放任意鼠标按键时发生 3常用方法 3常用方法 Drag、Refresh、SetFocus 等 Drag 方法 用来启动、终止或取消拖动控制。 调用格式:对象名称.Drag 参数 其中:参数用来指定拖动所采取的动作。当其值为 0 时表示取消拖动操作,为 1时表示开始执行拖动操作,为 2 时则表示终止拖动操作。Drag 方法只有当DragMode 属性设置为 0 时,才是有效的。 Refresh 方法 强制性地重画窗体、控件或对象。 调用格式:对象名称.Refresh SetFocus 方法 设置对象成为焦点。 调用格式:对象名称.SetFocus 4实例 【例 2.6】 在一个窗体 在一个窗体Form1 上创建两个命令按钮,第一个命令按钮的名称为“上创建两个命令按钮,第一个命令按钮的名称为“CmdSource” ,其” ,其Caption属性为“源按钮” ,并在属性窗口中设置其属性为“源按钮” ,并在属性窗口中设置其DragIcon属性为磁盘形状属性为磁盘形状的图标文件“的图标文件“disk01.ico” ,该属性用于设置当拖动命令按钮时鼠标的形状。另一个命令按钮的名称为“” ,该属性用于设置当拖动命令按钮时鼠标的形状。另一个命令按钮的名称为“CmdTarget” ,其” ,其Caption属性为“目标按钮” 。属性为“目标按钮” 。 (教材P149 例 5.8) 2.4 输入类:文本框 列表框 组合框 滚输入类:文本框 列表框 组合框 滚、动条动条 一、 文本框(一、 文本框( TextBox) 通常用于显示用户输入的信息,作为接受用户输入数据的接口。 1常用属性常用属性 Height、Left、Text、Name、Top、Visible、Width、Alignment、Enabled、FontBold、FontItalic、 FontName、 FontSize、 FontStrikethru、 FontUnderline、 ForeColor、 MaxLength、Multiline、PasswordChar、ScrollBars 等 Text 属性 文本框控件的默认属性,其值就是文本框控件显示的内容。通常,Text 属性所包含字符串中字符的个数不超过 2048 个字符。 Alignment 属性 设置文本的对齐特性。0:左对齐,1:右对齐,2:居中。 MultiLine 属性 可使文本框控件提供多行输入的功能。缺省时,MultiLine 属性为 False,表示只允许单行输入;当为 True 时,表示允许多行输入。 ScrollBars 属性 当文本框的 MultiLine 属性为 True 时, 文本框的尺寸无法完全显示文本内容的情况,ScrollBars 属性指定是否在文本框中添加水平和垂直滚动条。其值为 0,表示无滚动条;其值为 1,表示只使用水平滚动条;其值为 2,表示只使用垂直滚动条;其值为 3,表示在文本框中同时添加水平和垂直滚动条。 MaxLength 属性 用于设置在文本框所允许输入的最大字符数,缺省值为 0,表示无字符限制,若给该属性赋一个具体的值,该数值就作为文本的长度限制;当输入的字符数超过设定值时,文本框将不接受超出部分的字符,并发出警告声。 PasswordChar 属性 将文本的显示内容全部替换为该属性所设置的字符,它常用于设置密码。如PasswordChar 设定为“*” ,则无论用户在文本框中输入什么字符,文本框只显示替代的字符“*” 。要恢复文本在文本框中的正常显示,只须将该属性设置为空串。 Locked 属性 设置文本框的内容是否可以编辑。如果 Locked 属性设为 True,则文本框中的文本成为只读文本,不能进行输入和编辑操作。 SelStart、SelLength 和 SelText 属性 文本框中对文本的编辑属性。 SelStart 属性:确定在文本框中所选择文本的开始位置,若没有选择文本,则用于返回或设置文本的插入点位置,如果 SelStart 的值大于文本的长度,则SelStart 取当前文本的长度; SelLength 属性:用于设置或返回文本框中选定的文本字符串长度; SelText 属性:设置或返回当前选定文本中的文本字符串。 2常用事件常用事件 Change、Click、Dblclick、GotFocus、KeyDown、KeyPress、KeyUp、MouseDown、MouseMove、MouseUp 等 Change 事件 当用户在文本框中输入新的信息或在程序运行时将文本框的Text属性设置为新值时, 触发该事件。 对于该事件, 用户每向文本框输入一个字符就引发该事件一次。 因此,Change 事件的事件过程常用于对输入字符类型的实时检测。 3常见方法常见方法 Drag、Refresh、SetFocus 等 4. 实例实例 【例 2.7】设计一个口令验证的应用程序,假设应用程序的口令是“2000” ,若口令输入正确,则显示“口令输入正确”信息,并关闭应用程序;否则,显示“口令输入错误,请重新输入”信息,清除原输入的口令。设计一个口令验证的应用程序,假设应用程序的口令是“2000” ,若口令输入正确,则显示“口令输入正确”信息,并关闭应用程序;否则,显示“口令输入错误,请重新输入”信息,清除原输入的口令。(教材P154 例 5.10 ) 二、列表框二、列表框(ListBox)和组合框和组合框(ComboBox)控件控件 列表框 (ListBox)和组合框(ComboBox)都是列表类控件,向用户提供可选择项目的列表。它们有许多相似的功能、属性、方法和事件。 列表框 (ListBox)控件提供一个项目列表,用户可以从中选择一个或多个项目。在应用程序中,可以显示多列列表项目,也可以显示单列列表项目。如果列表中的项目超过列表框可显示的数目时,控件上将自动出现滚动条,供用户浏览项目,以便选择。 组合框(ComboBox)将文本框和列表框的功能结合在一起, 用户既可以在组合框中像文本框一样直接输入文本来选定项目,也可以直接从列表中选定项目。组合框控件不支持多列显示。 1常用属性常用属性 Height、Index、Left、List、ListCount、ListIndex、Name、Style(组合框)、Text、Top、Width、 Enabled、 Fontbold、 FontItalic、 FontName、 FontSize、 Sorted、 ForeColor、 MultiSelect(列表框)、NewIndex、Selected(列表框)、Visible 等。 Columns 属性 用于指定列表框中列的数目(栏数)。 列表框中的项目可以单列垂直显示, 也可以水平单列或水平多列列表显示,其取值如表 2.2 所示。 表 2.2 Columns 属性值及其含义 值 描 述 0 垂直单列列表 1 水平单列列表 大于 1 水平多列列表 Columns 属性不适用于组合框,因为组合框不支持项目的多列显示。 Text 属性 用于直接返回当前选中的项目文本。 该属性是一个只读属性, 不能在设计时通过属性窗口设置,也不允许在程序运行时通过代码设置,它只用于获取当前选定的项目值。 List 属性 用来访问列表中的所有列表项,它是以字符串数组的方式存在的。在列表中,每一项都是 List 属性的一个元素。通过该属性,可以实现对列表框中每一列表项进行单独操作。列表框中第一个列表项的数组下标索引值为 0,最后一个列表项的数组下标索引值为 ListCount-1。 ListIndex 属性 用于设置或返回列表框或组合框中当前选定项目的下标索引。对于列表框,其索 引的缺省值为当前选中的项,对组合框而言,其索引缺省值为-1。当 ListIndex 属性值为-1 时,表示当前没有列表项被选中,或者用户在组合框中输入了新的文本。 ListIndex 属性可以与 List 属性结合起来使用,共同确定选定项目的文本。如当前列表框控件名称为 List1,则 List1.List(ListIndex)的值为列表框 List1 当前选定的项目文本,它与 List1.Text 的值是完全相同的。 ListCount 属性 用于返回列表框或组合框中当前列表项的数目。ListCount 属性的值总是等于列表中最后一个列表项的 ListIndex 的属性值加 1。该属性是一个只读属性,不能在属性窗口中设置,只能在程序运行时访问它。 NewIndex 属性 返回最新加到列表框或组合框中列表项的下标索引值。 该属性设计时不可用, 运行时为只读属性。该属性主要用于已排序的列表框和组合框。当向已排序的列表框或组合框插入一项时,NewIndex 属性将会告诉你,该项插在列表中的什么位置。如果在列表中没有任何列表项,则 NewIndex 属性返回值为-1。 Sorted 属性 指定列表框或组合框中的项是否按字母顺序进行排列。 Sorted 属性为运行时只读属性,它有两个值:True 或 False。值为 True 时,表示按字母顺序对列表中的项进行排序,排序时区分列表项中字母的大小写,同时,更改列表项的下标索引值;值为 False 时表示不对列表项进行排序。 MultiSelect 属性 只适用于列表框控件。该属性可以实现在列表中同时选择多个项目。MultiSelect属性的取值如表 2.3 所示。 表 2.3 MultiSelect 属性值及其含义 属性值 描述 0(None) 缺省值,每次只能选择一个项目 1(Simple) 简单多项选择 2(Extended) 扩充多项选择 多项选择的方法既可以同时按下 Shift 键和方向键选择彼此相邻的项目,也可以按下 Ctrl 键,用鼠标逐个选择彼此不相邻的项目。 Selected 属性 只适用于列表框控件,当 MultiSelect 属性为 True 时,它用于确定列表框中某一项的选定状态。当某一项被选中时,对应数组元素的值为 True,否则,对应的值为 False。 Style 属性 列表框和组合框都具有 Style 属性。该属性只能在设计时设定。 列表框的 Style 属性用于确定列表框中列表项的表现形式,其取值有两种:为0(Standard)表示标准列表框,为 1(Checkbox)表示在列表项的前面加上一个复选框。 组合框的 Style 属性用于确定组合框的样式。其取值有三种: (1)Style 值为 0 时,组合框为标准下拉式样式,如图 2.2 所示。 在这种情况下,用户可以直接输入文本,也可以单击组合框右侧的箭头,打开组合框所有选项列表,当用户选定了某一列表项后,该选项就插入到组合框顶部的文本框,同时关闭下拉列表。 图 2.2 标准下拉式组合框 (2)Style 值为 1 时,组合框为简单组合框样式,如图 2.3 所示。 图 2.3 简单样式组合框 在这种情况下,用户可以直接输入文本,也可以从列表中选择项目。简单组合框的右侧没有下拉箭头,在任何时候,其列表都是显示的。当列表选项数目超过可显示的限度时,将自动添加一个垂直滚动条。 (3)当 Style 的值为 2 时,组合框为下拉列表样式,如图 2.4 所示。 图 2.4 下拉列表样式组合框 用户只能从列表中选择。 2常用事件常用事件 Click、Change(组合框)、Dblclick、KeyDown、KeyPress、KeyUP 等 3常用方法常用方法 AddItem、Clear、RemoveItem 等 AddItem 方法 向列表框或组合框添加新的列表项。 调用格式:控件名AddItem item,index 其中,控件名:列表框或组合框控件的名称。 Item: 添加到列表中的字符串表达式。 Index:指定在列表中插入新项目的位置,例如 Index 为 0,表示将新项目添加到控件的第一个位置,如果缺省该参数,对于 Sorted 属性为 True 的控件,新项目按字母顺序添加到合适的位置上;对于 Sorted 属性为 False 的控件,新项目插入到列表的末尾。 对列表项目的添加是比较灵活的,在程序运行的任何时候都可以使用该方法动态地添加项目,通常在窗体的 Load 事件中添加列表项目。 RemoveItem 方法 从列表框或组合框中删除指定位置的列表项。 调用格式:控件名RemoveItem Index 其中,Index 参数是要删除项目在列表中所在的位置。 Clear 方法 用于删除列表框或组合框中的所有项目。Clear 方法经常在列表刷新时使用。 4实例实例 【例 2.8】 创建一个应用程序,能在两个列表框中通过单击某个命令按钮,相互转移列表中选定的列表项。 创建一个应用程序,能在两个列表框中通过单击某个命令按钮,相互转移列表中选定的列表项。 (教材P165 例 5.14) 三、滚动条三、滚动条 在 VB 中,滚动条控件分为水平滚动条(HScrollBar)控件和垂直滚动条(VScrollBar)控件,常常与需要浏览信息,但又不支持滚动功能的控件(如图片框控件)配合使用,为它们提供滚动浏览信息的功能;也可以作为用户信息输入的控件,如在多媒体应用程序中,使用滚动条来作为控制音量的设备。 1.1. 常用属性 常用属性 Height、 Left、 Name、 Max、 Min、 Top、 Value、 Width、 Enabled、 FontBold、 FontItalic、FontName、FontSize、FontStrikethru、FontUnderline、ForeColor、LargeChange、SmallChange、Visible 等 Value 属性 对应于滚动框在滚动条中的相对位置,其值是一个整数。对于水平滚动条,当滚动框处于最左边时,该属性取最小值;对于垂直滚动条,当滚动框处于最顶端时,该属性也取最小值。当滚动框处于中间的各个位置时,Value 值界于最大值和最小值之间,并严格按照比例设定滚动框在滚动条中的位置。 改变滚动条 Value 属性的方法有四种: 直接在属性窗口中设定 Value 值; 鼠标单击两端箭头键改变滚动条数值; 将滚动框沿滚动条拖动到任意位置; 鼠标单击滚动条中滚动框与滚动箭头之间的部分, 使滚动框以翻页的速度移动。 Max 和 Min 属性 用于设定滚动条 Value 属性的取值范围。通常情况下,Max 代表 Value 的最大值,Min 代表 Value 属性的最小值。缺省情况下,若未对 Max 和 Min 属性进行设置,Value属性的取值在 032767 范围内变化。 LargeChange 和 SmallChange 属性 LargeChange 属性确定当在滚动框和滚动箭头之间单击鼠标时,Value 属性值的变化量;SmallChange 属性确定当用鼠标单击滚动条两端箭头时,Value 属性值的变化量。这两个属性的缺省值都为 1,变化量应该在 Min 和 Max 属性之间进行选择。 2.2. 常用事件 常用事件 Change 事件 在改变滚动条 Value 属性值后触发。 Scroll 事件 在拖动滚动框时触发。 3.3. 常用方法 常用方法 Zorder 方法 用来改变滚动条控件在界面上的前后显示顺序。 对于窗体和容器控件而言,存在着三个层:背景层、中间层和最外层。 调用格式: 控件名.Zorder 位置参数 其中位置参数有两个值:0 或 1,0 表示该控件定位在最前面,是缺省设置;1 表示该控件定位于其他控件的后面显示。 4.4. 实例 实例 【例 2.9】 创建一个应用程序,使用滚动条来浏览图形。 创建一个应用程序,使用滚动条来浏览图形。(教材P161 例 5.13) 2.5 输出类:标签输出类:标签 标签控件是用来显示文本的控件,但没有文本输入的功能,它主要用来标注和显示提示信息。 常用属性 常用属性 Caption、 Height、 Left、 Name、 Top、 Visible 、 Width、 Alignment、 Backcolor、 Enabled、FontBold、FontItalic、FontName、FontSize、FontStrikethru、FontUnderline、ForeColor等。 Caption 属性 用来改变 Label 控件中显示的文本。Caption 属性允许文本的长度最多为 1024 字节。缺省情况下,当文本超过控件宽度时,文本会自动换行,而当文本超过控件高度时,超出部分将被裁剪掉。 BackStyle 属性 用于确定标签的背景是否透明。它有两种情况可选:值为 0 时,表示背景透明,标签后的背景和图形可见;值为 1 时,表示不透明,标签后的背景和图形不可见。 AutoSize 和 WordWrap 属性 AutoSize 属性确定标签是否会随标题内容的多少自动变化。如果值为 True,则随 Caption 内容的大小自动调整控件本身的大小,且不换行;如果值为 False,表示标签的尺寸不能调整,超出尺寸范围的内容不予显示。 WordWrap属性用来设置当标签在水平方向上不能容纳标签中的文本时是否折行显示文本。当其值为 True 时,表示文本折行显示,标签在垂直方向上放大或缩小以适合文本的大小,标签水平方向的宽度保持不变;其值为 False 时,表示文本不换行。 举例。 2常用事件常用事件 Click、Dblclick 3常用方法常用方法 Drag、Refresh 4实例实例 【例 2.10】 为一个标题为“关闭”的命令按钮添加一个命令按钮的提示行,当光标移到该命令按钮时,在命令按钮的下方显示一个背景色为淡黄色的提示行“关闭窗体,结束应用程序” 。 为一个标题为“关闭”的命令按钮添加一个命令按钮的提示行,当光标移到该命令按钮时,在命令按钮的下方显示一个背景色为淡黄色的提示行“关闭窗体,结束应用程序” 。(教材P151 例 5.9) 2.6 设计窗体界面的基本原则 本章前面介绍的内容有些太实在了,着眼点全都是“窗体、控件,控件、窗体”的“一招一式” 。在这一节中,我们要把眼光抬高一个层次,介绍一些“虚”的东西-窗体设计应注意的一些原则,以便把应用程序的界面设计得尽可能美观、易用。 一、 什么是好的界面一、 什么是好的界面 用户喜欢。在开始设计用户界面之前,最好先去看看 Microsoft 或其他公司一些销路不错的应用程序,从中借鉴一些东西。 二、注意窗体的布局二、注意窗体的布局 控件的位置:习惯与在一页之中从左到右、自上到下地阅读。 界面元素: 为了保持视觉上的一致性, 再开始开发应用程序之前应先创建设计策略和类型约定。 空白空间的使用: 在设计中插入适当的空白空间可以突出设计元素, 各控件之间一致的间隔以及垂直与水平方向元素的对齐等。 保持界面的简单明了:简单化。 适当使用颜色与图象:应尽量限制应用程序所用颜色的种类,色调应该保持一致。 图片和图标: 在窗体中适当使用图片与图标可增加应用程序的视觉上的趣味, 还可使用工具栏(以后会学) 选取字体: 最好坚持使用标准的 Windows 字体, 如 Arial、 NewTimesRoman、 宋体、黑体。 要与 Windows 的界面设计相符。 现在我们已经学习了 VB 中窗体及部分常用控件的使用,也进行了简单的界面设计,一定很想自己也能编写小程序,解决一些简单的问题。下面,我们开始学习程序设计。 本章重点:本章重点: 1. 熟练掌握窗体的概念、常用属性、事件和方法。 2. 控件的操作:控件的生成、改变位置大小、删除、剪切、拷贝、粘贴和成组控件。 3. 熟练掌握命令按钮的功能、常用属性、事件和方法。 4熟练掌握常用于输入的文本框、列表框、组合框和滚动条的功能、常用属性、事件和方法 5熟练掌握常用于输出的标签的功能、常用属性、事件和方法 第三章第三章 程序设计基础程序设计基础 本章将介绍 Visual Basic 中有关基本语句、程序的书写规则、变量、常数、流程控制等基本内容,之所以有编程语言之说,就是因为编程和说话一样,都是用某种语法和词汇对自己想法的表达,程序员掌握的“语法和词汇”越多,就越能够让程序完整顺畅地体现自己的想法。 3.1 赋值语句赋值语句 = 对象属性或变量 = 表达式 含义:将等号右边表达式的值传送给等号左边的变量或者对象属性 如:form1.caption=”两数相乘” 3.2 程序的书写规则程序的书写规则 1注释注释:程序员可以使用注释来说明自己编写某段代码或某个变量的目的,便于阅读理解程序。 格式格式 1: 注释文字 格式格式 2:Rem 注释文字 说明:注释可以和语句在同一行并写在语句的后面,也可占据一整行。 如:下面的语句是赋值语句和注释的示例 Form1.width=300 将窗体的宽度设置为 300 2 断行断行:将长语句分成多行。 续行符 “ _”(一个空格紧跟一条下划线) 如:strtemp=”问君归期未有期,”& _ ”巴山夜雨涨秋池。”& _ “何当共剪西窗烛,”& _ “却话巴山夜雨时。” 注意: (1) 在同一行内,续行符后面不能加注释 (2) 续行符不应将变量名和属性分割在两行 (3) 原则上,续行符应加在运算符的前后 3 将多行语句写在一行上 一行中写下多条语句,可用“: ”作为分割符。 如:Form1.width=300:temp=form1.width:form1.caption=”你好!” 3.3 变量变量 变量是指程序运行中其值可以变化的量。 一、 变量的命名规则:一、 变量的命名规则: 在 Visual Basic 中命名一个变量要遵循如下的规则,否则系统不能正确的辨识。 必须是以字母、汉字开头的字母、汉字、数字、下划线组成的字符串,不能在变量名中出现句点”。”、空格或者嵌入下列字符:!、#、$、%、&。 变量名最长为 255 个字符。 大小写字母同等对待,不能使用系统保留字 在同一个范围内变量名必须是唯一的。 二、 变量的声明: 二、 变量的声明: 所谓声明一个变量即事先将变量的有关信息通知程序,以便系统可以确定变量的存储格式。在一般的高级语言中,使用变量必须遵循“先声明,后使用”的原则,但在 VB 中,变量在使用时不一定 “先声明,后使用” ,它有显式声明、隐式声明之分。 隐式声明隐式声明:即不声明而直接使用,变量以 Variant 类型处理。 显式声明显式声明:情况一 是在程序开头加入 Option Explicit 强制显式声明语句; 情况二 是不加强制显式声明语句,对变量声明。 格式: Dim 变量名 AS 类型 其中:AS 类型表示可缺省,类型为数据类型 如: sub form_click() dim temp as integer temp=2 显式声明情况二 a=4 隐式声明 endsub 显式声明情况一 option explicit sub form_click() dim a as integer dim b as integer a=4 b=5 end sub 三、 变量的数据类型:三、 变量的数据类型: VB 提供了 6 类 12 种标准数据类型, 还可以由用户自定义数据类型。我们首先介绍标准数据类型:数值型、字符型、逻辑型、日期型、对象型、变体数值型、字符型、逻辑型、日期型、对象型、变体 1 数值数值(Numeric)数据类型数据类型 整型数、浮点数、货币型数、字节型数 (1) 整型数整型数:是指不带小数点和指数符号的数,整型数运算速度快、精确,但表示数的范围小。 整型整型Integer(%): 存储长度为2个字节(16位), 数的表示范围是-32768+32767。 长整数长整数 Long(&): 存储长度为 4 个字节(32 位),范围是-21474836482147483647。 (2) 浮点数浮点数: 浮点数由三部分组成:符号、尾数(Q)以及指数(J),即±QE(或)J。指数分别用“E”表示单精度、 “D”表示双精度。浮点数的符号均占 1位。 单精度浮点数单精度浮点数 Single(! )(! ) :以 4 字节形式存储(32 位) ,可以精确到 7位十进制数,而单精度数的范围如下: 负数的范围是:-3.402823E+38-1.401298E-45。 正数的范围是:+10401298E-45+3.402823E+38。 双精度浮点数双精度浮点数 Double(#):以 8 字节形式存储(64 位)。可以精确到 1516 位十进制数。而双精度数的范围如下: 负数的范围是: -1.797693134862315D+308-.9406564584112465D-324 正数的范围是: +4.940656458412465D-324+1.797693134862315D+308 浮点数表示的数的范围大,但有误差,在做浮点数的运算时,应尽量使每一次运算的结果都在有效位数范围内; 尽量不要使两个相差很大的数值直接相加或相减。 (3) 货币型数货币型数: Currency() :是定点数,在内存中存储为 64 位(8 个字节)整型的数值形式,其小数点左边有 15 位数字,右边有 4 位数字。 范围: -922,337,203,685,477.5808 922,337,203,685,477.5807。 Currency 数据类型在货币计算与定点计算中很有用,因为在这种场合精度特别重要。 (4) 字节型数:字节型数: Byte:是二进制数。其存储为单精度型、无符号整型、8 位(1 个字节)的数值形式,范围在 0 至 255 之间。 Byte 数据类型在存储二进制数据时很有用。 2 字符(字符(String)数据类型)数据类型 String($) :存放字符数据,所谓字符型数据就是用双引号括住的字符串,如:"Abcde"、"Visual Basic 欢迎你!"等。VB 有两种字符串:变长字符串和定长字符串。 在字符串中每个字符占 1 个字节,字符数据的范围以字符串长度的大小来度量。 变长字符串所占的空间大小为 10 个字节加字符串,最多可包含大约 20 亿(231)个字符;定义格式:DIM 变量名 AS String 如:DIM strtemp AS string 定长字符串所占字节就是字符串的长度,可包含 1大约 64K(216)个字符。定义格式:DIM 变量名 AS String *字符串长度 如:DIM strname AS string *8 3 逻辑(逻辑(Boolean)数据类型)数据类型 Boolean: 该类型变量主要用来进行逻辑判断, 它的存储位数是 16 位。 数据只有两个值:True(真)或 False(假) 。 注意:在 VB 中,逻辑数据可以转换成整型数据。这时,True 转换为1,False 转换为 0;而当其他类型的数据转换成逻辑数据时,非零数转换成 True,0 转换为 False。 4 日期(日期(Date)数据类型)数据类型 Date: 是用来表示和存储日期和时间的数据,它是按 8 个字节的浮点数存储。任何字面上可被认作日期和时间的字符(除汉字外) ,只要用磅号(#)括起来都可以认作为日期型数据。 如:#1 Jan, 97# 、 #January 1, 1999# 、 #199981 12: 30: 12PM# 日期表示的范围是:从公元 100 年 1 月 1 日 9999 年 12 月 31 日; 时间表示的范围是:从 0:00:00 23:59:59。 注意:当其他数据转换成日期型数据时,小数点左边的数值代表日期,而小数点右边的数值代表时间:0 为午夜 12 点,0.5 为中午 12 点;负数代表的是 1899 年 12 月 31 日之前的日期和时间。 【例 3.1】 下面程序在用户单击窗体后,可显示出由数据转化的日期和时间。下面程序在用户单击窗体后,可显示出由数据转化的日期和时间。 (教材 P30 例 2.1) 5 对象(对象(Object)数据类型)数据类型 Object: 存储为 32 位(4 个字节)的数值形式,作为对象的引用。利用 Set 语句,声明为 Object 的变量可以赋值为任何对象的引用。 如: Sub form_click() Dim Temp AS Object Set Temp =form1 End Sub 6 变体(变体(Variant)数据类型)数据类型 Variant:也称为万用数据类型,这是一种特殊的数据类型,它对数据的处理(即所需类型)可以根据上下文的变化而变化,除了定长的 String数据及用户定义的类型之外,可以处理任何类型的数据而不必进行数据类型的转换。是对所有未定义的变量的缺省数据类型的定义。 Variant 类型的数据可以根据运算的实际情况而“变体” , VB提供了一个函数 VarType 专门用来检测 Variant 中保存的数据类型,例如:VarType(123)的返回值为 2,表示为整型。 VarType 函数的返回值与数据类型的关系如表 3.1 所示。 表 3.1 VarType 函数数据类型检测 内部常数 VarType 返回值 数据类型 vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject vbByte vbArray 0 1 2 3 4 5 6 7 8 9 10 11 12 13 17 8192 空(Empty) 无效(Null) 整型(Integer) 长整型(Long) 单精度(Single) 双精度型(Double) 货币型(Currency) 日期型(Date) 字符型(String) OLE 自动化对象(OLE Automation Object) 错误(Error) 逻辑型(Boolean) 变体数组(Variant) 非 OLE 自动化对象(Non-OLE Automation Object) 字节型(Byte) 数组(Array) 3.4 常数常数 常数是在程序运行中其值不变的量。 Visual Basic 中包含三种常量:文字常量、符号常量、系统常量。 1 文字常量 包含数值常量、字符串常量、逻辑型常量和日期型常量。 2符号常量 用一个符号(一个字母组合)来代替长长的数字常量 声明格式: Const 字符常量名 AS 类型=表达式 其中: 字符常量名:是有效符号名,其命名规则与变量名相同。一般使用大写,尽量选择易记、有意义的名称。 AS 类型:说明了该常量的数据类型,若省略该选项,则数据类型由表达式决定。也可用在符号常量名后加类型说明符来决定。 表达式:可以是数值常数、字符常数、时间日期以及运算符组成的表达式。 注意: 表达式中不能调用函数,即其中不能有函数元素。 可以用先前定义过的符号常数定义新常数。 如 : Const PI=3.1415926 ' 声 明 了 常 量 PI , 代 表3.1415926 ,单精度型 Const MAX As Integer =&H21ED ' 声明了常量MAX,代表十六进制整型数 21ED Const COUNT# =53.78 '声明了常量 COUNT,代表53.78,双精度型 Const BIRTHDAY=# 3/22/72# Const PI 2= PI * 2 3 系统常量 是由VB提供的并能够识别的、 具有专用名称和作用的常数。 VB6.0提供了如:颜色常数、控件常数、窗体常数、绘图常数、图形常数、键码常数等 32 类近千个常数,这些常数位于 VB 的对象库中。 如下表: 表 3.2 VB 的常用颜色常数 常 数 值 描 述 常 数 值 描 述 vbBlack vbRed vbGreen vbYellow &H0 &HFF &HFF00 &HFFFF 黑色 红色 绿色 黄色 vbBlue vbMagentavbCyan vbWhite &HFF0000 &HFF00FF &HFFFF00 &HFFFFFF 蓝色 洋红 青色 白色 3.5 表达式与运算符表达式与运算符 表达式是指由变量、 常量、 函数和运算符按一定的规则组成的一个字符序列。在 VB6 中可以进行 4 种运算:算术运算、比较运算、连接运算和逻辑运算。 3.5.1 算术运算算术运算 算术运算就是加减乘除及指数等数学运算。 表 3.3 显示了 VB6 所有的算术运算及示例: 表 3.3 算术运算符 运算符运算符 说明说明 示例示例 优先级优先级 - 取负值 Test=-7 指数 Test=32 表示 3 的 2次方,结果为 9 * 乘法 Test=37*16 / 浮点数除法 Test=37/16 结果为2.3125 整数除法 Test=3716 结果为 2先四舍五入为整数后再相除。 Mod 求余数 Test=37 mod 16 结果为 5。先四舍五入为整数后再求余数。 +,- 加法、减法 Test=37+16 Test=37-16 高 由高到低 自左到右 括号优先 低 如:设设 X=2.5,A=7,Y=4.7,求下面表达式的值。求下面表达式的值。 X+(A3)*(X+Y)2-3.5 MOD 2/2 表达式必须写在同一水平上 2 7.2 51.84 103.68 1 0 106.18 106.18 3.5.2 比较运算比较运算 比较运算(关系运算)就是比较大小,结果为真(True) 、假(False)和 Null。 表 3.4 比较运算符 运算符 说明 > 大于 < 小于 >= 大于或等于 <= 小于或等于 = 等于 <> 不等于 运算规则:运算规则: 如果两个操作数都是数值型,则按其大小比较。 如果两个操作数都是字符型,则按字符的 ASCII 码值从左到右一一比较,即首先比较两个字符串的第一个字符, 其 ASCII 码值大的字符串大; 如果第一个字符相同,则比较第二个字符,依此类推,直到出现不同的字符为止。 如果一个表达式是数值型,另一个表达式是不能转换成数值的字符型,则不能进行比较。 关系运算符的优先级相同,运算时从左到右依次进行。 两个运算符中有一个是 Null,则运算结果为 Null。 关系表达式关系表达式:用关系运算符及括号将操作数连接的式子 如: (3>1)=(4<2) ;0=(4<2);18.5<15.4 3.5.3 连接运算连接运算 连接运算就是将两个表达式连接在一起。运算符有: &:用来强制两个表达式作字符串连接。 +:如果两个表达式都为字符串,则将两个字符串连接;若一个为字符串而另一个为数字则进行相加运算。 如下表: 表 3.5 两种连接运算符“&”和“+”的比较 表达式 1 表达式 2 & + “123” “3” “1233” “1233” 123 3 “1233” 126 “123” 3 “1233” 126 “123a” 3 “123a3” 报错 3.5.4 逻辑运算(布尔运算)逻辑运算(布尔运算) 逻辑运算通常用来表示比较复杂的关系, 如: 女工程师, 表示为: 性别= “女” AND 职称=“工程师” 。结果为真(True)和假(False) 。表 3.6 列出了 VB 中所有的逻辑运算符和它们表示的逻辑关系。 表 3.6 逻辑运算符和它们表示的逻辑关系 运算符 说 明 优先级 说 明 例 结 果 Not 逻辑非 1 当操作数为假时,结果为真 Not F T And 逻辑与 2 操作数均为真时,结果才为真 T And F T And T F T Or 逻辑或 3 操作数中有一个为真时,结果为真 T Or F F Or F T F Xor 逻辑异或 4 操作数相反时,结果才为真 T Xor F T Xor T T F Eqv 逻辑等于 5 操作数相同时,结果才为真 T Eqv F F Eqv F F T Imp 逻辑蕴含 6 第一个操作数为真,第二个操作数为假时,结果才为假,其余结果都为真 T Imp F T Imp T F T 如: 计算下面表达式的值: (15>3)And (6>2) 结果为 True (7>3)Or (2>6) 结果为 True Not(2>6)And (6>2) 结果为 True ("a">"A")Xor ("b">"B") 结果为 False (7.8>3.2)Eqv (16.8>7.2) 结果为 True (16.3>7.0)Imp(4.5>19.2) 结果为 False (4.5>19.2)Imp(16.5>7.0) 结果为 True 注意:逻辑运算一般是对关系表达式或逻辑量进行的,但也可以对数值进行运算。在对数值进行运算时,是以数字的二进制值逐位进行逻辑运算的。 如: 10 And 7 10 的二进制数为 1010;7 的二进制数为 0111,对它们逐位进行逻辑运算得到二进制数为 0010,结果是十进制数 2。 3.5.5 运算的优先顺序运算的优先顺序 当一个表达式中出现多种运算符时,即同时出现算术、关系和逻辑时,如何决定运算的次序呢?这就需要考察一下这三类运算符的优先次序。 优先级高的运算符先运算,运算符的优先级相同时,从左向右进行运算。 VB 运算符的优先级见下表: 表 3.7 VB 运算符的优先级 1 2 3 优先级 算术运算符 关系运算符 逻辑运算符 1 -(负号) = Not 2 <> And 3 *,/ < Or 4 > Xor 5 Mod <= Eqv 6 +, >= Imp 7 & 如:用一个逻辑表达式表示满足闰年的条件。如:用一个逻辑表达式表示满足闰年的条件。 解:闰年的条件是: 能被 4 整除,但不能被 100 整除的年份都是闰年。 能被 100 整除,又能被 400 整除的年份是闰年。 用 Year 表示一个年份,则有如下的判断条件: Year Mod 4=0 And Year Mod 100 <> 0 Or Year Mod 400=0 3.6 3.6 流程控制语句流程控制语句 程序的执行就象水在管道中流动,如果不加以控制,只能从上流到下。使用控制结构就可控制程序执行的流程。 在 VB 中, 控制程序执行的基本结构有三种:顺序结构、选择结构和循环结构。程序中所体现出的“智能”就是通过条件判定和循环语句来实现的。 下面我们就要自己动手编程了, 首先学习算法的表示, 再学习三种基本结构。 3.6.1 算法的表示算法的表示 算法:即对一个问题的解决方法和步骤。 任何一个问题能否用计算机解决, 一个关键的步骤就是看能否设计出它的算法, 有了合适的算法,再使用合适的计算机语言,就能方便地编写出程序来。 一、算法的特点 (1)有穷性:一个算法必须在执行有穷个计算步骤后终止; (2)确定性:一个算法给出的每个计算步骤,必须都是精确定义的、无二义性的; (3)能行性:算法所要执行的每一个计算步骤,都是可以在有限时间内做完的; (4)输入: 一个算法一般要求有一个或多个输入信息, 这些输入信息是算法所需的初始数据; (5)输出: 一个算法一般要求有一个或多个输出信息, 这些信息一般就是对输入信息计算的结果。 二、算法的表示 表示算法的形式很多,如传统流程图、自然语言、N-S 结构化流程图等等。我们用直观、形象的流程图来表示算法。 起止框,表示算法的开始或结束。 处理框,表示初始化或运算赋值等操作。 输入输出框,表示数据的输入输出操作。 判断框,表示根据条件决定程序的流向。 流程线,表示流程的方向。 【例 3.2】 :将某班级中计算机、英语、数学三门课成绩总和大于等于:将某班级中计算机、英语、数学三门课成绩总和大于等于 270 分的学生发给奖学金分的学生发给奖学金 200 元,并显示这些学生的姓名、奖学金。若成绩总和小于元,并显示这些学生的姓名、奖学金。若成绩总和小于 270 分,则显示该学生没有奖学金。当从键盘输入完最后一名学生的成绩后,输入一个特殊符号“分,则显示该学生没有奖学金。当从键盘输入完最后一名学生的成绩后,输入一个特殊符号“#” 。” 。 分析: 由键盘输入学生的姓名、三门课的成绩。 判断是否输入了一个特殊符号“#” 。是,程序结束。否,继续执行。 求三门课的总成绩。 判断总成绩是否大于 270 分。否,显示没有奖学金。是,继续执行。 奖学金发 200 元,显示该学生的姓名和奖学金。 再次输入学生的姓名,流程返回到继续执行。 图 3.1 例 3.1 流程图 3.6.2 顺序结构顺序结构 顺序结构是一种最简单、最基本的程序控制结构,任何程序必须包含顺序结构。它的特点是,在这个结构内各语句块是按照它们出现的顺序从上到下依次执行的。 语句块 2 语句块 1 图 3.2 顺序结构 3.6.3 选择结构选择结构 条件判定语句在程序运行中起的是水龙头的作用,只有满足条件的,才会执行某些语句,否则程序将按照另一个流程执行。 图 3.3 选择结构 VB 支持的条件判定结构有 3 种,它们是: If Then If Then Else Select Case 一一、 If Then 结构结构 1 只选择执行一条语句: If 条件 Then 语句块 1 Else 语句块 2 如:如:If x>=y then x=x+y : sum=sum+x else x=x-y : sum=sum-x 注:这条语句必须在一行中写完 2需要执行多条语句: If 条件 Then 语句块 End If 如:如:If Name = “Text1” Then Text1.text = “欢迎使用“欢迎使用 Visual Basic 6.0 系统”系统” End If 二、二、If Then Else 结构结构 使用 If Then Else 结构可以从几个程序流程分支中选择一个执行。 格式: If 条件 then 语句块 ElseIf 条件 2 Then 语句块 2 ElseIf 条件 3 Then 语句块 3 Else 语句块 n End If 流程图: 图 3.4 If Then Else 结构结构 除此之外,条件还可以是下面的形式: Type Of 控制变量 Is 对象类型 它测试某个控制变量是否为某种对象类型,如果是,则条件满足,返回 True;否则条件不满足,返回 False。 例如:例如:If Type Of Listvar Is ListBox Then 表示如果 Listvar 控制是一个列表框类型的控制,则执行 Then 后面的语句块;否则执行下面的语句。 【例 3.4】判断某年是否为闰年。计算闰年的方法是,如果某年份能被判断某年是否为闰年。计算闰年的方法是,如果某年份能被 4 整除并且不能被整除并且不能被100 整除的或者能被整除的或者能被 400 整除的,则该年为闰年。整除的,则该年为闰年。 (教材p92 例 3.5) 分析: 1.输入某年 2.判断是否为闰年 3.显示结果 根据题意, 需七个对象: 在一个文本框中输入某年,单击命令按钮判断是否为闰年,在一标签中显示结果, 按一按钮清空文本框,开始新的判断,两个标签为提示信息,一个窗体。 流程图: 图 3.5 例 3.4 流程图 【例 3.5】求一元二次方程求一元二次方程 ax2+bx+c=0 的根。的根。 (教材p94 例 3.7) 分析:1.输入方程系数 a,b,c 2.求出 D=B2-4AC 3.判断 D<0 , 是求出两个复根;否则判断 D=0,是求出两个相等的实根,否求出两个不相等的实根。 4.显示结果 根据分析,需 11 个对象:用三个文本框输入系数 A、B、C,计算按钮求出 D 并判断,得出结果,在两个标签上显示方程和结果,清空按钮,三个标签作提示,一个窗体。 流程图: 图 3.6 例 3.5 流程图 请思考:若 A、B、C 三个系数不能构成一元二次方程呢? 三、三、Select Case 结构结构 用来实现多分支选择。 对于多种选择来说, 效率比条件语句更高, 更容易维护和阅读。 格式:Select Case 测试变量(或测试表达式) Case 表达式列表 1 语句块 1 Case 表达式列表 2 语句块 2 Case Else 语句块 n End Select 其中: 测试变量:称为 Case 变量,它可以是一个变量、表达式或常量,可以是数值型或字符串型。 表达式列表:可以是下面三种形式之一: 表达式 表达式 To 表达式 Is 比较运算符表达式 To,Is 是关键字,后两种形式可用来设定值的范围是关键字,后两种形式可用来设定值的范围 例如:Case 1 To 10 测试变量的值落在 1 到 10 范围内,则匹配; Case Is>100 测试变量的值大于 100,则匹配; Case 子句中允许出现多个表达式子句中允许出现多个表达式 例如: Case 1 to 5,12,Is>Min 表示测试变量的值在 1 到 5 范围内,或者 12,或者大于 Min,均匹配。 Case 子句中的表达式列表允许是字符串子句中的表达式列表允许是字符串 例如: Case “Xie” , “Li”TO “Wang” ,Name$ 表示只要测试变量的值与 Xie 匹配或落在 “Li” TO “Wang” 之间或与 Name$的值匹配,均认为匹配成功。 表达式列表的数据类型应与测试变量值的类型一致,否则将强制转换为测试变量值的数据类型。 执行流程: 图 3.7 Select Case 结构 【例 3.6】通过一个文本框读入一个学生成绩,然后打印出它的等级。通过一个文本框读入一个学生成绩,然后打印出它的等级。 (教材P93 例 3.9) 分析的流程图: 图 3.8 例 3.6 流程图 3.6.4 循环结构循环结构 计算机可以为我们不厌其烦地重复做某一项工作成千上万,这就是循环控制的功能。 3.7创建自己的数据类型创建自己的数据类型 3.8 枚举枚举 3.9数组数组 3.10 常用算法常用算法 第四章第四章 程序设计基础程序设计基础 本章将介绍 Visual Basic 中有关基本语句、程序的书写规则、变量、常数、流程控制等基本内容,之所以有编程语言之说,就是因为编程和说话一样,都是用某种语法和词汇对自己想法的表达,程序员掌握的“语法和词汇”越多,就越能够让程序完整顺畅地体现自己的想法。 3.1 赋值语句赋值语句 = 对象属性或变量 = 表达式 含义:将等号右边表达式的值传送给等号左边的变量或者对象属性 如:form1.caption=”两数相乘” 3.2 程序的书写规则程序的书写规则 4注释注释:程序员可以使用注释来说明自己编写某段代码或某个变量的目的,便于阅读理解程序。 格式格式 1: 注释文字 格式格式 2:Rem 注释文字 说明:注释可以和语句在同一行并写在语句的后面,也可占据一整行。 如:下面的语句是赋值语句和注释的示例 Form1.width=300 将窗体的宽度设置为 300 5 断行断行:将长语句分成多行。 续行符 “ _”(一个空格紧跟一条下划线) 如:strtemp=”问君归期未有期,”& _ ”巴山夜雨涨秋池。”& _ “何当共剪西窗烛,”& _ “却话巴山夜雨时。” 注意: (1) 在同一行内,续行符后面不能加注释 (4) 续行符不应将变量名和属性分割在两行 (5) 原则上,续行符应加在运算符的前后 6 将多行语句写在一行上 一行中写下多条语句,可用“: ”作为分割符。 如:Form1.width=300:temp=form1.width:form1.caption=”你好!” 3.3 变量变量 变量是指程序运行中其值可以变化的量。 一、变量的命名规则:一、变量的命名规则: 在 Visual Basic 中命名一个变量要遵循如下的规则,否则系统不能正确的辨识。 必须是以字母、汉字开头的字母、汉字、数字、下划线组成的字符串,不能在变量名中出现句点”。”、空格或者嵌入下列字符:!、#、$、%、&。 变量名最长为 255 个字符。 大小写字母同等对待,不能使用系统保留字 在同一个范围内变量名必须是唯一的。 二、变量的声明: 二、变量的声明: 所谓声明一个变量即事先将变量的有关信息通知程序,以便系统可以确定变量的存储格式。在一般的高级语言中,使用变量必须遵循“先声明,后使用”的原则,但在 VB 中,变量在使用时不一定 “先声明,后使用” ,它有显式声明、隐式声明之分。 隐式声明隐式声明:即不声明而直接使用,变量以 Variant 类型处理。 显式声明显式声明:情况一 是在程序开头加入 Option Explicit 强制显式声明语句; 情况二 是不加强制显式声明语句,对变量声明。 格式: Static|Dim 变量名 AS 类型 其中:AS 类型表示可缺省,类型为数据类型 Static 定义的变量为静态变量 Dim 定义的变量为一般变量 当执行过程时,用 Dim 定义的变量初值为 0。而用 Static 定义的变量除第一次调用时初值为 0,以后变量不会被初始化。 如: sub form_click() dim temp as integer temp=2 显式声明情况二 a=4 隐式声明 endsub 显式声明情况一 option explicit sub form_click() dim a as integer dim b as integer a=4 b=5 end sub 用 Static 声明变量 sub form_click () static a as integer a=a+1 print a end sub 三、变量的数据类型:三、变量的数据类型: VB 提供了 6 类 12 种标准数据类型,还可以由用户自定义数据类型。我们首先介绍标准数据类型:数值型、字符型、逻辑型、日期型、对象型、变体数值型、字符型、逻辑型、日期型、对象型、变体 1数值数值(Numeric)数据类型数据类型 整型数、浮点数、货币型数、字节型数 (1)整型数:)整型数: 是指不带小数点和指数符号的数,整型数运算速度快、精确,但表示数的范围小。 整型整型 Integer(%): 存储长度为 2 个字节(16 位), 数的表示范围是-32768+32767。 长整数长整数 Long(&): 存储长度为 4 个字节(32 位),范围是-21474836482147483647。 (2)浮点数:)浮点数: 浮点数由三部分组成:符号、尾数(Q)以及指数(J),即±QE(或)J。指数分别用“E”表示单精度、 “D”表示双精度。浮点数的符号均占 1 位。 单精度浮点数单精度浮点数 Single(! )(! ) :以 4 字节形式存储(32 位) ,可以精确到 7 位十进制数,而单精度数的范围如下: 负数的范围是:-3.402823E+38-1.401298E-45。 正数的范围是:+10401298E-45+3.402823E+38。 双精度浮点数双精度浮点数 Double(#): 以 8 字节形式存储(64 位)。 可以精确到 1516 位十进制数。而双精度数的范围如下: 负数的范围是: -1.797693134862315D+308-.9406564584112465D-324 正数的范围是: +4.940656458412465D-324+1.797693134862315D+308 浮点数表示的数的范围大,但有误差,在做浮点数的运算时,应尽量使每一次运算的结果都在有效位数范围内;尽量不要使两个相差很大的数值直接相加或相减。 (3)货币型数:)货币型数: Currency() :是定点数,在内存中存储为 64 位(8 个字节)整型的数值形式,其小数点左边有 15 位数字,右边有 4 位数字。 范围: -922,337,203,685,477.5808 922,337,203,685,477.5807。 Currency 数据类型在货币计算与定点计算中很有用, 因为在这种场合精度特别重要。 (4)字节型数:)字节型数: Byte:是二进制数。其存储为单精度型、无符号整型、8 位(1 个字节)的数值形式,范围在 0 至 255 之间。 Byte 数据类型在存储二进制数据时很有用。 2字符(字符(String)数据类型)数据类型 String ($) : 存放字符数据, 所谓字符型数据就是用双引号括住的字符串, 如: "Abcde"、"Visual Basic 欢迎你!"等。VB 有两种字符串:变长字符串和定长字符串。 在字符串中每个字符占 1 个字节,字符数据的范围以字符串长度的大小来度量。 变长字符串所占的空间大小为 10 个字节加字符串,最多可包含大约 20 亿(231)个字符; 定义格式:DIM 变量名 AS String 如:DIM strtemp AS string 定长字符串所占字节就是字符串的长度,可包含 1大约 64K(216)个字符。 定义格式:DIM 变量名 AS String *字符串长度 如:DIM strname AS string *8 3逻辑(逻辑(Boolean)数据类型)数据类型 Boolean: 该类型变量主要用来进行逻辑判断, 它的存储位数是 16 位。 数据只有两个值:True(真)或 False(假) 。 注意: 在 VB 中, 逻辑数据可以转换成整型数据。 这时, True 转换为1, False转换为0; 而当其他类型的数据转换成逻辑数据时, 非零数转换成True,0 转换为 False。 4日期(日期(Date)数据类型)数据类型 Date: 是用来表示和存储日期和时间的数据, 它是按 8 个字节的浮点数存储。 任何字面上可被认作日期和时间的字符(除汉字外) ,只要用磅号(#)括起来都可以认作为日期型数据。 如:#1 Jan,97# 、#January 1,1999# 、#199981 12:30:12PM# 日期表示的范围是:从公元 100 年 1 月 1 日 9999 年 12 月 31 日; 时间表示的范围是:从 0:00:00 23:59:59。 注意:当其他数据转换成日期型数据时,小数点左边的数值代表日期,而小数点右边的数值代表时间:0 为午夜 12 点,0.5 为中午 12点;负数代表的是 1899 年 12 月 31 日之前的日期和时间。 【例 3.1】 下面程序在用户单击窗体后,可显示出由数据转化的日期和时间。下面程序在用户单击窗体后,可显示出由数据转化的日期和时间。 (教材 P30 例 2.1) 5对象(对象(Object)数据类型)数据类型 Object: 存储为 32 位(4 个字节)的数值形式,作为对象的引用。利用Set 语句,声明为 Object 的变量可以赋值为任何对象的引用。 如: Sub form_click() Dim Temp AS Object Set Temp =form1 End Sub 6变体(变体(Variant)数据类型)数据类型 Variant:也称为万用数据类型,这是一种特殊的数据类型,它对数据的处理(即所需类型)可以根据上下文的变化而变化,除了定长的 String 数据及用户定义的类型之外,可以处理任何类型的数据而不必进行数据类型的转换。是对所有未定义的变量的缺省数据类型的定义。 Variant 类型的数据可以根据运算的实际情况而“变体” , VB 提供了一个函数 VarType 专门用来检测 Variant 中保存的数据类型, 例如: VarType(123)的返回值为 2,表示为整型。 VarType 函数的返回值与数据类型的关系如表 3.1 所示。 表 3.1 VarType 函数数据类型检测 内部常数 VarType 返回值 数据类型 vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject vbByte vbArray 0 1 2 3 4 5 6 7 8 9 10 11 12 13 17 8192 空(Empty) 无效(Null) 整型(Integer) 长整型(Long) 单精度(Single) 双精度型(Double) 货币型(Currency) 日期型(Date) 字符型(String) OLE 自动化对象(OLE Automation Object) 错误(Error) 逻辑型(Boolean) 变体数组(Variant) 非 OLE 自动化对象(Non-OLE Automation Object) 字节型(Byte) 数组(Array) 3.4 常数常数 常数是在程序运行中其值不变的量。 Visual Basic 中包含三种常量:文字常量、符号常量、系统常量。 1文字常量文字常量 包含数值常量、字符串常量、逻辑型常量和日期型常量。 2符号常量符号常量 用一个符号(一个字母组合)来代替长长的数字常量 声明格式: Const 字符常量名 AS 类型=表达式 其中: 字符常量名:是有效符号名,其命名规则与变量名相同。一般使用大写,尽量选择易记、有意义的名称。 AS 类型:说明了该常量的数据类型,若省略该选项,则数据类型由表达式决定。也可用在符号常量名后加类型说明符来决定。 表达式:可以是数值常数、字符常数、时间日期以及运算符组成的表达式。 注意: 表达式中不能调用函数,即其中不能有函数元素。 可以用先前定义过的符号常数定义新常数。 如 : Const PI=3.1415926 ' 声 明 了 常 量 PI , 代 表3.1415926 ,单精度型 Const MAX As Integer =&H21ED ' 声明了常量MAX,代表十六进制整型数 21ED Const COUNT# =53.78 '声明了常量 COUNT,代表53.78,双精度型 Const BIRTHDAY=# 3/22/72# Const PI 2= PI * 2 3系统常量系统常量 是由 VB 提供的并能够识别的、具有专用名称和作用的常数。VB6.0 提供了如:颜色常数、控件常数、窗体常数、绘图常数、图形常数、键码常数等 32 类近千个常数,这些常数位于 VB 的对象库中。 如下表: 表 3.2 VB 的常用颜色常数 常 数 值 描 述 常 数 值 描 述 vbBlack vbRed vbGreen vbYellow &H0 &HFF &HFF00 &HFFFF 黑色 红色 绿色 黄色 vbBlue vbMagentavbCyan vbWhite &HFF0000 &HFF00FF &HFFFF00 &HFFFFFF 蓝色 洋红 青色 白色 3.5 表达式与运算符表达式与运算符 表达式是指由变量、 常量、 函数和运算符按一定的规则组成的一个字符序列。在 VB6 中可以进行 4 种运算:算术运算、比较运算、连接运算和逻辑运算。 3.5.1 算术运算算术运算 算术运算就是加减乘除及指数等数学运算。 表 3.3 显示了 VB6 所有的算术运算及示例: 表 3.3 算术运算符 运算符运算符 说明说明 示例示例 优先级优先级 - 取负值 Test=-7 指数 Test=32 表示 3 的 2次方,结果为 9 *,/ 乘法, 浮点数除法 Test=37*16 Test=37/16 结果为2.3125 整数除法 Test=3716 结果为 2先四舍五入为整数后再相除。 Mod 求余数 Test=37 mod 16 结果为 5。先四舍五入为整数后再求余数。 +,- 加法、减法 Test=37+16 Test=37-16 高 由高到低 自左到右 括号优先 低 如:设设 X=2.5,A=7,Y=4.7,求下面表达式的值。求下面表达式的值。 X+(A3)*(X+Y)2-3.5 MOD 2/2 表达式必须写在同一水平上 2 7.2 51.84 103.68 1 0 106.18 106.18 3.5.2 比较运算比较运算 比较运算(关系运算)就是比较大小,结果为真(True) 、假(False)和 Null。 表 3.4 比较运算符 运算符 说明 > 大于 < 小于 >= 大于或等于 <= 小于或等于 = 等于 <> 不等于 运算规则:运算规则: 如果两个操作数都是数值型,则按其大小比较。 如果两个操作数都是字符型,则按字符的 ASCII 码值从左到右一一比较,即首先比较两个字符串的第一个字符, 其 ASCII 码值大的字符串大; 如果第一个字符相同,则比较第二个字符,依此类推,直到出现不同的字符为止。 如果一个表达式是数值型,另一个表达式是不能转换成数值的字符型,则不能进行比较。 关系运算符的优先级相同,运算时从左到右依次进行。 两个操作数中有一个是 Null,则运算结果为 Null。 关系表达式关系表达式:用关系运算符及括号将操作数连接的式子 如: (3>1)=(4<2) ;0=(4<2);18.5<15.4 3.5.3 连接运算连接运算 连接运算就是将两个表达式连接在一起。运算符有: &:用来强制两个表达式作字符串连接。 +:如果两个表达式都为字符串,则将两个字符串连接;若一个为字符串而另一个为数字则进行相加运算。 如下表: 表 3.5 两种连接运算符“&”和“+”的比较 表达式 1 表达式 2 & + “123” “3” “1233” “1233” 123 3 “1233” 126 “123” 3 “1233” 126 “123a” 3 “123a3” 报错 3.5.4 逻辑运算(布尔运算)逻辑运算(布尔运算) 逻辑运算通常用来表示比较复杂的关系, 如: 女工程师, 表示为: 性别= “女” AND 职称=“工程师” 。结果为真(True)和假(False) 。表 3.6 列出了 VB 中所有的逻辑运算符和它们表示的逻辑关系。 表 3.6 逻辑运算符和它们表示的逻辑关系 运算符 说 明 优先级 说 明 例 结 果 Not 逻辑非 1 当操作数为假时,结果为真 Not F T And 逻辑与 2 操作数均为真时,结果才为真 T And F T And T F T Or 逻辑或 3 操作数中有一个为真时,结果为真 T Or F F Or F T F Xor 逻辑异或 4 操作数相反时,结果才为真 T Xor F T Xor T T F Eqv 逻辑等于 5 操作数相同时,结果才为真 T Eqv F F Eqv F F T Imp 逻辑蕴含 6 第一个操作数为真,第二个操作数为假时,结果才为假,其余结果都为真 T Imp F T Imp T F T 如: 计算下面表达式的值: (15>3)And (6>2) 结果为 True (7>3)Or (2>6) 结果为 True Not(2>6)And (6>2) 结果为 True ("a">"A")Xor ("b">"B") 结果为 False (7.8>3.2)Eqv (16.8>7.2) 结果为 True (16.3>7.0)Imp(4.5>19.2) 结果为 False (4.5>19.2)Imp(16.5>7.0) 结果为 True 注意:逻辑运算一般是对关系表达式或逻辑量进行的,但也可以对数值进行运算。在对数值进行运算时,是以数字的二进制值逐位进行逻辑运算的。 如: 10 And 7 10 的二进制数为 1010;7 的二进制数为 0111,对它们逐位进行逻辑运算得到二进制数为 0010,结果是十进制数 2。 3.5.5 运算的优先顺序运算的优先顺序 当一个表达式中出现多种运算符时,即同时出现算术、关系和逻辑时,如何决定运算的次序呢?这就需要考察一下这三类运算符的优先次序。 优先级高的运算符先运算,运算符的优先级相同时,从左向右进行运算。 VB 运算符的优先级见下表: 表 3.7 VB 运算符的优先级 1 2 3 优先级 算术运算符 关系运算符 逻辑运算符 1 -(负号) = Not 2 <> And 3 *,/ < Or 4 > Xor 5 Mod <= Eqv 6 +, >= Imp 7 & 如:用一个逻辑表达式表示满足闰年的条件。如:用一个逻辑表达式表示满足闰年的条件。 解:闰年的条件是: 能被 4 整除,但不能被 100 整除的年份都是闰年。 能被 100 整除,又能被 400 整除的年份是闰年。 用 Year 表示一个年份,则有如下的判断条件: Year Mod 4=0 And Year Mod 100 <> 0 Or Year Mod 400=0 3.6 3.6 流程控制语句流程控制语句 程序的执行就象水在管道中流动,如果不加以控制,只能从上流到下。使用控制结构就可控制程序执行的流程。 在 VB 中, 控制程序执行的基本结构有三种:顺序结构、选择结构和循环结构。程序中所体现出的“智能”就是通过条件判定和循环语句来实现的。 下面我们就要自己动手编程了, 首先学习算法的表示, 再学习三种基本结构。 3.6.1 算法的表示算法的表示 算法算法:即对一个问题的解决方法和步骤。 任何一个问题能否用计算机解决, 一个关键的步骤就是看能否设计出它的算法, 有了合适的算法,再使用合适的计算机语言,就能方便地编写出程序来。 三、算法的特点 (6)有穷性:一个算法必须在执行有穷个计算步骤后终止; (7)确定性:一个算法给出的每个计算步骤,必须都是精确定义的、无二义性的; (8)能行性:算法所要执行的每一个计算步骤,都是可以在有限时间内做完的; (9)输入: 一个算法一般要求有一个或多个输入信息, 这些输入信息是算法所需的初始数据; (10) 输出:一个算法一般要求有一个或多个输出信息,这些信息一般就是对输入信息计算的结果。 四、算法的表示 表示算法的形式很多,如传统流程图、自然语言、N-S 结构化流程图等等。我们用直观、形象的流程图来表示算法。 起止框,表示算法的开始或结束。 处理框,表示初始化或运算赋值等操作。 输入输出框,表示数据的输入输出操作。 判断框,表示根据条件决定程序的流向。 流程线,表示流程的方向。 【例 3.2】 :将某班级中计算机、英语、数学三门课成绩总和大于等于:将某班级中计算机、英语、数学三门课成绩总和大于等于 270 分的学生发给奖学金分的学生发给奖学金 200 元,并显示这些学生的姓名、奖学金。若成绩总和小于元,并显示这些学生的姓名、奖学金。若成绩总和小于 270 分,则显示该学生没有奖学金。当从键盘输入完最后一名学生的成绩后,输入一个特殊符号“分,则显示该学生没有奖学金。当从键盘输入完最后一名学生的成绩后,输入一个特殊符号“#” 。” 。 如何着手编程? 1. 分析问题分析问题,理清解题思路理清解题思路 2. 画出流程图 3. 设计程序界面 4. 编写必要的应用程序 5. 运行、调试 分析: 由键盘输入学生的姓名、三门课的成绩。 判断是否输入了一个特殊符号“#” 。是,程序结束。否,继续执行。 求三门课的总成绩。 判断总成绩是否大于 270 分。否,显示没有奖学金。是,继续执行。 奖学金发 200 元,显示该学生的姓名和奖学金。 再次输入学生的姓名,流程返回到继续执行。 流程图: 图 3.1 例 3.1 流程图 3.6.2 顺序结构顺序结构 顺序结构是一种最简单、最基本的程序控制结构,任何程序必须包含顺序结构。它的特点是,在这个结构内各语句块是按照它们出现的顺序从上到下依次执行的。 语句块 2 语句块 1 图 3.2 顺序结构 例:实现两数 A,B 交换。 T=A A=B B=T 3.6.3 选择结构选择结构 条件判定语句在程序运行中起的是水龙头的作用,只有满足条件的,才会执行某些语句,否则程序将按照另一个流程执行。 图 3.3 选择结构 VB 支持的条件判定结构有 3 种,它们是: If Then If Then Else Select Case 一、If Then结构 3 只选择执行一条语句: If 条件 Then 语句块 1 Else 语句块 2 如:如:If x>=y then x=x+y : sum=sum+x else x=x-y : sum=sum-x 注:这条语句必须在一行中写完 4需要执行多条语句: If 条件 Then 语句块 End If 如:如:If Name = “Text1” Then Text1.text = “欢迎使用“欢迎使用 Visual Basic 6.0 系统”系统” End If 二、二、If Then Else结构结构 使用 If Then Else 结构可以从几个程序流程分支中选择一个执行。 格式: If 条件 then 语句块 ElseIf 条件 2 Then 语句块 2 ElseIf 条件 3 Then 语句块 3 Else 语句块 n End If 流程图: 图 3.4 If Then Else 结构结构 除此之外,条件还可以是下面的形式: Type Of 控制变量 Is 对象类型 它测试某个控制变量是否为某种对象类型,如果是,则条件满足,返回 True;否则条件不满足,返回 False。 例如:例如:If Type Of Listvar Is ListBox Then 表示如果 Listvar 控制是一个列表框类型的控制,则执行 Then 后面的语句块;否则执行下面的语句。 【例 3.4】判断某年是否为闰年。计算闰年的方法是,如果某年份能被判断某年是否为闰年。计算闰年的方法是,如果某年份能被 4 整除并且不能被整除并且不能被100 整除的或者能被整除的或者能被 400 整除的,则该年为闰年。整除的,则该年为闰年。 (教材p92 例 3.5) 分析: 1.输入某年 2.判断是否为闰年 3.显示结果 根据题意, 需七个对象: 在一个文本框中输入某年,单击命令按钮判断是否为闰年,在一标签中显示结果, 按一按钮清空文本框,开始新的判断,两个标签为提示信息,一个窗体。 流程图: 图 3.5 例 3.4 流程图 【例 3.5】求一元二次方程求一元二次方程 ax2+bx+c=0 的根。的根。 (教材p94 例 3.7) 分析:1.输入方程系数 a,b,c 2.求出 D=B2-4AC 3.判断 D<0 , 是求出两个复根;否则判断 D=0,是求出两个相等的实根,否求出两个不相等的实根。 4.显示结果 根据分析,需 11 个对象:用三个文本框输入系数 A、B、C,计算按钮求出 D 并判断,得出结果,在两个标签上显示方程和结果,清空按钮,三个标签作提示,一个窗体。 流程图: 图 3.6 例 3.5 流程图 请思考:若 A、B、C 三个系数不一定能构成一元二次方程呢? 三、三、Select Case 结构结构 用来实现多分支选择。 对于多种选择来说, 效率比条件语句更高, 更容易维护和阅读。 格式:Select Case 测试变量(或测试表达式) Case 表达式列表 1 语句块 1 Case 表达式列表 2 语句块 2 Case Else 语句块 n End Select 其中: 测试变量:称为 Case 变量,它可以是一个变量、表达式或常量,可以是数值型或字符串型。 表达式列表:可以是下面三种形式之一: 表达式 表达式 To 表达式 Is 比较运算符表达式 To,Is 是关键字,后两种形式可用来设定值的范围是关键字,后两种形式可用来设定值的范围 例如:Case 1 To 10 测试变量的值落在 1 到 10 范围内,则匹配; Case Is>100 测试变量的值大于 100,则匹配; Case 子句中允许出现多个表达式子句中允许出现多个表达式 例如: Case 1 to 5,12,Is>Min 表示测试变量的值在 1 到 5 范围内,或者 12,或者大于 Min,均匹配。 Case 子句中的表达式列表允许是字符串子句中的表达式列表允许是字符串 例如: Case “Xie” , “Li”TO “Wang” ,Name$ 表示只要测试变量的值与 Xie 匹配或落在 “Li” TO “Wang” 之间或与 Name$的值匹配,均认为匹配成功。 表达式列表的数据类型应与测试变量值的类型一致,否则将强制转换为测试变量值的数据类型。 执行流程: 图 3.7 Select Case 结构 【例 3.6】通过一个文本框读入一个学生成绩,然后打印出它的等级。通过一个文本框读入一个学生成绩,然后打印出它的等级。 (教材P93 例 3.9) 分析的流程图: 图 3.8 例 3.6 流程图 四、选择嵌套四、选择嵌套 在一个选择结构中可以又出现另一个选择结构,这称为选择结构的嵌套,如: IF 条件 THEN 语句块 1 else 可包含另一个选择语句 语句块 2 endif 注意:ELSE、ENDIF 总是与它上面离它最近的 IF 语句配对。 (SELECT CASE 语句 与 IF 语句类似) 例:有一个函数: 1 (X>0) Y= 0 (X=0) -1 (X<0) PRIVATE SUB FORM_CLICK() DIM X AS SINGLE DIM Y AS SINGLE X=VAL(TEXT1) IF X>=0 THEN IF X>0 THEN Y=1 ELSE Y=0 ENDIF ELSE Y=-1 ENDIF PRINT “y=”;y ENDSUB 3.6.4 循环结构循环结构 计算机可以为我们不厌其烦地重复做某一项工作成千上万,这就是循环控制的功能。Visual Basic 支持的循环结构有: Do Loop For Next While wend 一、Do LOOP 结构 用 Do 循环重复执行一语句块,且重复次数不定。 1. Do Loop 语句有语句有 4 种形式种形式: DO WHILE 循环条件 语句序列 LOOP 图 3.9 do while loop DO 语句序列 LOOP WHILE 循环条件 图 3.10 do loop while 结构 DO UNTIL 循环条件 语句序列 LOOP 图 3.11 DO UNTIL LOOP 结构 DO 语句序列 LOOP UNTIL 循环条件 图 3.12 DO LOOP UNTIL 结构 2. 注意注意: 循环体内必须存在这样一条语句来影响测试条件,使得测试条件的逻辑值发生变化,否则这个循环就变成了死循环。 3. 举例:举例: 【例 3.7】按下式累加求自然对数的近似值:按下式累加求自然对数的近似值: !1! 41! 31! 21! 111Ne 直到最后一项的值小于直到最后一项的值小于 10-6为止。 (为止。 (教材 P103 例 3.16) 分析:本题涉及累加和连乘累加和连乘,注意两个定式: 累加定式: 累加器 SUM=0 语句序列 循环体 SUM=SUM+ SUM 为累加值 循环体 ITEM 为连乘结果 流程图: 图 3.13 例 3.7 流程图 二、二、For Next 结构结构 执行多少次循环时,最好使用 For Next 结构 连乘定式: ITEM=1 语句序列 ITEM=ITEM* 在知道要 格式:格式: For 循环变量 = 循环变量初值 To 循环变量终值 Step 增量 循环体 Next 循环变量 数值型变量。 增量值为负值,则初值应大于终值,循环变量递减。 说明:说明: 1循环变量的初值、终值和步长都必须是数值型表达式或 2增量值为正值,则初值应小于终值,循环变量递增; 增量值为 1,则 Step 子句可以省略,循环变量递增 1; 流程:流程: :步长为正 举例举例: 【例 3.8 图 3.14 FORNEXT 结构结构 】求从求从 1 加到加到 100 的累加和。的累加和。 三、三、While wend结构结构 OP 结构类似, 功能与 DO WHILE LO格式:格式: While 测试条件 语句块 Wend 举例举例: 例【3.9】有一段程序: Sub Form_click ( ) Dim Timeleft As Integer eleft Timeleft 1 意意: 循环体内必须存在这样一条语句来影响测试条件, 使得测试条件的逻辑值发生变。 Timeleft = 5 While Timeleft >= 1 Print Tim Timeleft = Wend End Sub 注注化,否则这个循环就变成了死循环 四、从循环中退出四、从循环中退出 束就可跳语句可以直接推出 For 循环、Do 循环。 1有时在程序中利用循环查找某个数据,当数据找到后,不需要等到循环结以出循环以节省时间。使用 Exit 格式:格式: Do While | Until 循环条件 语句序列 Exit Do 语句序列 Loop For 循环控制变量=初值 TO 终止值 Step 增量 语句序列 Exit For 语句序列 Next 循环控制变量 间寻找一个等于变量 J 的数字。 放着用户输入的某个数字 to 658 next 3注意:注意:只跳出本层循环。 五、循环嵌套五、循环嵌套 环体外转到循环体内,也不允许从一个内循环转到另一个与之并列的循环体内,如下图: 2 举例举例 【例 3.10】在 1658 之 假设变量 J 中存 dim I as integer for I=1 if I=j then exit for 循环允许嵌套,但内外循环不可交叉,程序可以从循环体内转到循环体外,不允许从循 正确 错误 图 3.15 循环嵌套 举例:举例: 【例 3.11】读入读入N后,求算式后,求算式: 的值。的值。(教材 P99 例 3.11) 3.7创建自己的数据类型创建自己的数据类型 合成一个有机整体,就像在 Excel、数据库中讲述的表单同类型、互有联系的数据项组成,便于整体的处理这类数据。 的标准数据类型外,还允许用户自己定义数据类型,它由若干后使用的原则, 自定义类型通过 Type语句实现格式格式 有时希望将不同类型的数据组的“记录记录”是由不 在 VB 中,除了前面介绍个标准数据类型组成。 自定义数据类型必须遵循先定义来。 : Type 自定义类型名 元素名 1 As 类型 元素名 2 As 类型 元素名 n As 类型 End Type 说明说明类型中的一个成员。 起的名称。 旦定据类型一样引用使用。 注意注意 自默认的是全局变量 Public。 : 元素名:表示自定义 类型: 标准类型 自定义类型名:用户为新定义的数据类型所一义了自定义类型的数据类型之后,就可以像标准数:定义类型必须在标准模块(标准模块(.BAS)中定义, 定义类型中的元素类以有字符串,但必 自型可须是定长字符串。 【例 .12】【例 .12】 0 ' 姓名 ' 性别 shuX As Single ' 数学成绩 As Single ' 语文 Y As Single ' 外语 wuL As Single ' 物理 tiY As Single '体育 '奖惩标志 End Type Type 为类型,也可以说是一种自定义类型,所谓枚举类型是通过列相关的名称与常数数值相关连, 这样在使用中可以使用名称而不使一、枚举类型的声明 一、枚举类型的声明 3 3 定义一个学生成绩管理信息的数据类型定义一个学生成绩管理信息的数据类型 Type XstestType INo As integer ' 编号 integer ' 学号 iXh As strName As String*2 strSex As String*1 yuW wai huaX As Single '化学 sTotal As Single '总分 fTag As Boolean Dim dona as xstest3.8 枚举枚举 枚举,也称枚举声明将一系用具体的数值,便于辨识。 格式: 格式: Public|Private Enum 名称 达式 成员名称=常数表 达式 成员名称=常数表 E 注意 : 注意 : VB 的枚举类 常数表达式并非必须,若省略的话默认枚举中的第一个常数为 0,以后依次为 1,2,。 Enum 语句只能在模块(.bas)级别中出现。 【例 3.13型【例 3.13型 Days,使得常数,使得常数 Sunday 代表数值代表数值 0,Monday 代表数值代表数值 nd Enum型中的常数数值通常被转换成长整数。 】 定义一个枚举类】 定义一个枚举类1,Saturday 代表数值代表数值 6。 Public Enum Days Sunday Monday Tuesday Wednesday Thursday Friday Saturday End Enum 数组织进枚中,就可以在不同的上下文环境中使用统一的常数名称。 二、枚二、枚1引引,一般应在成员名称前指出枚举名。 如: Day1.Saturday , WorkDays.Saturday 由于两个 Saturday 分属不同的枚举,因此它们的常数值可以是不一样的。 量量 声明了枚举类型后, 就可以定义枚举类型的变量, 当然也就可以使用该变量储存的在上述的枚举定义中,省略了常数表达式,因此系统默认的只是 0,1,。通过将相关的常举类型举类型的使用举类型的使用 用单个常数用单个常数 当引用单个常数时,为了避免模糊引用 例2 声明枚举变声明枚举变枚举常数的数值。 【例 3.14】 一个使用枚举变量的例子。一个使用枚举变量的例子。 3.9数组数组 数组是使用一个名字的一组相同类型变量,数组中的每个元素都拥有唯一的索引号来标在 VB 中有两种类型的数组: 固定大小的数组 (静态数组: 它总是保持同样的大小) ,以及在运行时大小可以变化的动态数组。 一、一维数组一、一维数组 识自身。1声明格式声明格式: D 其中其中 im|Public|Static 数组名 (下标) As 类型, 数组名 (下标)As 类型 : 数组名:应是合法的变量名。可同时声明多个数组,各数组之间用逗号分割。 下标必须是常数,不允许是表达式或变量。 下标的形式为 下界to上界,下界必须小于上界,下标下界最小可为数组的中,维的大小,即 4) W1%是一个一维整型数组,有 181 个元素。 Dim Sums(20) As Double 21 个元素 -32768,最大为+32767。下界可以省略,省略时系统默认值为0,下界并非一定是0,而且可以改变的。在VB的窗体层或标准模块层可以用 Option Base n 语句重新设定数组的默认下界。每一存储单元的多少为:上界下界+1。 当 As 类型缺省或数据类型为 Variant 时,都是变体类型。 例如例如:定义数组Dim W1%(-36 To 14 Dim WA As String*30 WA 是一个定长字符串变量,其长度为 30 Public Counters(2 to 14) As Integer 13 个元素 Static A1(3) As Integer,b1(4) As Sring 同时声明两个数组 22引用格式: 引用格式: 现的数组名及下标表示与在程序中出现的数组名如: nteger '声明了x数组,有11个数组元素 x(10)=100 ' 对数组x的第11个数组元素x(10)赋值 【例3.15 数组名(下标) 注意: 在数组声明语句中出及下标表示是不同的。例 Dim x(10)As I】 编一个统计】 编一个统计 50 个学生某门课平均成绩的程序个学生某门课平均成绩的程序 。 入50个学生的成绩 (2) 累加成绩总和 (3) 求出平均成绩 (4) 输出结果。 分析: (1) 输二、多维数组二、多维数组 声明格式声明格式: Dim 数组名(下标1,下标2)As 类型 其中其中: 下标的个数决定了数组的维数,VB最多允许60维数组。 多维数组的大小等于各维大小的乘积。 举例:举例: 定义多维数组的例子: rry,第二维下标范围是04,大小5,整Arry数组的元素如下: 4) , iArry(3,0) ,iArry(3,1) ,iArry(3,2) ,iArry(3,3) ,iArry(3,4) , 2,2,3)As String *20 或 Dim W$(2,2,3)*20 声明了一个定长字符串组成的三维数组,第一维的下标范围是02;第二维的下标范围也是02;第三维的下标范围是03,数组W共有3× ×4=36个元素,每个元素得字符串长度是20字符长度。 三、动态数组三、动态数组数组太大,浪费内存太小又不够使用,有时候确实令人难以预料。在VB中引入了动态 标, 如:Dim 格格1Dim iArry(0 To 3,0 To 4)As Long 或 Dim iArry(3,4)As Long 或 Dim iArry&(3,4) 上面三个句子都声明了一个相同的、长型数据类型的二维数组iA第一维下标范围是03,大小是4;个二维数组的大小是4×5=20。i iArry(0,0) ,iArry(0,1) ,iArry(0,2) ,iArry(0,3) ,iArry(0,4) , iArry(1,0) ,iArry(1,1) ,iArry(1,2) ,iArry(1,3) ,iArry(1,4) , iArry(2,0) ,iArry(2,1) ,iArry(2,2) ,iArry(2,3) ,iArry(2, 2 Dim W(3 在程序设计时,数组到底应该多大才合适?声明的空间;而数组,这样程序在运行时就具有了改变数组大小的能力。 动态数组在声明数组时不给出数组的大小 (省略括号中的下iSS%() ) ,当要使用它的时候,再随时用ReDim语句重新指出数组的大小。 式:式: ReDim preserve 数组名(下标1,下标2) 中中: 其其 动态数组的声明并非一定要在窗口级,可以在事件过程内以至模块内。而ReDim则可以在需要的地方出现,但必须在声明语句之后。 静态数组声明中的下标只能是常量,而动态数组ReDim语句中的下 标可,也可以是有了确定值的变量。 im来改变数组的大小,也可以改变数组的维数据类型。 eDim语句都会使原来数组的值丢失, 若要保留原数组中的值,im后加Preserve参数。使用了Preserve,组最后一维的大小,前面几维的大小就不能改变了。 此例中,在窗口级声明了数组sArray为可变长数组,在Form_Load()事件函数中重新指明二维数组的大小为5行9列。 注 【注 【以是常量 在过程中可以多次使用ReD数,但不允许改变数组的 重复使用R必需在重复定义数组的语句ReD就只能改变数 举例:举例: Dim sArray()As Single Sub Form_Load() ReDim sArray(4,8) End Sub 意意: 例3.16】 ReDim语句和语句和Preserve语句的使用。语句的使用。(教材P47例2.12) 在使用时必须以数组元素为单位进行, 通常用循环遍历每个元素,逐一处理。 数组元素的输入可以通过各种途径来完成数组比较小时,可以用赋般可通过循环语句或Visual Basic提供的输入函数来完成。 四、数组的基本操作四、数组的基本操作 数组在声明时是一个整体, 1数组元素的输入数组元素的输入 ,当值语句来完成;一举例 1举例 1 用赋值语句用赋值语句用赋值语句将某学生的五门课考试成绩用数组来存储, 该生五门课的成绩分95。 5)As Single '定义一个有五个元素的一维静态 数组 入,有两种情况:一是通过循环赋予固定的数对数组的所有元素进行清零;另一种是与VB的输入函数结合起来,由用户从窗口键入。 I)=0 上述语句相当0: iCnt(3)=0: :iCnt(13)=0: iCnt(14)=0 PUTBOX 函数函数 入时显示: “输入i,j的值” ,其中i、j的值在变化 ,对于大量数据的输入,为了便于编辑,一般不用InputBox函数,别为90,88,76,85, Dim sS1(1 To sS1(1)=90 sS1(2)=88 sS1(3)=76 sS1(4)=85 sS1(5)=95 通过循环语句对数组进行输字,如初始化,举例 2举例 2 赋予固定的数字赋予固定的数字 Dim iCnt(2 to 14) As Integer For I=2 to 14 iCnt( Next I 于给数组元素赋值如下: iCnt(2)= 举例 3 举例 3 用用 IN For i=0 To 3 For j=0 To 4 '输 sB(i,j)=InputBox("输入"&i&","&j&"的值") Next j Next i 当然而是通过在文本框上加某些技术处理来实现。 组法,这里主要学习通过调用Print方法的实现。方法是面对图像框和打印机,如我们在例例子。 0 To 4 ) Print '输出一个空行 Next i 图 3。17 输入函数的输入窗口 动态一维数组sName,下标范围用键盘指 er, i As Integer 不定长字符串数组 请输入零件数(零件数是一个正整数)", "输入窗口") 见图3.17 iName(iLjs) '定义数组的大小,用变量作参数 2数组的输出数组的输出 数的输出有多种方向象的,能够使用Print方法的对象有窗体、3.16中就使用了用Picture对象的输出, 下面再举一个用窗体输出数组的 举例 4 举例 4 输出方阵sC中的下三角元素,见图3.16。 For i= For j=0 To i sC(i,j)=i*5+j Form1.Print sC(i,j Next j ;"" 图 3。16 打印下三角 举例 5 举例 5 将某种产品的所有零件名称,用数组来存储并输出显示。定义一个定。 Option Explicit '强制类型说明 Option Base 1 ' 设置数组默认下界为1 Private Sub Form_Click() Dim iLjs As Integ Dim iName() As String 声明动态数组iName为一个 iLjs = InputBox(" '用输入函数输入零件数目, ReDim For i = 1 To iLjs Next i For i Pr Next运行程序:在输入零件数窗口输入3.18窗体中所示的内容,最后显示的结果如图3.18所示。 图 3.18 输出结果 五、控件数组五、控件数组是由一组相同的控件组成,它们共用一个控件名,具有相同的件数组时,系统给每个元素赋予一个唯一的索引号(Index),似操作的场合,控件数组共享同样的事件过程。例如,件数组中的任意命令按钮单击时,调用的事件过程如下: ) 并可在对应的过程 ub cmdName_Click(Index As Integer) iName(i) = InputBox("请输入零件的名称", "输入窗口") End Sub = 1 To iLjs int iName(i) '用Print方法输出数组 i 6;在输入零件名称窗口输入如图 1概念概念 控件数组属性。但建立控通过属性窗口的Index属性,可以知道该控件的下标是多少。控件数组适用于若干个控件执行相对上述控 Private Sub cmdName_Click(Index As Integer End Sub 通过按钮的属性Index可以确定用户按了哪个按钮,中进行有关的编程。 例如:例如: Private S (Index).Caption="第四个命令按钮" f 建立 在在 步骤步骤 第“是”按钮, 就建立了一个控件数组元素, 这时系统就自动将第一个按钮Index属性设置为0, 而将复制的第二个按钮的Index属性设置为1, 继续进行下去,经过若干次“粘贴”操作,就可建立所需的控件数组元素。 进行事件过程的编码。 【 【例 If Index=3 then cmdName End i End Sub 2. 控件数组的建立控件数组的建立 控件数组有两种方法: 设计时建立设计时建立 : 在窗体上画出某个控件,然后进行该控件名的属性设置,这就建立了一个元素。 选中该控件,进行“复制”和“粘贴”操作,系统会弹出一个对话框,提示: “已经有一个控件 控件名 , 创建一个控件数组吗?” 。 单击 3.17】 建立一个令按钮的控数组,单击每个命令按钮时,能分别显示图形直线、矩形、圆或结束操作。建立一个令按钮的控数组,单击每个命令按钮时,能分别显示图形直线、矩形、圆或结束操作。 (教材P51例8) 表 3.1 控件属性设置 默认控件名 设置的控件名(Name) 下标(Index) 标题(Caption) 含有含有 4 个命件个命件2.1Command1 mand1 Command1 cmdShape cmdShape cmdShape cmdShape 0 1 2 3 直线 矩形 画圆 无定义 Command1 ComPicture1 Form1 picShape Form1 空白 无定义 退出 设计时建立控件数组的例子 在在 该控件的Index属性值为0, 也可以设置该控,这就建立了数组的第一个元素。 在编程时通过Load方法添加若干控件数组元素,也可以通过Unload方法删除某个添加的控件数组元素。 组通过Left和Top属性确定其在窗体中的位置,并将Visible属性设置为True. 【例3.18运行时建立运行时建立 步骤:步骤: 在窗体上画出某控件, 设置件名,以表明该控件是一个控件数组 每个新添加的控件数】实验教程中实验一示例】实验教程中实验一示例 2 3.10 常用算法常用算法 3.10.13.10.11. : 计数与求和计数与求和 累加定式累加定式 累加器SUM=0 循环体 语句序列 SUM=SUM+累加项 SUM为累加值 当累加项为1时,即计数。 2举例:举例: 【例 3.19 】求 1+2+3】求 1+2+3,当累加和超过 2000 时,显示累加和及求和项数. ,当累加和超过 2000 时,显示累加和及求和项数. 3.10.2 3.10.2 出符合条件的解。 穷举法穷举法 基本思路: 一一列举各种可能的情况,选【例 3.20】百鸡问题: “鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值】百鸡问题: “鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问鸡翁、母、雏各几何?” 钱一;百钱买百鸡,问鸡翁、母、雏各几何?” 只,鸡雏为Z只 由题意得条件: 5*X+3*Y+Z/3=100 X+Y+Z=100 况: 1<=X<=20 1<=Y<=33 1 =Z<=100 在可能情况中进行穷举。 3.10.3 3.10.3 假设将需排序的数放在一维数组中,要求从小到大排序 1该有序表成为一新的、数据增1标:1 2 3 4 5 6 7 8 J I 定:66 37,89,23,1,9,3,43 9,3,43 分析:设鸡翁为X只,鸡母为Y 可能情 < 排序排序 直接插入排序法:直接插入排序法: 算法:将一新数据插入到一有序表中,使的有序表。 如:一组数组A:66,37,89,23,1,9,3,43 下 先假 有序 J I 无序 第一趟:37,66 89,23,1,9,3,43 第二趟:37,66,89 23,1, . . . 第七趟: 1,3,9,23,37,43,66,89 【例 3.21】用直接插入排序法从小到大排序一组数。 】用直接插入排序法从小到大排序一组数。 2 关键字:监视哨、移位、插入 冒泡排序法:冒泡排序法: 算法:通过对一无序表N个数相邻两数进行比较,将大的交换到后面,就将一个数沉下去,至多经N-1趟后有序。 :66,37,89,23,1,9,3,43 :37,23,1,9,3,43,66,89 这样一趟如:一组数组A 下标:1 2 3 4 5 6 7 8 第一趟:37,66,23,1,9,3,43,89 第二趟 第七趟:1,3,9,23,37,43,66,89 【例 3.22】用冒泡排序法从小到大排序一组数。】用冒泡排序法从小到大排序一组数。 3序表表尾。 :66,37,89,23,1,9,3,43 标:1 2 3 4 5 6 7 8 定: 66,37,89,23,1,9,3,43 第二趟:1,389,23,66,9,37,43 第七趟:1,3,9,23,37,43,66,89 【例 选择排序法:选择排序法: 算法:将无序部分中最小的数据选择出来,附加在有如:一组数组A 下 先假 有序 无序 第一趟:137,89,23,66,9,3,43 3.23】用选择排序法从小到大排序一组数。】用选择排序法从小到大排序一组数。 3.10.4 3.10.4 查找查找 1 顺序查找顺序查找 算法:从第一个元素开始逐一比较,直到末尾。 假设A数组中存放N个整数,要找X。 【例 3.24】用顺序查找的方法查找某数X。】用顺序查找的方法查找某数X。 2 折半查找折半查找 算法:设三个指示器TOP指向有序表表尾,求出 ; 小为后半部分,分,更改范围; 若TOP>BOT 则没找到。 OP M:MIDDLE B:BOTTOM 43,66,89 T M B >a(middle)故在后半部分,则TOP指向37,MIDDLE 指向43 43=a(middle),则找到 (查找对象必须已有序,假设按从小到大排序) 表表头,BOT指向有序 MIDDLE=(TOP+BOT) 2 ,X为要找的数。 A(MIDDLE)与X比较,若相等,则找到 若 X>A(MIDDLE) ,则查找范围可缩更改范围; 若X<A(MIDDLE) ,则查找范围可缩小为前半部 直到X=A(MIDDLE) ,则找到, T:T 设一有序数组A:1,3,9,23,37, 找43,因43【例 3.25】用折半查找的方法查找某数X。】用折半查找的方法查找某数X。 3.3.1 a21+b21 a22+b22 a2n+b2n . 10.5 10.5 矩阵运算矩阵运算 矩阵的加法矩阵的加法 设有两个M*N矩阵A,B,那么矩阵A与B之和记作A+B,规定为: A+B= a11+b11 a12+b12 a1n+b1n am1+bm1 am2+bm2 amn+bmn 只有当两个矩阵的行数相同且列数也相同(同型矩阵)时,这两个矩阵才可以相加。 【例 3.26】设有矩阵A,B,均为 2*2 矩阵,计算A+B的值。 】设有矩阵A,B,均为 2*2 矩阵,计算A+B的值。 2.2. 是一个S*N矩阵,A*B=C,C是一个M*N的矩 如: B= B11 B12 B13 B21 B22 B23 C=A11*B11+A12*B21 A11*B12+A12*B22 A11*B13+A12*B23 A21*B11+A22*B21 A21*B12+A22*B22 A21*B13+A22*B23 A31*B11+A32*B21 A31*B12+A32*B22 A31*B13+A32*B23 【例 3.27矩阵相乘 矩阵相乘 设A是一个M*S 矩阵,B阵 S CIJ= AIK BKJ K=1 A= A11 A12 A21 A22 A31 A32 】设有 4*2 矩阵A,2*3 矩阵B,计算A*B的值。 】设有 4*2 矩阵A,2*3 矩阵B,计算A*B的值。 第四章 常用控件(二)第四章 常用控件(二) 本章主要内容: 对这些控件实例讲解,体现程序设计的三种基本结构 4.1 选择按钮选择按钮(OptionButton)和复选框和复选框(Checkbox) ,也有着明显的区别 选择按钮、复选框、框架和计时器控件。通过选择按钮和复选框选择按钮和复选框都是选择类型的控件选择类型的控件,它们有许多相同的地方选择按钮:选择按钮:常以数组形式出现,有且只有一个选项被选中 OptionButton1OptionButton2OptionButton3 复选框:复选框:用户可以选择其中的一个或多个,也可以一个不选。 4.1.1 常用属性常用属性 Caption:设置标题内容Value: 1 选择按值CheckBox1CheckBox2 有三种选择它们方法:鼠标、键盘和程序代码 钮 设置值 状态 False 0 未选定 True 1 选定 2 复选框 值 状态 设置值 Unchecked 0 未选定 Checked 1 选定 Grayed 2 禁止使用 4.1.2 常用事件常用事件 Click: 二者均支持本事件 Dbclick: 选项按钮支持本事件。可双击 OptionButton3 试试 4.1.3 实例实例 【例 4.1】 创建一个应用程序,通过对文本控制的选择,改变标签中文本“VB程序设计教程”的表现形式。文本控制选择有两种类型:粗体、斜其中,一类是字体样式,有普通、体、粗斜体四种类型,四种字体样式只能选择其中的一种表现形式;另一类是文本的表现效果,有删除线和下划线两种选择,也可以用户可以从中任意选择其中一种或两种表现效果,不进行任何选择。 分析:字体样式选择字体样式选择是在四种可选字体类型中任任符合选项使用条件 文本文本的表现效果效果有两种项中一个一个、两不选两不选,符合复选框使用条件 应用程和属性设置 型 称 性 性 值 选一种选一种,按钮控件的选项,可从选任意选择个,或任意选择个,或控件的序所使用的窗体控件及其 对 象 类对 象 名对 象 属属窗体(Form) Form1 Caption 字体控制 Caption VB 程序设计教程 LblChar Alignment 2(Center) LblStyle Caption 字体样式 标签(Label) LblEffect Caption 字体效果 OptStyle(0) Caption 普通 OptStyle(1) Caption 粗体 OptStyle(2) Caption 斜体 选项按钮 (OptionButton) OptStyle(3) Caption 粗斜体 ChkEffect(0) Caption 删除线 复选框 (CheckBox) ChkEffect(1) Caption 下划线 命令按钮 (CommandButton) CmdExit Caption 退出 4.2 框架控件(框架控件(Frame) 成可标识的控件组。 框架中的对象将随着框架移动,而其中对象的位置也是相对于框架的。 框架控件可以作为其他控件对象的容器作为其他控件对象的容器, 并将它们分4.2.1 常用属性、方法和事件常用属性、方法和事件 e tion 用 Frame 控件的常用属性有:NamCapEnabled 指定 Frame 控件是否可 使用 Frame 控件,一般是将其他控件分组。而很少需要响应它的事件以及调用该控件的方法,尽管它也支持许多对象共用的方法和事件 上创建控件上创建控件 他控件他控件: 首先单击工具箱中的工具图标,光标在框架上变成小十字 利用现有的控件将它们分组:利用现有的控件将它们分组: 选定框架控件,将剪贴版上的控件粘贴到 Frame 控件上 4.2.3 4.2.2 在框架在框架 先建框架,后建其中的控件 在框架控件上创建其在框架控件上创建其然后在框架上拉出一个矩形,即可在框架上创建一个控件 选中要分组的控件,将它们剪切到剪贴板上 实例实例 【例 4.3】 在窗体上创建两组选项按钮,分别用于选择所在年级和选择性别。 4.3 定时器控件定时器控件(Timer) 定时控件定时控件(Timer)是一种 按一定时间间隔触发事件按一定时间间隔触发事件 的控件 作用: 使应用程序按照一定的时间间隔执行某些操作 一般用于检查系统时间,判断是否该执行某项任务,也可用于后台处理的工作 常用属性常用属性Interval 属性:属性:时间间隔属性 器器4.3.1 Enabled 属性:属性:有效性属性 作用: 设置触发定时器两个事件的毫秒数,该时间间隔并不一定十分准确 缺省值为 0,表示定时器不起作用 4.3Tim事件事件 定时器只有一个 Timer 事件,用来完成应用程序需要定时完成的任务 4.3.3 实例实例 Interval 属性的取值范围为 0 到 64767 之间 .2 常用事件常用事件 er【例 4.4】 创建一个数字闹钟序,在窗体上实时显示当前系统的时间,单击窗体应用程可设置告警时间,当设定时间到时会弹出时间到对话框,并有声音提示。 的工程,在缺省的窗体 Form1 上,添加两个标签控件和一个定时器控件。 各控件及其属性设置 属性值 为了实时获取系统当前的时间,应用程序中需要用到定时器控件。 创建一个新 应用程序中控件类型 属性项 Name Timer1 定时器(Timer) Interval 1000 Name LblTip 标签 1(Label) Caption 当前系统时间: 标签 2(Label) Name LblTimer Caption “”(空) BorderStyle 1(固定单线框) 在定时器 Timer1 的 Timer上:事件过程中添加如下代码,将当前系统时间显示在标签LblT Sub Timer1_Timer() raIf alarm_time = "" Then Exit Sub If Time$ >= alarm_time And Not alarmsounded Then soundname$ = App.Path + "mcitest.wav" X% = sndplaysound(soundname, snd_async Or snd_nodefault) MsgBox "time out!" alarmsounded = True ElseIf Time$ < alarm_time Then alarmsounded = False End If End Sub Sub Timer1_Timer() raIf alarm_time = "" Then Exit Sub If Time$ >= alarm_time And Not alarmsounded Then soundname$ = App.Path + "mcitest.wav" X% = sndplaysound(soundname, snd_async Or snd_nodefault) MsgBox "time out!" alarmsounded = True ElseIf Time$ < alarm_time Then alarmsounded = False End If End Sub 其中,Time 是一个时间函数,获取当前系统的时间。 imerPrivateStatic ala msounded As Boolean LblTimer.C ption = Time$ PrivateStatic ala msounded As Boolean LblTimer.C ption = Time$

注意事项

本文(VB60自学教程)为本站会员(桔****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.