VB最全课件_教程【完整版】

上传人:re****.1 文档编号:592162682 上传时间:2024-09-19 格式:PPT 页数:333 大小:2.86MB
返回 下载 相关 举报
VB最全课件_教程【完整版】_第1页
第1页 / 共333页
VB最全课件_教程【完整版】_第2页
第2页 / 共333页
VB最全课件_教程【完整版】_第3页
第3页 / 共333页
VB最全课件_教程【完整版】_第4页
第4页 / 共333页
VB最全课件_教程【完整版】_第5页
第5页 / 共333页
点击查看更多>>
资源描述

《VB最全课件_教程【完整版】》由会员分享,可在线阅读,更多相关《VB最全课件_教程【完整版】(333页珍藏版)》请在金锄头文库上搜索。

1、第第1章章 Visual Basic 编程环境编程环境沈阳理工大学应用技术学院沈阳理工大学应用技术学院0.本章内容本章内容n 可视化与事件驱动型语言可视化与事件驱动型语言n Visual Basic 的启动与退出的启动与退出n主窗口主窗口n其他窗口其他窗口 2 2 1.可视化与事件驱动型语言可视化与事件驱动型语言n可视化界面设计可视化界面设计n VB提供的可视化设计平台,把提供的可视化设计平台,把Windows界面设计的复杂性界面设计的复杂性“封装起来。封装起来。程序员不必再为界面的设计而编写大量程程序员不必再为界面的设计而编写大量程序代码,只需用系统提供的工具在屏幕上序代码,只需用系统提供的

2、工具在屏幕上“画出各种对象,程序员所需要编写的画出各种对象,程序员所需要编写的只是实现程序功能的那局部代码。只是实现程序功能的那局部代码。n事件驱动的编程机制事件驱动的编程机制n VB通过事件来执行对象的操作。由用户通过事件来执行对象的操作。由用户操作引发某个事件来驱动完成某种特定的操作引发某个事件来驱动完成某种特定的功能,或由事件驱动程序调用通用过程来功能,或由事件驱动程序调用通用过程来执行指定的操作执行指定的操作3 3 n启动启动VB的方法的方法n(1) 在在“开开始始菜菜单单的的“程程序序组组中中用用鼠鼠标标单单击击“Microoft Visual Basic6.0n(2) 用用鼠鼠标标

3、双双击击桌桌面面上上的的“Microoft Visual Basic 6.0快捷图标快捷图标n(3) 在在“运行中,输入运行中,输入VB 程序所在的路径程序所在的路径n(4) 进入进入VB文件夹双击文件夹双击VB 程序文件程序文件.exenVB启启动动后后,首首先先显显示示“新新建建工工程程对对话话框框,缺缺省省状状态态下下“新新建建工工程程对对话话框框的的选选项项为为“标标准准EXE ,是典型的应用程序。,是典型的应用程序。2.Visual Basic 的启动与退出的启动与退出4 4 n退出退出VBn 单击单击“关闭按钮,或选择关闭按钮,或选择“文件菜单文件菜单中的中的“退出命令或按退出命令

4、或按ALT+Q2.Visual Basic 的启动与退出的启动与退出5 5 3.主窗口由标题栏、菜单栏和工具栏组主窗口由标题栏、菜单栏和工具栏组成成 6 6 菜单栏工具栏代码窗口工具箱窗体窗口立即窗口监视窗口工程窗口属性窗口布局窗口标题栏n标题栏标题栏n 屏屏幕幕顶顶部部的的水水平平条条,显显示示窗窗口口的的标标题题名名字字和和工工作作模模式式。 VB有有三三种种工工作作模模式式:设计模式、设计模式、 运行模式、中断模式。运行模式、中断模式。n菜单栏菜单栏n 提提供供了了开开发发、调调试试和和保保存存应应用用程程序序所所需需的的工工具具。菜菜单单栏栏中中有有13个个菜菜单单项项,即即“文文件件

5、、“编编辑辑、“视视图图、“工工程程、“格格式式、“调调试试、“运运行行、“查查询询、“图图表表、“工工具具、“外外接程序、接程序、“窗口、窗口、“帮助帮助 。3.主窗口由标题栏、菜单栏和工具栏组主窗口由标题栏、菜单栏和工具栏组成成 7 7 n工具栏工具栏n 它它以以图图标标按按钮钮的的形形式式提提供供了了常常用用的的菜菜单单命命令令。单单击击工工具具栏栏上上的的按按钮钮,那那么么执执行行该该按按钮钮所所代代表表的的操操作作。按按照照缺缺省省规规定,启动定,启动VB之后显示之后显示“标准工具栏。标准工具栏。3.主窗口由标题栏、菜单栏和工具栏组主窗口由标题栏、菜单栏和工具栏组成成 8 8 4.其

6、他窗口其他窗口n窗体设计器窗口窗体设计器窗口9 9 窗体设计窗口窗体名窗体文件名 简称窗体,它可以作为自定义窗口。用户可以在窗体中添加控件、图形和图片来创立所希望的外观。每个窗口必须有一个的窗体名字,建立窗体时缺省名为Form1,Form2, . . .。 应注意窗体名即Name属性和窗体文件名的区别 4.其他窗口其他窗口n工程资源管理器窗口工程资源管理器窗口n工程是指用于创立一个应用程序的文件的工程是指用于创立一个应用程序的文件的集合。工程资源管理器列出了当前工程中集合。工程资源管理器列出了当前工程中的窗体和模块的窗体和模块n三个按钮:查看代码,查看对象,切换文三个按钮:查看代码,查看对象,

7、切换文件夹件夹n共有六种文件类型:共有六种文件类型:n窗体文件窗体文件(.frm)n程序模块文件程序模块文件(.bas)n类模块文件类模块文件(.cls)n工程文件工程文件(.vbp)n工程组文件工程组文件.vbgn资源文件资源文件(.res) 1010 4.其他窗口其他窗口n属性窗口属性窗口n属性是指对象的特征,属性是指对象的特征,如大小、标题或颜色等如大小、标题或颜色等数据数据n属性窗口有四局部组成:属性窗口有四局部组成:n对象框对象框n属性显示框属性显示框n属性列表框属性列表框n当前属性解释框当前属性解释框1111 4.其他窗口其他窗口n工具箱窗口工具箱窗口n由工具图标组成。由工具图标组

8、成。n工具分两类工具分两类:n内部控件内部控件(标准控件标准控件)nActiveX控件。控件。n控件就像盖房子使用的门、控件就像盖房子使用的门、窗、砖瓦等,都是现成部件,窗、砖瓦等,都是现成部件,只要到现场组合就可以了只要到现场组合就可以了nVB工具箱中包含了各种工具箱中包含了各种VB标准控件。包含一个指针和标准控件。包含一个指针和20个标准控件个标准控件1212 第第2章章 对象与根本控件对象与根本控件沈阳理工大学应用技术学院沈阳理工大学应用技术学院0.本章内容本章内容n 对象及其属性设置对象及其属性设置n 窗体窗体n 控件控件n 控件的画法和根本操作控件的画法和根本操作n 文本控件文本控件

9、n 图形控件图形控件n 按钮控件按钮控件1414 1.对象及其属性设置对象及其属性设置nVB的对象的对象n对象对象n 是是VB系统中的根本运行实体,对象分二类:系统中的根本运行实体,对象分二类:一类是预定义对象,由系统设计好可直接一类是预定义对象,由系统设计好可直接使用或操作窗体和控件;另一类是自使用或操作窗体和控件;另一类是自定义对象。可以用属性、方法、事件三个定义对象。可以用属性、方法、事件三个方面来描述它。方面来描述它。n对象的属性对象的属性n每个对象都有其特征,在每个对象都有其特征,在VB中叫做属性。中叫做属性。n设置属性有两条途径:设置属性有两条途径:n在程序设计时设置对象的属性,需

10、要使用在程序设计时设置对象的属性,需要使用属性窗口。属性窗口。n在程序运行中更改对象的属性,可以使用在程序运行中更改对象的属性,可以使用VB的赋值语句:对象名的赋值语句:对象名.属性名属性名 属性值属性值1515 1.对象及其属性设置对象及其属性设置n对象事件对象事件 由系统预先设置好的、能被对象识别的动作。如:由系统预先设置好的、能被对象识别的动作。如:鼠标的移动鼠标的移动(MouseMove)(MouseMove)、单击、单击(Click)(Click)和双击和双击(Dblclick)(Dblclick),窗体的装载,窗体的装载(Load)(Load)等。每一种对象能等。每一种对象能识别的

11、事件是不同的识别的事件是不同的n事件过程事件过程响应某事件后所执行的程序代码段。响应某事件后所执行的程序代码段。 事件过程的语法格式如下事件过程的语法格式如下 Sub Sub 对象名对象名_ _事件名事件名()() 处理事件的程序代码处理事件的程序代码 End SubEnd Sub1616 1.对象及其属性设置对象及其属性设置 例如:命令按钮例如:命令按钮Command1Command1的单击的单击(Click)(Click)事件过程为:事件过程为: Private Sub Command1_Click() Private Sub Command1_Click() Forml.Caption

12、= “ Forml.Caption = “在窗体上画圆在窗体上画圆 以圆心以圆心(2400(2400,1500)1500), 半半径为径为800800画圆画圆 Forml.Circle (2400,1500),800 Forml.Circle (2400,1500),800 End Sub End Sub1717 1.对象及其属性设置对象及其属性设置n对象方法对象方法n 方法是对象所能提供的功能。方法是对象所能提供的功能。VBVB的方法用于的方法用于完成某种特定功能。如对象打印完成某种特定功能。如对象打印PrintPrint方方法、显示窗体法、显示窗体ShowShow方法、移动方法、移动Mov

13、eMove方方法。调用对象方法:法。调用对象方法:n 对象名对象名. .方法名方法名n例:例:n Form1.Cls Form1.Cls 消除窗体消除窗体Form1Form1上的内容上的内容n Print Visual BASIC Print Visual BASIC 在当在当前窗体上显示前窗体上显示1818 1.对象及其属性设置对象及其属性设置n对象属性设计对象属性设计n激活属性窗口的方法:激活属性窗口的方法:n1. 用鼠标单击属性窗口任何部位用鼠标单击属性窗口任何部位n2. 执行执行“视图菜单的视图菜单的“属性窗口命令属性窗口命令n3. 按按F4键键n4. 单击工具栏上的单击工具栏上的“属

14、性窗口按钮属性窗口按钮n5. 按组合键按组合键 Ctrl+PgDn或或Ctrl+PgUpn对象属性设计的方法:对象属性设计的方法:n1. 直接输入新属性值直接输入新属性值n2. 选择输入通过下拉列表选择所需属性选择输入通过下拉列表选择所需属性值值n3. 利用对话框设置属性值利用对话框设置属性值1919 2. 窗体窗体n窗体的结构与属性窗体的结构与属性n窗体的结构:图标、标题栏、控制菜单、最小窗体的结构:图标、标题栏、控制菜单、最小化按钮、最大化按钮、关闭按钮化按钮、最大化按钮、关闭按钮 2020 2. 窗体窗体n窗体的属性:窗体的许多属性会影响窗体的外窗体的属性:窗体的许多属性会影响窗体的外观

15、。用两种方法设置窗体属性:观。用两种方法设置窗体属性:n 1 1通过属性窗口通过属性窗口n 2 2通过程序代码设置通过程序代码设置n窗体的常用属性:窗体的常用属性:nName Name 属性属性: :窗体的名称即标识符窗体的名称即标识符( (缺省值缺省值Form1)Form1)nCaption Caption 属性属性: :设置标题栏显示的内容设置标题栏显示的内容nLeft Left 属性属性: :设置窗体左上角的横坐标设置窗体左上角的横坐标nTop Top 属性属性: :设置窗体左上角的纵坐标设置窗体左上角的纵坐标nWidth Width 属性属性: :设置窗体的宽度设置窗体的宽度nHeig

16、ht Height 属性属性: :设置窗体的高度设置窗体的高度2121 2. 窗体窗体nFontBoldFontBold 属性属性:设置窗体上输出的字符是否为粗体设置窗体上输出的字符是否为粗体 nFontItalic FontItalic 属性属性:设置窗体上输出的字符是否为斜体设置窗体上输出的字符是否为斜体 nFontName FontName 属性属性:决定:决定窗体上窗体上正文的字体正文的字体( (缺省为宋体缺省为宋体) )nFontSize FontSize 属性属性:决定:决定窗体上窗体上正文的字体大小正文的字体大小nEnabled Enabled 属性属性:决定窗体是否对事件产生响

17、应决定窗体是否对事件产生响应nVisible Visible 属性属性:窗体在程序运行时是否可见窗体在程序运行时是否可见nBackColor BackColor 属性属性:用于确定窗体的背景颜色用于确定窗体的背景颜色nForeColor ForeColor 属性:用于属性:用于确定窗体确定窗体里显示图片和文本的里显示图片和文本的 前景颜色前景颜色nMoveable Moveable 属性属性:窗体在程序运行时是否可以移动窗体在程序运行时是否可以移动nWindowsState WindowsState 属性属性:窗体在运行时的大小。窗体在运行时的大小。 0:0:常态常态;1:1:最小化;最小化;

18、2:2:最大化。最大化。nBoderstyle Boderstyle 属性属性:用于确定窗体的边框风格用于确定窗体的边框风格2222 2. 窗体窗体n窗体事件窗体事件nClick事件事件(单击单击)n 该事件是在单击一个空白区或一个无效控该事件是在单击一个空白区或一个无效控件时发生。如果单击的是窗体内的控件,件时发生。如果单击的是窗体内的控件,那么执行该控件的那么执行该控件的Click 事件。事件。nDbClick事件事件(双击双击)n 该事件是在双击一个空白区或一个无效控该事件是在双击一个空白区或一个无效控件时发生。件时发生。nLoad事件事件n 先把窗体属性设置为初始值,再执行先把窗体属性

19、设置为初始值,再执行Load事件过程。当应用程序开始运行时,事件过程。当应用程序开始运行时,Visual Basic 自动加载并显示应用程序的自动加载并显示应用程序的启动窗体。启动窗体。2323 2. 窗体窗体nUnloadUnload事件事件 从内存中卸载窗体。关闭窗体时触发的事件。从内存中卸载窗体。关闭窗体时触发的事件。nActivateActivate事件与事件与DeactivateDeactivate事件事件 每当一个窗体变成活动窗体时,就会产生一个每当一个窗体变成活动窗体时,就会产生一个ActivateActivate事件;当另一个窗体或应用程序被激活时,事件;当另一个窗体或应用程序

20、被激活时,就会产生就会产生DeactivateDeactivate事件。事件。nPaintPaint事件事件 当窗体被移动或放大时,或窗口移动时覆盖了一个窗当窗体被移动或放大时,或窗口移动时覆盖了一个窗体时,触法该事件。体时,触法该事件。2424 3. 控件控件nVBVB中的控件通常分为中的控件通常分为3 3种类型:种类型:n(1) (1) 内部控件:在默认状态下工具箱中显内部控件:在默认状态下工具箱中显示的控件都是内部控件,不可从工具箱中示的控件都是内部控件,不可从工具箱中删除。如命令按钮、单项选择按钮、复选删除。如命令按钮、单项选择按钮、复选框等控件。框等控件。n (2) ActiveX

21、(2) ActiveX控件:这类控件单独保存控件:这类控件单独保存在在.ocx.ocx类型的文件中,其中包括各种版本类型的文件中,其中包括各种版本VBVB提供的控件,另外也有许多软件厂商提提供的控件,另外也有许多软件厂商提供的供的ActiveXActiveX控件。控件。n (3) (3) 可插入的对象。可插入的对象。2525 3. 控件控件n内部控件内部控件n工具箱里列出的是内部控件工具箱里列出的是内部控件n控件的命名控件的命名n Name属性值。为了能见名知义,通常用属性值。为了能见名知义,通常用3个小写字母作为对象的个小写字母作为对象的Name属性的前缀属性的前缀n控件值控件值n 用用“控

22、件控件.属性的格式设置一个控件的属性的格式设置一个控件的属性值属性值n 如:如:Text1.Text=“hello!2626 4. 控件的画法和根本操作控件的画法和根本操作n控件的画法控件的画法n单击工具箱中控件按钮,在窗体上拖动鼠单击工具箱中控件按钮,在窗体上拖动鼠标画出控件。标画出控件。n双击工具箱中控件按钮,即可在窗体的中双击工具箱中控件按钮,即可在窗体的中央画出控件。央画出控件。 n控件的根本操作控件的根本操作n控件的缩放和移动控件的缩放和移动n直接使用鼠标拖动控件到需要的地方。利直接使用鼠标拖动控件到需要的地方。利用鼠标指针对准控件的选中标志用鼠标指针对准控件的选中标志8个小方个小方

23、块出现双向箭头时,可以改变控件的大块出现双向箭头时,可以改变控件的大小。小。n在属性窗口修改某些属性来改变控件的大在属性窗口修改某些属性来改变控件的大小和位置。与窗体和控件大小及位置有关小和位置。与窗体和控件大小及位置有关的控件属性有:的控件属性有:Left、Top、Width及及Height。2727 4. 控件的画法和根本操作控件的画法和根本操作n控件的根本操作控件的根本操作n控件的复制与删除控件的复制与删除n在窗体上,控件的复制和删除操作同在窗体上,控件的复制和删除操作同Windows环境下文件的操作相同。环境下文件的操作相同。n (1) 选中控件,单击工具栏上的选中控件,单击工具栏上的

24、“复制复制按钮将控件复制到剪贴板中。按钮将控件复制到剪贴板中。n (2) 单击单击“粘贴按钮将控件粘贴到窗粘贴按钮将控件粘贴到窗体的左上角。在体的左上角。在“是否创立控件数组对是否创立控件数组对话框,单击话框,单击“否。否。n删除活动控件,只需选中控件后按删除活动控件,只需选中控件后按Del键或键或单击工具栏上的单击工具栏上的“删除按钮。删除按钮。 2828 4. 控件的画法和根本操作控件的画法和根本操作n控件的根本操作控件的根本操作n选定多个控件选定多个控件n (1)在窗体的空白区域利用鼠标左键拉出一在窗体的空白区域利用鼠标左键拉出一个矩形框,将需要选中的控件圈上即可选个矩形框,将需要选中的

25、控件圈上即可选定多个控件。定多个控件。n (2)先按住先按住Shift键,再用鼠标单击所要选键,再用鼠标单击所要选中的控件。中的控件。 n通过属性窗口改变对象的位置和大小通过属性窗口改变对象的位置和大小 2929 5. 文本控件文本控件n标签标签n根本属性根本属性n Name、Height、Width、Top、Left、Enabled、Visible、Font、ForeColor、BackColor等与窗体的使用相同等与窗体的使用相同n常用属性常用属性 nCaption:用来改变:用来改变Label控件中显示的文控件中显示的文本。本。nAlignment:设置:设置Caption属性中文本的属

26、性中文本的对齐方式,共有三种可选值:对齐方式,共有三种可选值:n 0 左对齐左对齐(Left Justify)n 1 右对齐右对齐(Right Justify)n 2 居中对齐居中对齐(Center Justify)3030 5. 文本控件文本控件nBackStyle:确定标签的背景是否透明。:确定标签的背景是否透明。n值为值为0时,表示背景透明,标签后的背景和图形可见;时,表示背景透明,标签后的背景和图形可见;n值为值为1时,表示不透明,标签后的背景和图形不可见。时,表示不透明,标签后的背景和图形不可见。nAutoSize:确定标签是否会随标题内容的多少自:确定标签是否会随标题内容的多少自动

27、变化。动变化。n值为值为True,随,随Caption内容大小自动调整控件本身的大内容大小自动调整控件本身的大小,且不换行;小,且不换行;n值为值为False,表示标签的尺寸不能自动调整,超出尺寸范,表示标签的尺寸不能自动调整,超出尺寸范围的内容不予显示。围的内容不予显示。n WordWrap:设置标签的标题文字是否能自动换:设置标签的标题文字是否能自动换行。行。nTrue-自动换行自动换行, AutoSize=Truen False-不自动换行不自动换行3131 5. 文本控件文本控件3232 【例例1】在窗体上放置在窗体上放置5个标签,其名称使用默认值个标签,其名称使用默认值Label1L

28、abel5,它们的高度与宽度相同,在属性窗,它们的高度与宽度相同,在属性窗口,按下表设置它们的属性口,按下表设置它们的属性 默认控件名默认控件名Name标题标题Caption有关属性设置有关属性设置Label1左对齐左对齐Alignment=0, BorderStyle =1 Label2水平居中水平居中Alignment=1,BorderStyle =1Label3自动自动AutoSize=True, WordWarp=False, BorderStyle =1Label4背景白背景白BackColor= &H00FFFFFF&, BorderStyle =0Label5前景红前景红Fore

29、Color= &H000000FF&, BorderStyle =05. 文本控件文本控件n事件事件n支持支持Click(单击单击)事件和事件和DblClick(双击双击)事件事件n一般情况不对它进行编程一般情况不对它进行编程3333 设置后各标签的显示如以下图设置后各标签的显示如以下图5. 文本控件文本控件n文本框文本框n根本属性根本属性n Name、Height、Width、Top、Left、Enabled、Visible、Font、ForeColor、BackColor等与窗体的使用相同等与窗体的使用相同n常用属性常用属性 nText:显示的正文内容。当程序运行时,:显示的正文内容。当程

30、序运行时,用户通过键盘输入正文内容,保存在用户通过键盘输入正文内容,保存在Text属性中。文本框没有属性中。文本框没有Caption属性属性nMaxlength: 设置正文最多字符的个数设置正文最多字符的个数, 0任意长度值。任意长度值。n MultiLine: 是否为多行,是否为多行, False默认一默认一行行 。3434 5. 文本控件文本控件nScrollBars: 当当MultiLine为为True时时,该属性才有效。该属性才有效。滚动条的形式:滚动条的形式:n0-None:无滚动条:无滚动条n1-Horizontal:水平滚动条:水平滚动条n2-Vertical垂直滚动条垂直滚动条

31、n3-Both水平和垂直滚动条水平和垂直滚动条nLocked:是否可被编辑属性,:是否可被编辑属性,False表示可编辑。表示可编辑。nPassWordChar:为了掩盖文本框中输入的字符。:为了掩盖文本框中输入的字符。n该属性的设置只有在该属性的设置只有在MultiLine设为设为 False才有效才有效nSelStart:确定在文本框选中文本的起始位置。:确定在文本框选中文本的起始位置。n 第一字符的位置为第一字符的位置为0。n假设没有选择文本,那么用于返回或设置文本的插假设没有选择文本,那么用于返回或设置文本的插入点位置入点位置n如果如果SelStart的值大于文本的长度,那么的值大于文

32、本的长度,那么SelStart取当前文本的长度:取当前文本的长度:3535 5. 文本控件文本控件nSelLength:设置或返回文本框中选定的文本字符串:设置或返回文本框中选定的文本字符串长度字符个数。长度字符个数。nSelText:设置或返回当前选定文本中的文本字符串。:设置或返回当前选定文本中的文本字符串。n事件和方法事件和方法nChange :当改变文本框的:当改变文本框的Text属性时会引发该事件。属性时会引发该事件。当用输入一个字符,就会触发一次当用输入一个字符,就会触发一次Change事件事件nGotFocus : 当控件获得焦点时发生当控件获得焦点时发生nLostFocus :

33、 当控件失去焦点时发生当控件失去焦点时发生nSetFocus:文本框最常用的方法,是把光标移到指:文本框最常用的方法,是把光标移到指定的文本框对象中。定的文本框对象中。n使用形式:使用形式: 对象对象.SetFocus3636 5. 文本控件文本控件3737 【例例2】在窗体上放置在窗体上放置3个文本框和个文本框和1个命令按钮,用个命令按钮,用Change事件改变文本框的事件改变文本框的Text属性属性 Private Sub Command1_Click() Text1.Text = Microsoft Visual Basic 6.0End SubPrivate Sub Text1_Cha

34、nge() Text2.Text = LCase(Text1.Text) Text3.Text = UCase(Text1.Text)End Sub运行程序后单击命令运行程序后单击命令按钮,输出结果是:按钮,输出结果是:5. 文本控件文本控件3838 【例例3】设置密码,在窗体设置密码,在窗体上放置上放置2个文本框和个文本框和2个命个命令按钮令按钮5. 文本控件文本控件3939 编写按钮的事件过程:编写按钮的事件过程: Private Sub Command1_Click() If Text1.Text = 123456 Then Text2.Text = OK,come in! Else T

35、ext2.Text = 密码错误,重新输入! End IfEnd SubPrivate Sub Command2_Click() Text1.Text = Text2.Text = Text1.SetFocusEnd Sub运行程序后单击命令运行程序后单击命令按钮,输出结果是:按钮,输出结果是:6. 图形控件图形控件n图片框和图象框图片框和图象框n根本属性根本属性n 与窗体属性相同的属性。注意对象名称与窗体属性相同的属性。注意对象名称不能省略,必须是具体的图片框或图象框不能省略,必须是具体的图片框或图象框的名。的名。n常用属性常用属性 nCurrenX和和CurrenY:设置下一个输出的:设置

36、下一个输出的水平或垂直坐标。省略为当前坐标水平或垂直坐标。省略为当前坐标 。 nStretch :为:为True 时,依据控件大小调整时,依据控件大小调整图片的大小,这可能使图片变形。图片的大小,这可能使图片变形。nPicture :用于设置在图片框中要显示的:用于设置在图片框中要显示的图像文件图像文件n属性窗口中设置属性窗口中设置n运行时用运行时用Loadpicture 函数装入函数装入n Picture1.Picture=LoadPicture(图形图形文件名文件名)4040 6. 图形控件图形控件n图形文件的装入图形文件的装入 n图片框和图象框的区别图片框和图象框的区别n图片框是容器控件

37、,可以作为父控件,图片框是容器控件,可以作为父控件,而图像框不能作为父控件。而图像框不能作为父控件。n图片框可以通过图片框可以通过Print 方法接收文本,并方法接收文本,并可接收由像素组成的图形,而图像框不能可接收由像素组成的图形,而图像框不能接收接收n图像框比图片框占用的内存少,显示速度图像框比图片框占用的内存少,显示速度快。快。n在设计阶段装入图形文件在设计阶段装入图形文件n通过属性窗口中的通过属性窗口中的Picture 属性装入图形属性装入图形n通过剪贴板把图形粘贴到图片框和图像框通过剪贴板把图形粘贴到图片框和图像框中中n在运行阶段装入图形文件在运行阶段装入图形文件n格式为格式为: 对

38、象对象.Picture = LoadPicture(“文件名文件名)4141 6. 图形控件图形控件4242 Private Sub Form_Load() Show Picture1.Print 在图片框内写字和画圆 Picture1.Circle(1200, 1000), 600, RGB(0, 0, 255) End Sub【例例4】在窗体上放置在窗体上放置1个图片框,在其中显示文字和个图片框,在其中显示文字和画图画图编写窗体的事件过程:编写窗体的事件过程: 6. 图形控件图形控件n直线和形状直线和形状n根本属性根本属性n 与窗体属性相同的属性。与窗体属性相同的属性。 Shape控件和控

39、件和Line控件只用于外表装饰,不支持任何事控件只用于外表装饰,不支持任何事件。件。 n常用属性常用属性 nBorderColor :用来设置颜色:用来设置颜色nBorderStyle:用来确定边界线的线型:用来确定边界线的线型,有有以下以下7种种n0-Transparent 透明透明n1-Solid ( 缺省值缺省值)实线实线 _n2-Dash 虚线虚线-n3-Dot 点线点线. n4-DashDot 点划线点划线-.-.-.-.-.-. n5-DashDotDot 双点划线双点划线-.-.-.-.n6-InsideSolid 内收实线内收实线 _ 4343 6. 图形控件图形控件nBord

40、erWidth :用来设置形状边界线和直线的宽度:用来设置形状边界线和直线的宽度nBackStyle :用于决定形状是否被指定的颜色填充:用于决定形状是否被指定的颜色填充n值为值为0默认:表示形状边界内的区域是透明的默认:表示形状边界内的区域是透明的n值为值为1: 该区域由该区域由BackColor 所指定的颜色填充所指定的颜色填充nFillColor:用来定义形状的内部颜色:用来定义形状的内部颜色nFillStyle:决定了形状控件内部的填充样式:决定了形状控件内部的填充样式,有有8种种:n0-Solid 实线实线n1-Transparent (缺省值缺省值) 透明透明n2-Horizont

41、al Line 水平直线水平直线n3-Vertical Line 垂直直线垂直直线n4- Upward Diagonal 上斜对角线上斜对角线n5- DownwardDiagonal 下斜对角线下斜对角线n6- Cross 十字线十字线n7-DiagonalCross 交叉对角线交叉对角线4444 6. 图形控件图形控件nShape :用来确定所画形状的几何特性:用来确定所画形状的几何特性n0- VbShapeRectangle (缺省值缺省值)矩形矩形 n1- VbShapeSquare 正方形正方形n2- VbShapeOvel 椭圆形椭圆形 n3-VbShapeCircle 圆形圆形n4

42、-VbShape-RoundedRectangle 圆角矩形圆角矩形n5-VbShape-RoundedSquare 圆角正方形圆角正方形4545 7. 按钮控件按钮控件n命令按钮命令按钮n根本属性根本属性n Name、Height、Width、Top、Left、Enabled、Visible、Font等与窗体的使等与窗体的使用相同用相同n常用属性常用属性 nCancel:逻辑值,设置为:逻辑值,设置为Ture时,程序时,程序运行时按运行时按Esc键与单击此命令按钮的效果键与单击此命令按钮的效果相同。相同。n注意:在一个窗体只能有一个按钮的注意:在一个窗体只能有一个按钮的Cancel设置为设置

43、为Ture nDefault:逻辑值,设置为:逻辑值,设置为True时,按时,按Enter键相当于用鼠标器单击了该按钮。键相当于用鼠标器单击了该按钮。n注意:在一个窗体只能有一个按钮的注意:在一个窗体只能有一个按钮的Default设置为设置为Ture4646 7. 按钮控件按钮控件nValue: 检查该按钮是否按下检查该按钮是否按下. 该属性在设计时无效该属性在设计时无效nPicture : 按钮可显示图片文件按钮可显示图片文件(.bmp和和.Ico),只有,只有当当Style属性值设属性值设 为为1时有效时有效nStyle : 确定显示的形式确定显示的形式. 0 只能显示文字只能显示文字,

44、1 文字、文字、图形均可图形均可n事件事件n最常用的事件是最常用的事件是Click(单击单击)事件事件n不支持不支持DblClick(双击双击)事件事件4747 7. 按钮控件按钮控件4848 【例例5】编写程序,模拟交通信号编写程序,模拟交通信号灯的切换。在窗体上画红、黄、灯的切换。在窗体上画红、黄、绿绿3个图像框和个图像框和2个命令按钮,按个命令按钮,按下表设置它们的属性下表设置它们的属性 7. 按钮控件按钮控件4949 编写事件过程编写事件过程:Private Sub Form_Load() image2.Visible = False image3.Visible = FalseEnd

45、 Sub Private Sub Command1_Click() If image1.Visible = True Then image1.Visible = False image2.Visible = True ElseIf image2.Visible = True Then image2.Visible = False image3.Visible = True Else image3.Visible = False image1.Visible = True End IfEnd SubPrivate Sub Command2_Click() EndEnd Sub运行程序后单击命令运

46、行程序后单击命令按钮,输出结果是:按钮,输出结果是:第第3章章 建立简单建立简单VB应用程序应用程序沈阳理工大学应用技术学院沈阳理工大学应用技术学院0.本章内容本章内容n语句语句n编写简单的编写简单的VB应用程序应用程序n程序的保存、装入和运行程序的保存、装入和运行nVB 应用程序的结构与工作方式应用程序的结构与工作方式5151 1. 语句语句n语句的书写规那么语句的书写规那么n自动语法检查自动语法检查n如果设置了如果设置了“自动语法检测选项卡,那自动语法检测选项卡,那么在输入语句的过程中,么在输入语句的过程中,VB将自动对输入将自动对输入的内容进行语法检查。的内容进行语法检查。n格式化处理格

47、式化处理nVB会按约定对语句进行简单的格式化处理,会按约定对语句进行简单的格式化处理,例如关键字、函数的第一字母自动变为大例如关键字、函数的第一字母自动变为大写,运算符前后加空格等。写,运算符前后加空格等。n复合语句行复合语句行n每个语句以回车键结束。每个语句以回车键结束。VB允许使用复合允许使用复合语句行,把几个语句放在一个语句行中,语句行,把几个语句放在一个语句行中,语句之间用冒号语句之间用冒号“:隔开。隔开。n语句的续行语句的续行n当一条语句很长时,用续行符当一条语句很长时,用续行符“_将一个将一个较长的语句分为多个程序行。较长的语句分为多个程序行。5252 1. 语句语句n赋值语句赋值

48、语句n是把指定的值赋给某个变量或带有属性的是把指定的值赋给某个变量或带有属性的对象。对象。n格式:格式:Let目标操作符目标操作符=源操作符源操作符n源操作符为源操作符为: 变量简单或下标变量,表变量简单或下标变量,表达式数值、字符串或逻辑表达式,常达式数值、字符串或逻辑表达式,常量,带有属性的对象量,带有属性的对象n目标操作符:变量或带属性的对象目标操作符:变量或带属性的对象n “=“ 称为赋值符号,有时序性和方向性称为赋值符号,有时序性和方向性n功能:把功能:把“源操作符的值赋给源操作符的值赋给“目标操目标操作符作符n说明:说明:n表达式中的变量必须是赋过值的,否那么表达式中的变量必须是赋

49、过值的,否那么变量的初值自动取零值变量的初值自动取零值(变长字符串变量取变长字符串变量取空字符空字符)。例如:。例如:n a= 1n c= a + b + 3 b未赋过值,为未赋过值,为0n 执行后,执行后,c 值为值为 45353 1. 语句语句n利用赋值语句,可以改变变量的值,因此,同一变利用赋值语句,可以改变变量的值,因此,同一变量在不同时刻可以取不同的值。量在不同时刻可以取不同的值。nPrivate Sub Form_Click()n a = 3 : Print *A= & an a = 7 : Print *A= & an a = a * 2 + 3 : Print *A= & an

50、 End Subn 运行程序后单击窗体,输出的结果如下:运行程序后单击窗体,输出的结果如下:n *A=3n *A=7n *A=17n赋值语句跟数学中等式具有不同的含意,例如赋值赋值语句跟数学中等式具有不同的含意,例如赋值语句语句x=x+1,表示把变量,表示把变量x的当前值加上的当前值加上1后再将后再将结果赋给变量结果赋给变量n “先读后写:读出先读后写:读出x的内容的内容 加加1写回写回x覆覆盖原有内容盖原有内容5454 1. 语句语句n注释语句注释语句n在程序的适应位置加上必要的注释,可以在程序的适应位置加上必要的注释,可以提高程序的可读性。提高程序的可读性。n格式:格式:Rem 注释内容注

51、释内容n 或或 注释内容注释内容n功能:在程序中参加注释内容,以便于对功能:在程序中参加注释内容,以便于对程序的理解。程序的理解。n例如:例如:n Rem 交换变量交换变量a和和b的值的值n c = a c为临时单元为临时单元n a = bn b = c5555 1. 语句语句n说明:说明:n非执行语句,起注释作用,不编译在程序清单非执行语句,起注释作用,不编译在程序清单中,但被完整列出。中,但被完整列出。 n任何字符都可作注释内容。通常放在过程、模任何字符都可作注释内容。通常放在过程、模块开头做标题,在执行语句单行或复合语句块开头做标题,在执行语句单行或复合语句行的后面,必须是最后一个语句。

52、行的后面,必须是最后一个语句。n不能放在续行符不能放在续行符-后面。后面。n如果使用关键字如果使用关键字Rem,在,在Rem和注释内容之和注释内容之间要加一个空格。间要加一个空格。n 在其他语句后使用在其他语句后使用Rem关键字,必须使用冒关键字,必须使用冒号号(:)与前面的语句隔开。注释符与前面的语句隔开。注释符(单引号单引号)可以直接写在其他语句后面。可以直接写在其他语句后面。5656 1. 语句语句n暂停语句暂停语句Stopn格式:格式: Stop n功能:暂停程序的运行。可用于调试程序功能:暂停程序的运行。可用于调试程序设置断点设置断点n也可以通过单击工具栏上的也可以通过单击工具栏上的

53、“中断按钮中断按钮来实现使用来实现使用n Ctrl + Break组合键组合键 n 用于暂停程序的执行,执行时将自动翻用于暂停程序的执行,执行时将自动翻开立即窗口。开立即窗口。n程序调试结束后,生成可执行文件前应删程序调试结束后,生成可执行文件前应删去所有的去所有的Stop语句。语句。5757 1. 语句语句n结束语句结束语句Endn格式:格式: End n功能:结束程序的运行。功能:结束程序的运行。n 也可以单击工具栏上的也可以单击工具栏上的“结束按结束按钮。钮。n End Sub 结束一个结束一个Sub过程过程n End Function 结束一个结束一个Function过程过程n End

54、 If 结束一个结束一个If 语句块语句块n End Type 结束记录类型的定结束记录类型的定义义n End Select 结束情况语句结束情况语句5858 2. 编写简单的编写简单的VB应用程序应用程序n设计设计VB应用程序的步骤应用程序的步骤n建立用户界面的对象窗体建立用户界面的对象窗体n设置对象的属性值设置对象的属性值n编写程序代码编写程序代码n进入事件过程进入事件过程(翻开翻开“代码窗口的代码窗口的)4种方种方法法n双击已建好的控件;双击已建好的控件;n执行执行“视图菜单的视图菜单的“代码窗口命令;代码窗口命令;n按按F7键;键;n单击单击“工程资源管理器窗口的工程资源管理器窗口的“

55、查看代查看代码按钮。码按钮。 5959 2. 编写简单的编写简单的VB应用程序应用程序【例【例1】在窗体上画】在窗体上画3个命令按钮和个命令按钮和1个文本框,窗体标题个文本框,窗体标题设置为设置为“VB程序设计例如程序设计例如 ,3个命令按钮标题分别设个命令按钮标题分别设置为置为“显示、显示、“去除、去除、“结束,文本框内容设置为结束,文本框内容设置为空白。程序运行后,单击第空白。程序运行后,单击第1个命令按钮,文本框里显个命令按钮,文本框里显示示“欢送使用欢送使用VB;单击第单击第2个命令按钮,去除文本框内个命令按钮,去除文本框内容;单击第容;单击第3个命令按钮,结束程序。个命令按钮,结束程

56、序。设计步骤如下:设计步骤如下:1. 建立用户界面建立用户界面6060 2. 编写简单的编写简单的VB应用程序应用程序2. 设置对象属性设置对象属性 在默认在在默认在“属性窗口中设置以下对象的属性:属性窗口中设置以下对象的属性:设置窗体设置窗体Form1的的Caption(标题名标题名)属性为属性为“VB程序设计例如程序设计例如 设置文本框设置文本框Text1的的Text(文本内容文本内容)属性为空属性为空设置按钮设置按钮Command1 的的Caption属性为属性为“显示显示设置按钮设置按钮Command2 的的Caption属性为属性为“去除去除设置按钮设置按钮Command3 的的Ca

57、ption属性为属性为“结束。结束。 6161 2. 编写简单的编写简单的VB应用程序应用程序3. 编写程序代码编写程序代码 6262 2. 编写简单的编写简单的VB应用程序应用程序【例【例2】设计一个应用程序,由用户输入正方形的边长,计算】设计一个应用程序,由用户输入正方形的边长,计算并输出正方形的面积并输出正方形的面积 分析:要创立的应用程序用户界面如图:分析:要创立的应用程序用户界面如图:6363 文本框文本框Text1文本框文本框Text2命令按钮命令按钮Command1命令按钮命令按钮Command2标签标签Label1标签标签Label2窗体窗体Form12. 编写简单的编写简单的

58、VB应用程序应用程序n窗体上含有两个标签、两个文本框和两个命令窗体上含有两个标签、两个文本框和两个命令按钮按钮n两个标签分别用于显示文字两个标签分别用于显示文字“边长和边长和“面积面积n两个文本框用于输入数据和显示计算结果两个文本框用于输入数据和显示计算结果n程序功能要求:程序功能要求:n 运行时,用户在运行时,用户在“边长文本框中输入边长文本框中输入某一个数,当单击某一个数,当单击“计算按钮时,那么在计算按钮时,那么在“面积文本框中显示该数的平方数。单击面积文本框中显示该数的平方数。单击“结结束按钮,那么结束程序的运行。束按钮,那么结束程序的运行。6464 2. 编写简单的编写简单的VB应用

59、程序应用程序n设计步骤如下:设计步骤如下:n 1. 建立用户界面建立用户界面n 在默认窗体在默认窗体Form1上添加控件,以构建用户上添加控件,以构建用户界面界面n 在在Form1窗体上添加以下控件:窗体上添加以下控件:n标签标签Label1:用于显示文字:用于显示文字“边长;边长; n标签标签Label2:用于显示文字:用于显示文字“面积。面积。n文本框文本框Text1:用于边长数;:用于边长数;n文本框文本框Text2:用于显示计算结果:用于显示计算结果(平方数平方数)。n命令按钮命令按钮Command1:用于计算输入数的平:用于计算输入数的平方,并把结果显示在文本框方,并把结果显示在文本

60、框Text2中;中;n命令按钮命令按钮Command2:用于结束应用程序的:用于结束应用程序的运行。运行。6565 2. 编写简单的编写简单的VB应用程序应用程序2. 设置对象属性设置对象属性 在默认在在默认在“属性窗口中设置以下对象的属性:属性窗口中设置以下对象的属性:设置窗体设置窗体Form1的的Caption(标题名标题名)属性为属性为“计算计算正方形的面积正方形的面积 。设置标签设置标签Label1的的Caption属性为属性为“边长。边长。设置标签设置标签Label2的的Caption属性为属性为“面积。面积。设置文本框设置文本框Text1的的Text(文本内容文本内容)属性为空。属

61、性为空。设置文本框设置文本框Text2的的Text属性为空。属性为空。 设置按钮设置按钮Command1 的的Caption属性为属性为“计算。计算。设置按钮设置按钮Command2 的的Caption属性为属性为“结束。结束。其他属性采用默认值其他属性采用默认值 6666 2. 编写简单的编写简单的VB应用程序应用程序3. 编写程序代码,建立事件过程编写程序代码,建立事件过程 程序说明:程序说明:Dim语句;语句; 数据类型数据类型Single(单精度单精度); Val函数;函数; 语句语句“Text2.Text=x*x的作用的作用6767 3. 程序的保存、装入和运行程序的保存、装入和运行

62、n程序的保存程序的保存n保存窗体文件保存窗体文件n 窗体文件窗体文件 .frmn保存工程文件保存工程文件n工程文件工程文件 .vbpn程序的装入程序的装入 n就是装入工程文件就是装入工程文件n 程序的运行程序的运行n 解释运行解释运行n 生成可执行文件生成可执行文件n执行执行“文件菜单中的文件菜单中的“生成生成.exe命令命令n 6868 4. VB 应用程序的结构与工作方式应用程序的结构与工作方式n构成构成: 3类模块类模块 n窗体模块窗体模块(.frm)n 标准模块标准模块(.bas)n 类模块类模块(.cls) 6969 5. 小测验小测验n工程的管理工程的管理n工程中的文件常用工程中的

63、文件常用n 工程文件工程文件 .vbpn 窗体文件窗体文件 .frmn 标准模块文件标准模块文件 .basn创立、翻开和保存工程创立、翻开和保存工程n创立工程创立工程 ;翻开工程;保存工程;关闭工;翻开工程;保存工程;关闭工程程 n添加、删除和保存文件添加、删除和保存文件 n添加文件添加文件 、删除文件和保存文件、删除文件和保存文件n生成可执行文件生成可执行文件n 两种运行程序的方式:解释方式;两种运行程序的方式:解释方式;编译方式编译方式 n 执行执行“文件菜单中的文件菜单中的“生成生成.exe命令命令 7070 第第4章章 数据类型、运算符与表达式数据类型、运算符与表达式沈阳理工大学应用技

64、术学院沈阳理工大学应用技术学院0.本章内容本章内容n 根本数据类型根本数据类型n 常量与变量常量与变量n 变量的作用域变量的作用域 n 常用内部函数常用内部函数n 运算符与表达式运算符与表达式 7272 1.根本数据类型根本数据类型 数值型数值型 7373 字符串字符串(String)(String) 数值数值 数据类型数据类型 货币货币(Currency)(Currency) 变体变体(Variant)(Variant) 其他其他 整型数整型数 整数整数Integer) 长整数长整数(Long)浮点数浮点数 单精度单精度(Single) 双精度双精度(Double)1.根本数据类型根本数据类

65、型n 字符串字符串n用双引号括起来的一串字符。用双引号括起来的一串字符。n例如例如: “Cantonn 1+2=?n Good Morningn “ n在在VB中,分变长字符串中,分变长字符串(长度不固定长度不固定)和定和定长字符串长字符串(长度固定长度固定)二种。二种。n定长字符串定义变量格式为:定长字符串定义变量格式为:n String * 常数常数n 如:如:Dim name as String * 107474 1.根本数据类型根本数据类型n 数值数值n整型数整型数n 不带小数局部的数,表示正整数、负整数不带小数局部的数,表示正整数、负整数和零和零n整数整数Integer): 2个字节

66、个字节n长整数长整数 (Long) :4个字节个字节n浮点数浮点数n 表示带有小数局部的数表示带有小数局部的数n单精度数单精度数(Single): 4个字节个字节n双精度数双精度数(Double): 8个字节个字节7575 1.根本数据类型根本数据类型n 货币货币n专门为处理货币而设计的数据类型专门为处理货币而设计的数据类型n它可最多保存小数点右边它可最多保存小数点右边4位和小数点左边位和小数点左边15位位n变体变体n是一种可变的数据类型,可以存放任何类型的数是一种可变的数据类型,可以存放任何类型的数据据n 包括数值、字符串、日期包括数值、字符串、日期/时间等时间等n其他数据类型其他数据类型n

67、字节字节Byte):1个字节个字节n布尔布尔Boolean): 2个字节个字节n日期日期Date): 8个字节个字节n 用两个用两个“#符号把日期和时间的值括起来符号把日期和时间的值括起来如:如:#08/20/2001#、#2001-08-20#n对象对象Object): 4个字节个字节n 可用来表示应用程序中的对象可用来表示应用程序中的对象 7676 2.常量和变量常量和变量n 常量常量n文字常量文字常量n字符串常量字符串常量 例如:例如: “Visual Basic ,“ 3+5 等等n数值常量数值常量 n 有有4种:整型数,长整型数、货币型数和浮点种:整型数,长整型数、货币型数和浮点数数

68、例如:例如:123,-263,235.987E-8 等等n布尔常量布尔常量 (逻辑常量逻辑常量 有有Ture和和False 两个值两个值n日期常量日期常量 例如:例如:#05/16/2007#n符号常量符号常量n 格式:格式: PublicPrivate Const 常量名常量名 As 数据类数据类型型=表达式表达式 例如:例如: Const PI=3.14159 As Single 7777 2.常量和变量常量和变量n系统常量系统常量VB提供可在程序中直接使用提供可在程序中直接使用 7878 2.常量和变量常量和变量n 变量变量n变量的命名规那么变量的命名规那么n变量名必须以字母开头;变量名

69、必须以字母开头;n只能由字母、数字和下划线组成。不能含只能由字母、数字和下划线组成。不能含有小数点、空格等字符;有小数点、空格等字符;n字符个数不得超过字符个数不得超过255个;个;n不能使用不能使用VB的关键字的关键字(如语句名、函数名如语句名、函数名等等)。例如,。例如,Print、Sub、End等等n不区分变量名中字母的大小写不区分变量名中字母的大小写7979 2.常量和变量常量和变量n变量的命名的本卷须知变量的命名的本卷须知n要见名知义。比方用要见名知义。比方用sum或或s代表求和。代表求和。n尽可能简单明了。尽可能简单明了。 n变量名不能与过程名和符号常量名相同。变量名不能与过程名和

70、符号常量名相同。n尽量采用尽量采用VB建议的变量名前缀或后缀的约定建议的变量名前缀或后缀的约定来命名。如:来命名。如:intMax。nVB不区分变量名和其他名字中字母的大小写。不区分变量名和其他名字中字母的大小写。为便于阅读,每个单词开头的字母一般用大写,为便于阅读,每个单词开头的字母一般用大写,例如例如PrintText。 8080 2.常量和变量常量和变量n变量的类型和定义变量的类型和定义 n用类型说明符来标识用类型说明符来标识 n 放在变量名的尾部。其中放在变量名的尾部。其中 %表示整型;表示整型;&表示长整型;!表示单精度型;表示长整型;!表示单精度型;#表示双精度表示双精度型;型;表

71、示货币型;表示货币型;$表示字符串型。表示字符串型。n 例如:例如:Total% Amount# Lname$n定义变量时指定类型定义变量时指定类型 n 格式:格式:Declare 变量名变量名 As 类型类型n 其中其中 “Declare可以是可以是 Dim、Static、Public或或Privaten “As是关键字是关键字n “类型是根本数据类型或用户定义类型是根本数据类型或用户定义类型类型8181 2.常量和变量常量和变量 说明:说明:Dim:用于标准模块、窗体模块或过程中定义变量或数:用于标准模块、窗体模块或过程中定义变量或数组。每次引用时其值会被重新设置组。每次引用时其值会被重新

72、设置 例如:例如: Dim sum As Integer 把把sum定义为整型定义为整型变量变量 Static:定义静态变量和数组变量。每次引用时其值会:定义静态变量和数组变量。每次引用时其值会继续保存继续保存 Public:用于标准模块中定义全局变量或数组:用于标准模块中定义全局变量或数组 8282 3.变量的作用域变量的作用域 n 局部变量与全局变量局部变量与全局变量 n局部变量局部变量 n 在过程内定义的变量在过程内定义的变量n模块变量窗体变量和标准模块变量模块变量窗体变量和标准模块变量n全局变量全局变量8383 3.变量的作用域变量的作用域 8484 名称名称作用域作用域声明位置声明位

73、置使用词句使用词句局部变量局部变量 过程过程过程中过程中DimDim或或StaticStatic模块变量模块变量窗体模块或标准窗体模块或标准模块模块模块的声明部模块的声明部分分DimDim或或PrivatePrivate全局变量全局变量 整个应用程序整个应用程序标准模块的声标准模块的声明部分明部分PublicPublic或或GlobalGlobal3.变量的作用域变量的作用域 n 默认声明默认声明 就是向程序说明要使用的变量就是向程序说明要使用的变量n声明变量声明变量(显式声明显式声明)n用用Dim、Public、Private或或Static语句来声明变量语句来声明变量 例如:例如:Dim

74、sum As Integer 把把sum定义为整型变量定义为整型变量n隐式声明隐式声明n不加说明就直接使用变量,此时默认的变量类型为不加说明就直接使用变量,此时默认的变量类型为变体类型变体类型(Variant)n也允许使用类型符来声明变量的类型,如也允许使用类型符来声明变量的类型,如Num%,Sum!8585 4.常用内部函数常用内部函数 n转换函数转换函数n 用于数据类型的转换用于数据类型的转换n例如:例如:Val(A12) 的值为的值为 0n Val(12A12) 的值为的值为 12n【例【例1】使用转换函数的例如】使用转换函数的例如(留给学生分留给学生分析析) 8686 Private

75、Sub Form_Click() x = 123 y = 123 a = Chr(Asc(x) + 5) b = Str(Val(x) + 5) c = Val(Str(y) + 5) Print a,b, c End Sub运行程序后单击窗体,输运行程序后单击窗体,输出结果如下:出结果如下: 6 128 1235注注: 检验函数操作可在立检验函数操作可在立即窗口即窗口(CTL+G)中用直中用直接方式执行接方式执行4.常用内部函数常用内部函数 n数学函数数学函数n三角函数的自变量单位是弧度三角函数的自变量单位是弧度n 如如Sin47应写成应写成 Sin(47*3.14159/180)n函数函数

76、Int是求小于或等于是求小于或等于x的最大整数的最大整数n 例如例如 Int(2.7)=2, Int(-2.5)=-3n当当x0时就直接舍去小数,假设时就直接舍去小数,假设x0那么那么舍去小数位后再减舍去小数位后再减1 n利用利用Int函数可以对数据进行四舍五入。对函数可以对数据进行四舍五入。对一个正数一个正数x可采用如下式子:可采用如下式子: Int(x+0.5)n用用Rnd函数返回随机数,先用函数返回随机数,先用Randomize语句来初始化语句来初始化n生成生成a, b区间范围内的随机整数,可以区间范围内的随机整数,可以采用采用n Int(b-a+1)*Rnd + a)8787 4.常用

77、内部函数常用内部函数 【例例2】通过随机函数产生通过随机函数产生2个两位正整数,求和并显示出来个两位正整数,求和并显示出来 编写的窗体单击事件过程代码如下:编写的窗体单击事件过程代码如下:8888 再次运行程序,单击窗体后输再次运行程序,单击窗体后输出另一组结果是:出另一组结果是: 产生的两个随机数:产生的两个随机数:18 37 和数:和数:55Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer Randomize 初始化随机数生成器 a = Int(90 * Rnd + 10) 产生10,99区间内的随机

78、整数 b = Int(90 * Rnd + 10) c = a + b 求两数之和 Print 产生的两个随机数: ; a, b Print 和数: ; c End Sub 运行程序,单击窗体后输出结运行程序,单击窗体后输出结果是:果是: 产生的两个随机数:产生的两个随机数:56 71 和数:和数:1274.常用内部函数常用内部函数 n日期与时间函数日期与时间函数n提供某个事件何时发生及持续时间长短的提供某个事件何时发生及持续时间长短的信息信息n【例【例3】使用日期】使用日期/时间函数例如时间函数例如(留给学生留给学生分析分析)8989 Private Sub Form_Click() x =

79、 #1/1/2021# a = x - Date b = Weekday(x) c = Year(Date) d = Month(Date) e = Hour(Time) f = Minute(Time) Print 现在距离2021奥运会还有: ; a; 天 Print 2021奥运会是:星期; b-1 Print 本月份是:; c; 年; d; 月 Print 现在是:; e; 时; f; 分 End Sub运行程序后单击窗体,输出结果如下:运行程序后单击窗体,输出结果如下: 现在距离现在距离2021奥运会还有:奥运会还有:184天天 2021奥运会是:星期奥运会是:星期1 本月份是:本月

80、份是:2007年年2月月 现在是:现在是:16时时27分分4.常用内部函数常用内部函数 n字符串函数字符串函数n删除空白字符函数删除空白字符函数 n LTrim$(S)n RTrim$(S)n Trim$(S)n字符串截取函数字符串截取函数 n Left$(S,n)n Right$(S,n)n Mid$(S,p,n)n字符串长度测试函数字符串长度测试函数 n Len(S)9090 4.常用内部函数常用内部函数 nString$函数函数 n String$(n,S)n空格函数空格函数 n Space$(n)n字符串匹配函数字符串匹配函数 n Instr(f, 字符串字符串1,字符串字符串2,k)

81、n字母大小写转换字母大小写转换 n Ucase$(S)n Lcase$(S)n插入字符串语句插入字符串语句Mid$ nMid(字符串字符串, p,n) = 子字符串子字符串9191 4.常用内部函数常用内部函数 【例【例4】使用字符串函数例如】使用字符串函数例如 先从字符串先从字符串a中找出某个指定中找出某个指定字符字符(本例为空格本例为空格),再以此字符为界拆分成两个字符串。,再以此字符为界拆分成两个字符串。9292 Private Sub Form_Click() Dim a As String, b As String, c As String, n As Integer a = Vis

82、ualFoxPro 表示空格 n = InStr(a, ) 查找空格位置 b = Left(a, n - 1) 取左边局部 c = Mid(a, n + 1) 取右边局部 Print b 显示左边局部 Print c 显示右边局部End Sub运行程序后单击窗体,输出结果如下:运行程序后单击窗体,输出结果如下: VisualFoxPro4.常用内部函数常用内部函数 nShell函数函数n调用各种应用程序调用各种应用程序 n shell命令字符串,窗口类型命令字符串,窗口类型n 命令字符串:可执行文件的名字命令字符串:可执行文件的名字n 窗口类型:窗口类型:6种种9393 5.运算符与表达式运算

83、符与表达式 n算术运算符算术运算符 n指数运算指数运算 n 例如:例如: 82=64n浮点数除法与整数除法浮点数除法与整数除法 n/ 和和 的区别:的区别:/用于普通除法;用于普通除法; 用于整用于整数除法,如果参加运算的数据含有小数,数除法,如果参加运算的数据含有小数,首先将它们四舍五入,再进行运算,结果首先将它们四舍五入,再进行运算,结果去掉小数局部。去掉小数局部。 n 例如:例如: 1/2=0.5,12=0 ,25.58 6.91=3n取模运算取模运算 n 用来求整型数除法的余数用来求整型数除法的余数n 例如:例如: 9 Mod 7 结果为结果为 2 ,n 25.58 Mod 6.91结

84、果为结果为 5 9494 5.运算符与表达式运算符与表达式 n算术运算符的优先级算术运算符的优先级 n (乘方乘方) -(求负求负) */ Mod +-n同级左到右同级左到右9595 5.运算符与表达式运算符与表达式 n字符串连接字符串连接 n连接符有两个:连接符有两个:&和和+n都是将两个字符串连接起来,结果是一个字符都是将两个字符串连接起来,结果是一个字符串串n & 专门字符串连接符,专门字符串连接符,+ 可作加法连接符可作加法连接符n例如:例如: n “计算机计算机& “网络的结果是网络的结果是“计算机计算机网络网络 n “123 + “45的结果是:的结果是:“12345 n 123

85、& “ABC 的结果是:的结果是:“123ABCn 9696 5.运算符与表达式运算符与表达式 n关系运算符与逻辑运算符关系运算符与逻辑运算符 n关系运算符关系运算符n用一个比较运算符把两个表达式用一个比较运算符把两个表达式(如算术表如算术表达式达式)连接起来的式子。连接起来的式子。 值为值为True(真真)和和False(假假)n8种:种: = = Like Isn数值型、日期型看成数值型、日期型看成yyyymmdd位整数位整数按数值大小比较。按数值大小比较。n字符型数据按其字符型数据按其ASCII码比较。码比较。n汉字字符大于西文字符汉字字符大于西文字符n例:例:Print 5 3 Tru

86、en Print #3/1/2003# #3/11/2003# Flasen Print abc = ABC“ True9797 5.运算符与表达式运算符与表达式 n逻辑运算符逻辑运算符 n用逻辑运算符把关系表达式或逻辑值连接起来的用逻辑运算符把关系表达式或逻辑值连接起来的式子式子n6种按优先级:种按优先级:Not(非非) 、And(与与)、Or(或或)、Xor(异或异或)、Eqv (等价等价) 、Imp(蕴含蕴含)n例:例: n Not (23) 2=3 And 45+1 两个关系表达式为真,两个关系表达式为真,结果为真结果为真n 3 = 3 Or 53 “3=3为为真,结果为真真,结果为真

87、9898 5.运算符与表达式运算符与表达式 n字符串表达式与日期表达式字符串表达式与日期表达式 n字符串表达式字符串表达式 用连接符用连接符&将字符串常量、字符串变量、字符串函将字符串常量、字符串变量、字符串函数连接起来的式子数连接起来的式子n日期表达式:日期表达式: 用运算符用运算符(+或或-)将算术表达式、日期型常量、日期将算术表达式、日期型常量、日期型变量和函数连接起来的式子型变量和函数连接起来的式子n两个日期型数据相减,其结果是一个数值型数据两个日期型数据相减,其结果是一个数值型数据(相差的天数相差的天数)。 例如:例如:#8/8/2001# - #6/3/2001# 的结果为:的结果

88、为:66n日期型数据加上天数,其结果为一个日期型数据。日期型数据加上天数,其结果为一个日期型数据。 例如:例如:#12/1/2000#+31 的结果为:的结果为:#01/01/2001#n日期型数据减去天数,其结果为一个日期型数据。日期型数据减去天数,其结果为一个日期型数据。 例如:例如:#12/1/2000#-32 的结果为:的结果为:#10/30/2000#9999 5.运算符与表达式运算符与表达式 n表达式的执行顺序表达式的执行顺序 算术运算优先于关系运算,关系运算优先于逻算术运算优先于关系运算,关系运算优先于逻辑运算。辑运算。n首先进行函数运算首先进行函数运算n接着进行算术运算,其次序

89、为:接着进行算术运算,其次序为: 幂幂() 取负取负(-) 乘、浮点除乘、浮点除(*、/) 整除整除() 取模取模(Mod) 加法和减法加法和减法(+、-) 字符串连接字符串连接(&)n然后进行关系运算然后进行关系运算 相等相等(=)、不等、不等()、小于、小于()、小于等于、小于等于(=)(注:注:6 个运算符同级个运算符同级)n 最后进行逻辑运算最后进行逻辑运算 非非(Not) 与与(And) 或或(Or) 异或异或(Xor) 等价等价(Eqv) 蕴涵蕴涵(Imp)100100 5.运算符与表达式运算符与表达式 【例例5】判断某一年是否闰年。判断某一年是否闰年。判断条件:判断条件:n年号年

90、号(y)能被能被4整除,但不能被整除,但不能被100整除;整除;n或者能被或者能被400整除整除n用逻辑表达式来表示这个条件,写成:用逻辑表达式来表示这个条件,写成: (y Mod 4=0 And y Mod 1000) Or (y Mod 400=0)n也可写成:也可写成:(Int(y/4)=y/4 And Int(y/100)y/100) Or Int(y/400)=y/400)101101 第第5章章 数据输入输出数据输入输出沈阳理工大学应用技术学院沈阳理工大学应用技术学院0.本章内容本章内容n使用使用Print方法输出数据方法输出数据n使用使用InputBox函数输入数据函数输入数据n

91、 MsgBox函数和函数和 MsgBox语句语句n字形字形n 打印机输出打印机输出 103103 1.使用使用Print方法输出数据方法输出数据nPrint方法方法n格式:对象名格式:对象名.Print 表达式列表表达式列表n说明:说明:n使用的对象可以是窗体、图片框或打印机使用的对象可以是窗体、图片框或打印机n Print “程序设计程序设计 在当前在当前窗体上输出窗体上输出 n Picture1.Print “程序设计程序设计 在图在图片框上输出片框上输出n表达式列表是一个或多个表达式,如果省表达式列表是一个或多个表达式,如果省略,那么输出一个空行略,那么输出一个空行n有计算和输出双重功能

92、,先计算后输出。有计算和输出双重功能,先计算后输出。输出数值数据时,前面有一个符号位输出数值数据时,前面有一个符号位(正号正号以空格表示以空格表示),后面留有一个空格;输出字,后面留有一个空格;输出字符串时,前后不留空格。符串时,前后不留空格。104104 1.使用使用Print方法输出数据方法输出数据【例【例1】 Private Sub Form_Click() a = 2 b = VB Print 50 * a 计算并输出表达式的值 Print b 输出变量的值 Print 输出空行 Print The Total is 输出字符串常量 End Sub105105 n运行结果:运行结果:1

93、.使用使用Print方法输出数据方法输出数据n当输出多个表达式时,各表达式之间用分号当输出多个表达式时,各表达式之间用分号“;(紧凑紧凑格式格式)或逗号或逗号“,(按区格式按区格式)隔开。按区格式隔开。按区格式(14个字个字符位置符位置)n假设语句行末尾有分号或逗号假设语句行末尾有分号或逗号,那么输出本行输出项后不那么输出本行输出项后不换行换行106106 【例【例2】 Private Sub Form_Click() a = 3: b = 4 Print a, b, 4 + a, Print 2 * b Print a, , b Print a=; a, b=; b End Sub运行结果:

94、运行结果:1.使用使用Print方法输出数据方法输出数据【例【例3】使用】使用Print方法输出全班学生的平均年龄。方法输出全班学生的平均年龄。 18岁岁6人,人,19岁岁21人,人,20岁岁23人,人,21岁岁15人。人。107107 Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer Dim d As Integer, s As Integer, m As Single a = 6 : b = 21 : c = 23 : d = 15 s = a + b + c + d m = (a * 18 + b

95、* 19 + c * 20 + d * 21) / s 以下舍入到小数后1位 Print 平均年龄:; Int(m * 10 + 0.5) / 10End Sub运行程序后单击窗体,输出结果是:运行程序后单击窗体,输出结果是:平均年龄:平均年龄:19.71.使用使用Print方法输出数据方法输出数据n与与Print方法有关的函数和方法方法有关的函数和方法 nTab函数函数 n函数格式:函数格式:Tab(n) n功能:把输出位置移到第功能:把输出位置移到第n列,要输出的内容放在列,要输出的内容放在Tab函数后面,并用分号隔开。函数后面,并用分号隔开。n如:如: Print Tab(2);学号学号

96、;Tab(11);姓名姓名;Tab(21);成绩成绩 n 输出结果是输出结果是(1个汉字占个汉字占2个位置个位置): 学号学号姓名姓名成绩成绩108108 1.使用使用Print方法输出数据方法输出数据109109 程序代码如下:程序代码如下:Private Sub Form_Click() Print Print Tab(15); 学号学号; Tab(26); 姓名姓名; Tab(36); 成绩成绩 Print Tab(14); String(27, -) 输出输出27个减号字符个减号字符“- Print Tab(14); “19011001; Tab(26); 张小三张小三; Tab(36

97、); 57 Print Tab(14); “19011003; Tab(26); 李小四李小四; Tab(36); 69 Print Tab(14); “19011012; Tab(26); 马小五马小五; Tab(36); 92 Print Tab(14); String(27, -) 输出输出27个减号字符个减号字符“- End Sub学号学号姓名姓名成绩成绩19011001张小三张小三5719011003李小四李小四6919011012马小五马小五92【例【例4】编程显示下面表格】编程显示下面表格不显示格线不显示格线1.使用使用Print方法输出数据方法输出数据110110 运行结果:运

98、行结果:1.使用使用Print方法输出数据方法输出数据nSpc函数函数n函数格式:函数格式: Spc(n) n功能:在输出下一项之前插入功能:在输出下一项之前插入n个空格。个空格。 如:如:Print 学号学号;Spc(2);姓名姓名;Spc(5);成绩成绩 输出结果是输出结果是(表示空格表示空格): 学号学号姓名姓名成绩成绩n Space$函数函数n函数格式:函数格式: Space$(n) n功能:返回功能:返回n个空格。个空格。如:如:a$= a +Space(4)+ b print a$ 输出结果是:输出结果是:a b111111 1.使用使用Print方法输出数据方法输出数据nCls

99、方法方法n格式:格式:对象对象.Clsn功能:去除由功能:去除由Print方法显示的图形方法显示的图形,并把光标并把光标移到对象的左上角移到对象的左上角0,0。对象名称可以是。对象名称可以是窗体和图片框。窗体和图片框。n 如:如: Picture1.Cls 去除图片框去除图片框Picture1内的图形或文本内的图形或文本n Cls 去除当前窗体内显示去除当前窗体内显示的内容的内容nMove方法方法n格式:格式: 对象对象.Move 左边距离左边距离,上边距离上边距离,宽宽度度,高度高度 n功能:移动窗体和控件功能:移动窗体和控件,并可改变其大小。并可改变其大小。112112 1.使用使用Pri

100、nt方法输出数据方法输出数据113113 【例【例5】在窗体任意位置画一个文本框和一个图片框,编写】在窗体任意位置画一个文本框和一个图片框,编写程序移动它们的位置并改变其大小。程序移动它们的位置并改变其大小。移动控件图初始界面移动控件图运行情况Private Sub Form_Click()Move 800, 800, 3990, 2600Text1.Move 200, 200, 1500, 1000Picture1.Move 1800, 200, 1500, 1000Picture1.Print picture1End Sub1.使用使用Print方法输出数据方法输出数据n格式输出格式输出

101、n格式:格式:Format$(数值表达式数值表达式 ,格式字符串格式字符串)n功能:根据格式串规定格式来输出表达式的值功能:根据格式串规定格式来输出表达式的值114114 【例【例6】 Private Sub Form_Click()a=4513.7 : b=3456.78 : TimeVar=#08:30:05#Print Format(a, #,#.#)Print Format(a, $#,#.00)Print Format(b, +#,#.#)Print Format(TimeVar, h:m:s) End Sub 运行程序后单击窗运行程序后单击窗体,输出结果是:体,输出结果是: 4,5

102、13.7 $4,513.70 +3,456.8 8:30:5 格式符号格式符号#和和0都能显示数字,但都能显示数字,但符号符号#会剔除不必要的会剔除不必要的0,符号,符号0会按规定补足会按规定补足02.使用使用InputBox函数输入数据函数输入数据n格式:格式:n功能:功能:等待用户在输入对话框中输入信息,返回字符等待用户在输入对话框中输入信息,返回字符形式的内容形式的内容115115 2.使用使用InputBox函数输入数据函数输入数据116116 【例【例7】 InputBox函数的功能函数的功能Private Sub Form_Click() filename$=InputBox(“请

103、输入文件名请输入文件名(不超过不超过8个字符个字符),文件名,文件名,vbfile) Print filename$End Sub2.使用使用InputBox函数输入数据函数输入数据117117 【例【例8】 InputBox函数的功能函数的功能Private Sub Form_Click() c1$=Chr$(13) + Chr$(10) filename$=InputBox(“请输入文件名请输入文件名+c1$+(不超过不超过8个字符个字符),文件名,文件名,vbfile) Print filename$End Sub3. MsgBox函数和函数和MsgBox语句语句 nMsgBox函数函数

104、n 格式:格式: MsgBox(提示提示,对话框类型对话框类型,对话框标题对话框标题n功能:功能:产生一个消息框,用来向用户提供警告信息,产生一个消息框,用来向用户提供警告信息,并返回一个整数。并返回一个整数。118118 【例【例9】 MsgBox函数的功能函数的功能Private Sub Form_Click() y = MsgBox(“输入文件名是否正确输入文件名是否正确,52,请确认请确认) Print y 4+48+0End Sub“对话框类型一般对话框类型一般有有3个参数个参数:出现按钮;出现按钮; 图标类型;图标类型; 默认按钮;默认按钮;3. MsgBox函数和函数和MsgBo

105、x语句语句 119119 【例例10】编写程序,用】编写程序,用MsgBox函数判断是否执行。函数判断是否执行。Private Sub Form_Click()msg$ = 请确认此数据是否正确Title$ = 数据检查对话框x = MsgBox(msg$, 19, Title$)If x = 6 Then Print x * xElseIf x = 7 Then Print 请重新输入End IfEnd Sub3. MsgBox函数和函数和MsgBox语句语句 nMsgBox语句语句n三种格式:三种格式:n y = MsgBox(“输入文件名是否正确输入文件名是否正确,52,请确认请确认)n

106、MsgBox “输入文件名是否正确输入文件名是否正确,52,请请确认确认n MsgBox(“输入文件名是否正确输入文件名是否正确)120120 3. MsgBox函数和函数和MsgBox语句语句 121121 【例【例11】从输入框中输入圆的半径,计算圆的周长和面积。】从输入框中输入圆的半径,计算圆的周长和面积。(1)创立应用程序的用户界面创立应用程序的用户界面(2)设置对象属性设置对象属性(3)编写程序代码编写程序代码Private Sub Command1_Click()Dim r As Single, k As Single, s As Single r = Val(InputBox(请

107、输入圆的半径, 计算圆的周长和面积) k = 2 * 3.14159 * r s = 3.14159 * r * r Text1.Text = k Text2.Text = s MsgBox 计算已完成, , 例5.11 End Sub Private Sub Command2_Click() End End Sub3. MsgBox函数和函数和MsgBox语句语句 122122 当输入的圆半径为当输入的圆半径为65时,运行结果时,运行结果:4. 字形字形 n字体类型和大小字体类型和大小 123123 【例例12】编写程序,在窗体上输】编写程序,在窗体上输出多种字体。出多种字体。Private

108、 Sub Command1_Click() sample1$ = Microsoft Visual Basic 6.0 sample2$ = 程序设计技巧 FontSize = 20 FontName = system Print system-; sample1$ FontName = modern Print modern-; sample1$ FontSize = 24 FontName = 宋体 FontBold = True Print 宋体-; sample2$ FontName = 隶书 FontItalic = True Print 隶书-; sample2$ FontName

109、 = 黑体 FontUnderline = True Print 黑体-; sample2$ End Sub4. 字形字形 n其他属性其他属性 n粗体字粗体字 n斜体字斜体字 n加删除线加删除线 n加下划线加下划线 n重叠显示重叠显示 124124 5.打印机输出打印机输出 n直接输出直接输出 把信息直接送往打印机把信息直接送往打印机n格式:格式:Printer.Print 表达式表表达式表 nPage属性:设置当前页号属性:设置当前页号n格式:格式:Printer.Page nNewPage方法:实现换页操作方法:实现换页操作n格式:格式:Printer.NewPagenEndDoc方法:结

110、束文件打印方法:结束文件打印n格式:格式:Printer.EndDoc 125125 5.打印机输出打印机输出 126126 【例【例13】在打印机上打印文字】在打印机上打印文字“计算机程序设计计算机程序设计 。Private Sub Command1_Click() Printer.FontName = 隶书 Printer.FontSize = 12 Printer.Print “计算机程序设计 将文本放到Printer对象中 Printer.EndDoc 打印结束 End Sub 5.打印机输出打印机输出 n窗体输出窗体输出 先把要输出的信息送到窗体上,再用先把要输出的信息送到窗体上,再

111、用PrintForm方法把窗体上的内容打印出来方法把窗体上的内容打印出来 n格式:格式:窗体名窗体名.PrintFormn功能:把窗体上的信息输出到打印机功能:把窗体上的信息输出到打印机127127 第第6章章 VB控制结构控制结构沈阳理工大学应用技术学院沈阳理工大学应用技术学院0.本章内容本章内容n选择控制结构选择控制结构 n多分支控制结构多分支控制结构 n选择控件选择控件复选框和单项选择按钮复选框和单项选择按钮n计时器控件计时器控件n循环控制结构循环控制结构 n多重循环多重循环 n GoTo型控制型控制 n选择控件选择控件列表框与组合框列表框与组合框n 滚动条和框架控件滚动条和框架控件12

112、9129 1.选择控制结构选择控制结构 nIf.Then语句语句n格式:格式: If 条件条件 Then 语句语句n 或或If 条件条件 Thenn 语句块语句块n End Ifn功能:假设条件成立功能:假设条件成立(值为真值为真),那么执行,那么执行Then后面的语句或语句块,否那么直接执后面的语句或语句块,否那么直接执行下一条语句或行下一条语句或“End If的下一条语句的下一条语句n 130130 1.选择控制结构选择控制结构 n例如:如果满足条件例如:如果满足条件CJ60时,打印出时,打印出“成成绩不及格,采用的条件语句是:绩不及格,采用的条件语句是:n If CJ60 Then Pr

113、int 成绩不及格成绩不及格n 多行代码:多行代码:n If CJ b Then m = a m用来存放较大值 Else m = b End If If c m Then m = c Text4.Text = mEnd Sub 1.选择控制结构选择控制结构 134134 (1)创立应用程序的用户界面创立应用程序的用户界面(2)设置对象属性设置对象属性(3)编写程序代码编写程序代码 功能要求:用户从上面三个功能要求:用户从上面三个文本框文本框(Text1、Text2、Text3)中输入数据,单击中输入数据,单击“排排序按钮序按钮(Command1),那,那么在第么在第4个文本框个文本框(Text

114、4)中显中显示结果示结果【例例2】输入三个数,将它们从大到小排序输入三个数,将它们从大到小排序程序代码如下:程序代码如下:Private Sub Command1_Click() a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a =b t = a: a = b: b = t End If If a =c t = a: a = c: c = t End If If b =c t = b: b = c: c = t End If Text4.Text = a & , & b & , & c End Sub 1.选择控制

115、结构选择控制结构 nIIf函数函数n格式:格式:n IIf(条件,条件为真时的值,条件为假时条件,条件为真时的值,条件为假时的值的值)n功能:对条件进行测试,假设条件成立功能:对条件进行测试,假设条件成立(为为真值真值),那么取第一个值,那么取第一个值(即即“条件为真时的条件为真时的值值),否那么取第二个值,否那么取第二个值(即即“条件为假时条件为假时的值的值)。n 例如,将例如,将a、b中的小数,放入中的小数,放入Min变量变量中:中:n Min=IIf(ab,a,b)135135 1.选择控制结构选择控制结构 nElseIf格式格式n格式:格式:If 条件条件1 Then 语句块语句块1

116、ElseIf 条件条件2 Then 语句块语句块2 ElseIf 条件条件3 Then 语句块语句块3 Else 语句块语句块n End If136136 n功能:功能:n先测试条件先测试条件1,如果为,如果为假,就依次测试条件假,就依次测试条件2,依此类推,直到找到,依此类推,直到找到为真的条件。为真的条件。n一旦找到一个为真的条一旦找到一个为真的条件时,件时,VB会执行相应的会执行相应的语句块,然后执行语句块,然后执行End If语句后面的代码。语句后面的代码。n如果所有条件都是假,如果所有条件都是假,那么执行那么执行Else后面的语后面的语句块句块n,然后执行,然后执行End If语句后

117、面的代码。语句后面的代码。 1.选择控制结构选择控制结构 137137 (1)创立应用程序的用户界面创立应用程序的用户界面(2)设置对象属性设置对象属性(3)编写程序代码编写程序代码 功能要求:用户从功能要求:用户从“成绩成绩文本框文本框(Text1)中输入学生中输入学生成绩,单击成绩,单击“执行按钮执行按钮(command1)后,经判断得后,经判断得到等级并显示在标签到等级并显示在标签Label2上。上。【例例3】输入学生成绩输入学生成绩(百分制百分制),判断该成绩的等级,判断该成绩的等级(优优良、中、及格、不及格良、中、及格、不及格) 程序代码如下:程序代码如下:Private Sub C

118、ommand1_Click() Dim score As Integer, temp As String score = Val(Text1.Text) temp = 成绩等级为: If score 0 Then Label2.Caption = 成绩出错 ElseIf score 60 Then Label2.Caption = temp + 不及格 ElseIf score = 79 Then Label2.Caption = temp + 及格 ElseIf score = 100 Then Label2.Caption = temp + 优良 Else Label2.Caption =

119、 成绩出错End Sub 2.多分支控制结构多分支控制结构 n格式:格式:n Select Case 表达表达n Case 表达式表表达式表1n 语句块语句块1n Case 表达式表表达式表2n 语句块语句块2n . . . n Case Elsen 语句块语句块nn End Selectn功能:先计算表达式的值,然后将该值依次与结构中的功能:先计算表达式的值,然后将该值依次与结构中的每个每个Case的值进行比较,如果该值符合某个的值进行比较,如果该值符合某个Case指定指定的值条件时,就执行该的值条件时,就执行该Case的语句块,然后跳到的语句块,然后跳到End Select,从,从End

120、Select出口。如果没有相符合的出口。如果没有相符合的Case值,值,那么执行那么执行Case Else中的语句块中的语句块138138 2.多分支控制结构多分支控制结构 n表达式表通常是一个具体值表达式表通常是一个具体值(如如Case 1),每一,每一个值确定一个分支。还有三种方法可以确定设定个值确定一个分支。还有三种方法可以确定设定值:值:n一组值一组值(用逗号隔开用逗号隔开)。例如:。例如:n Case 1,3,5 表示条件在表示条件在1,3,5范围内范围内取值取值n表达式表达式1 TO 表达式表达式2。例如:。例如: n Case 60 To 80 表示条件取值范围为表示条件取值范围

121、为6080nnIs关系式。例如:关系式。例如:n Case Is5 表示条件在小于表示条件在小于5范围取值范围取值139139 2.多分支控制结构多分支控制结构140140 【例例4】输入学生成绩输入学生成绩(百分制百分制),判断该成绩的等级,判断该成绩的等级(优良、优良、及格、不及格及格、不及格) 用用Select Case语句来实现语句来实现Private Sub Command1_Click() Dim score As Integer, temp As String score = Val(Text1.Text) temp = 成绩等级为: Select Case score Case

122、 0 To 59 Label2.Caption = temp + 不及格 Case 60 To 79 Label2.Caption = temp + 及格 Case 80 To 100 Label2.Caption = temp + 优良 Case Else Label2.Caption = 成绩出错 End SelectEnd Sub 3.选择控件选择控件复选框和单项选择按复选框和单项选择按钮钮n单项选择按钮单项选择按钮n用途:由一个圆圈用途:由一个圆圈“及紧挨它的文字及紧挨它的文字组成,能提供组成,能提供“选中和选中和“未选中两种未选中两种可选项,成组形式出现。可选项,成组形式出现。n属性

123、:属性:nValue属性:表示单项选择按钮是否被选属性:表示单项选择按钮是否被选中,选中时中,选中时Value值为值为True,否那么为否那么为False。使用单项选择按钮组时,选中其中。使用单项选择按钮组时,选中其中一个,其余就会自动关闭一个,其余就会自动关闭nAlignment属性:设置单项选择按钮标题属性:设置单项选择按钮标题的对齐方式的对齐方式 n事件:事件:nClick事件事件n 在应用程序中可以创立一个事件过程,在应用程序中可以创立一个事件过程,检测控件对象检测控件对象Value属性值,再根据检测属性值,再根据检测结果执行相应的处理结果执行相应的处理141141 3.选择控件选择控

124、件复选框和单项选择按复选框和单项选择按钮钮142142 【例【例5】用单项选择按钮在文本框中显示不同的字体】用单项选择按钮在文本框中显示不同的字体Private Sub Option1_Click() Text1.FontName = 宋体End SubPrivate Sub Option2_Click() Text1.FontName = 幼圆End SubPrivate Sub Option3_Click() Text1.FontName = 楷体_GB2312End Sub(1)创立应用程序的用户界面创立应用程序的用户界面(2)设置对象属性设置对象属性 初始状态:设置初始状态:设置Opt

125、ion1的的Value属性值设属性值设置为置为True,或用代码,或用代码“Option1.Value=True 来实现来实现(3)编写程序代码编写程序代码3.选择控件选择控件复选框和单项选择按复选框和单项选择按钮钮n复选框复选框n用途:由一个四方形小框和紧挨它的文字用途:由一个四方形小框和紧挨它的文字组成。提供组成。提供“选中和选中和“未选中两种可未选中两种可选项。选项。n属性:属性:nValue属性:表示复选框的状态属性:表示复选框的状态n 有三种取值:有三种取值:0未选中未选中(缺省值缺省值)n 1选中选中n 2不可用不可用(灰色灰色显示显示)nAlignment属性属性n Style属

126、性属性n事件:与单项选择按钮根本相同事件:与单项选择按钮根本相同143143 3.选择控件选择控件复选框和单项选择按复选框和单项选择按钮钮144144 【例例6】用复选框来控制文字的字体、字型、字号及颜色用复选框来控制文字的字体、字型、字号及颜色(1)创立应用程序的用户界面创立应用程序的用户界面(2)设置对象属性设置对象属性 多行文本框多行文本框(带垂直滚动条带垂直滚动条)和四个复选框和四个复选框(3)编写程序代码编写程序代码 功能要求:程序开始运行后,用户在文本框中输入一功能要求:程序开始运行后,用户在文本框中输入一段文字段文字(如如“复选框应用例如复选框应用例如),然后按需要单击各复选,然

127、后按需要单击各复选框,那么文字的字体、字型、字号及颜色随之改变框,那么文字的字体、字型、字号及颜色随之改变3.选择控件选择控件复选框和单项选择按复选框和单项选择按钮钮145145 Private Sub check1_click() If Check1.Value = 1 Then Text1.FontName = 楷体_GB2312 Else Text1.FontName = 宋体 End IfEnd SubPrivate Sub check2_click() If Check2.Value = 1 Then Text1.FontItalic = True Else Text1.FontIt

128、alic = False End IfEnd SubPrivate Sub check3_click() If Check3.Value = 1 Then Text1.FontSize = 25 Else Text1.FontSize = 9 End IfEnd SubPrivate Sub check4_click() If Check4.Value = 1 Then Text1.ForeColor = RGB(255, 0, 0) Else Text1.ForeColor = RGB(0, 0, 0) End IfEnd Sub在运行中,可以任意设定这四个复选框的状态,可在运行中,可以任意

129、设定这四个复选框的状态,可以四项都不选,也可以选择其中一项至四项以四项都不选,也可以选择其中一项至四项4.计时器控件计时器控件n用途用途:每隔一定的时间间隔产生一次:每隔一定的时间间隔产生一次Timer事件。在事件。在设计时显示为一个小时钟图标,而在运行时并不显示设计时显示为一个小时钟图标,而在运行时并不显示在屏幕上,通常另设标签或文本框来显示时间在屏幕上,通常另设标签或文本框来显示时间n属性:属性:nEnabled属性:确定计时器是否可用属性:确定计时器是否可用 nInterval属性:设置两个属性:设置两个Timer事件之间的时间间隔,事件之间的时间间隔,其值以毫秒其值以毫秒(1ms=1/

130、1000 s)为单位为单位n事件:事件:计时器控件只响应一个计时器控件只响应一个Timer事件。也就是说,事件。也就是说,计时器控件对象在间隔了一个计时器控件对象在间隔了一个Interval设定时间后,便设定时间后,便触发一次触发一次Timer事件事件146146 4.计时器控件计时器控件147147 【例例7】建立一个电子时钟建立一个电子时钟Private Sub timer1_timer() timer事件过程 Text1.Text = Time Time是系统时间函数End Sub(1)创立应用程序的用户界面创立应用程序的用户界面(2)设置对象属性设置对象属性 一个计时器控件和一个文本一

131、个计时器控件和一个文本框。计时器控件框。计时器控件Timer1的的Interval属性值设定为属性值设定为1000(1秒秒)(3)编写程序代码编写程序代码4.计时器控件计时器控件148148 【例例8】利用计时器可以按指定间隔时间对字体进行放大利用计时器可以按指定间隔时间对字体进行放大 Private Sub Form_Load() Label1.Caption = 放大 Label1.Width = Form1.Width Label1.Height = Form1.Height Timer1.Interval = 800End SubPrivate Sub Timer1_Timer() I

132、f Label1.FontSize 0 Then s = s - 1 Else If m 0 Then m = m - 1 s = 59 End If End If Text1.Text = Format(m, 00) Text2.Text = Format(s, 00) If s = 0 And m = 0 Then Beep 响铃,即让喇叭发一声响 MsgBox 计时结束 Unload Me End IfEnd Sub程序程序举例举例152152 【例例10】输入两个运算数和运算符输入两个运算数和运算符(+、-、*或或/),组,组 成算式并计算结果,然后显示出来成算式并计算结果,然后显示出

133、来(1)创立用户界面创立用户界面 单项选择按钮组单项选择按钮组Option1、Option2、Option3及及Option4 分别代表分别代表+、-、*(乘乘)和和/(除除)运算运算(2)设置对象属性设置对象属性程序程序举例举例153153 (3)编写程序代编写程序代码码Private Sub Command1_Click() “计算按钮 Dim a As Single, b As Single, t As Single, s As String a = Val(Text1.Text) b = Val(Text2.Text) Select Case True Case Option1.Val

134、ue + 运算 s = + t = a + b Case Option2.Value - 运算 s = - t = a - b Case Option3.Value * 运算 s = * t = a * b Case Option4.Value / 运算 s = / t = a / b End Select Text3.Text = a & s & b & = & tEnd Sub程序程序举例举例154154 Private Sub Command2_Click() “去除按钮 Text1.Text = Text2.Text = Text3.Text = End SubPrivate Sub

135、Command3_Click() “结束按钮 Unload MeEnd SubPrivate Sub Form_Load() Option1.Value = True 默认为“+运算End Sub5.循环控制结构循环控制结构 155155 【例例11】在窗体上显示在窗体上显示2至至10各偶数的平方数各偶数的平方数 采用采用Print直接在窗体上输出结果直接在窗体上输出结果Private Sub Form_load() Dim k As Integer Show For k = 2 To 10 Step 2 Print k * k Next kEnd Sub编写程序代码编写程序代码程序运行结果:

136、程序运行结果: 4 16 36 64 100 说明:循环变量说明:循环变量k的初值为的初值为2 、终值为、终值为10、步长值为、步长值为2,即,即从从2开始,每次加开始,每次加2,到,到10为止,控制循环为止,控制循环5次。每次循环次。每次循环都将循环体都将循环体(Print k*k)执行一次执行一次5.循环控制结构循环控制结构nFor.Next循环语句循环语句n格式:格式: For 循环变量初值循环变量初值 To 终值终值 Step 步长值步长值 循环体循环体 Next 循环变量循环变量n功能:本语句指定循环变量取一系列数值,功能:本语句指定循环变量取一系列数值,并且对循环变量的每一个值把循

137、环体执行并且对循环变量的每一个值把循环体执行一次一次n初值、终值和步长值都是数值表达式初值、终值和步长值都是数值表达式n步长值是正数步长值是正数(称为递增循环称为递增循环)n步长值是负数步长值是负数(称为递减循环称为递减循环)n假设步长值为假设步长值为1,那么,那么Step 1可以省略可以省略156156 5.循环控制结构循环控制结构n执行步骤:执行步骤:n(1)求出初值、终值和步长求出初值、终值和步长值,并保存起来值,并保存起来n(2)将初值赋给循环变量将初值赋给循环变量n(3)判断循环变量值是否超判断循环变量值是否超过终值,是那么退出循环,过终值,是那么退出循环,执行执行Next后的语句后

138、的语句n (4)执行循环体执行循环体n (5)遇到遇到Next语句时,语句时,修改循环变修改循环变 量值,即把循量值,即把循环变量的当前值加上步长环变量的当前值加上步长值再赋给循环变量值再赋给循环变量n (6)转到转到(3)去判断循环去判断循环条件条件157157 5.循环控制结构循环控制结构 158158 【例例12】求求S = 1 + 2 + 3 + + 8 采用采用Print直接在窗体上输出结果直接在窗体上输出结果Private Sub Form_load() Show s = 0 For k = 1 To 8 s = s + k Next k Print s=; sEnd Sub编写程

139、序代码编写程序代码程序运行结果:程序运行结果:s= 36控制循环控制循环8次次,每次循环都将循环体每次循环都将循环体(ss+k )执行一次执行一次5.循环控制结构循环控制结构 159159 【例例13】求求T = 8! = 1238 采用采用Print直接在窗体上输出结果直接在窗体上输出结果Private Sub Form_load() Show t = 1 For c = 1 To 8 t = t * c Next c Print T=; tEnd Sub编写程序代码编写程序代码程序运行结果:程序运行结果:T40320语句语句t=t*c也称乘法器。先将也称乘法器。先将t置置1(不能置不能置0

140、)。在循环程序中,常用累加器和累乘器来完成各种计算任务在循环程序中,常用累加器和累乘器来完成各种计算任务5.循环控制结构循环控制结构 160160 【例例14】用用100 元买元买100 只鸡,母鸡只鸡,母鸡3元元1只,小鸡只,小鸡1元元3只,只,问各应买多少只问各应买多少只? 采用采用“穷举法来解此题穷举法来解此题: 从所有可能解中,逐个进行试验,假设满足条件,从所有可能解中,逐个进行试验,假设满足条件,就得到一个解,否那么不是。直到条件满足或判别出就得到一个解,否那么不是。直到条件满足或判别出无解为止。无解为止。令母鸡为令母鸡为x只,小鸡为只,小鸡为y只,根据题意可知只,根据题意可知 y

141、= 100 x 开始先让开始先让x初值为初值为1,以后逐次加,以后逐次加1,求,求x为何值时,条为何值时,条件件3x+y/3=100成立。如果当成立。如果当x到达到达30时还不能使条件时还不能使条件成立,那么可以断定此题无解。成立,那么可以断定此题无解。5.循环控制结构循环控制结构 161161 采用采用Print直接在窗体上输出结果,程序代码直接在窗体上输出结果,程序代码程序运行结果:程序运行结果: 母鸡只数为:母鸡只数为:25 小鸡只数为:小鸡只数为:75Private Sub Form_load() Dim x As Integer, y As Integer Show For x =

142、1 To 30 y = 100 - x If 3 * x + y / 3 = 100 Then Print 母鸡只数为:; x, Print 小鸡只数为:; y End If Next xEnd Sub5.循环控制结构循环控制结构nWhile.Wend循环语句循环语句n格式:格式: While 条件条件 循环体循环体 Wend n功能:功能:当条件成立当条件成立(为真为真)时,时,执行循环体;当条件不成立执行循环体;当条件不成立(为假为假)时,终止循环。时,终止循环。n与与For循环的区别:循环的区别:n For:指定循环次数:指定循环次数n While:指定循环终止条件指定循环终止条件162

143、162 5.循环控制结构循环控制结构 163163 【例【例15】编写程序,判断一个正整数】编写程序,判断一个正整数=3是否为素数是否为素数当用当用2, 3, 的整数去除它时均不能除尽的整数去除它时均不能除尽, 那么为素那么为素数。数。Private Sub Form_Click() Dim n As Integer n = InputBox(请输入一个正整数=3) k = Int(Sqr(n) i = 2 Swit = 0 While i = k And Swit = 0 If n Mod i = 0 Then Swit = 1 Else i = i + 1 End If Wend If S

144、wit = 0 Then Print n; 是一个素数 Else Print n; 不是一个素数 End IfEnd Sub5.循环控制结构循环控制结构nDo.Loop循环语句循环语句n格式格式1:Do While|Until 条件条件 循环体循环体n Loopn格式格式2:Do 循环体循环体 Loop While|Until条件条件n功能:当指定的功能:当指定的“循环条件为真或直循环条件为真或直到指定的到指定的“循环条件变为真之前,重循环条件变为真之前,重复执行循环体复执行循环体164164 5.循环控制结构循环控制结构165165 DoLoop Until循环逻辑框图 DoLoop Whi

145、le循环逻辑框图 5.循环控制结构循环控制结构166166 Do UntilLoop循环逻辑框图 Do WhileLoop循环逻辑框图5.循环控制结构循环控制结构 167167 【例例16】求求 S S1 12 2 + 2 + 22 2 + + + 100 + 1002 2 Private Sub Form_load() Dim n As Integer, s As Long Show n = 1: s = 0 Do While n = 100 s = s + n * n n = n + 1 Loop Print s=; sEnd Sub采用采用Do While.Loop语句语句采用采用Pri

146、nt直接在窗体上输出结果,程序代码直接在窗体上输出结果,程序代码程序运行结果:程序运行结果:S3383505.循环控制结构循环控制结构 168168 【例例17】用用/41 - 1/3 + 1/5 - 1/7 + 级数级数,求求的近似的近似值。当最后一项的绝对值小于值。当最后一项的绝对值小于10-5时,停止计算时,停止计算Private Sub Form_load() Show Dim pi As Single, n As Long, s As Integer pi = 0: n = 1: s = 1 Do While n =0.00001 pi = pi + s / n s = -s n =

147、 n + 2 Loop Print =; pi * 4End Sub采用采用Do While.Loop语句语句采用采用Print直接在窗体上输出结果,程序代码直接在窗体上输出结果,程序代码程序运行结果:程序运行结果:3.1415755.循环控制结构循环控制结构 169169 【例例18】输入两个正整数,求它们的最大公约数输入两个正整数,求它们的最大公约数用用“辗转相除法算法:求出辗转相除法算法:求出m/n余数余数p,假设,假设p0,n即为最大公约数;假设即为最大公约数;假设p非非0,那么把原来的分母,那么把原来的分母n作为新的分子作为新的分子m,把余数,把余数p作为新的分母作为新的分母n继续求

148、解。继续求解。(1)创立用户界面创立用户界面(2)设置对象属性设置对象属性5.循环控制结构循环控制结构 170170 (3)编写的编写的“计算按钮计算按钮Click事件过程代码如下:事件过程代码如下: Private Sub command1_click() Dim m As Integer, n As Integer, p As Integer m = Val(Text1.Text) n = Val(Text2.Text) If m = 0 Or n = 0 Then MsgBox 数据错误! End End If Do p = m Mod n m = n n = p Loop While

149、p 0 Text3.Text = mEnd Sub5.循环控制结构循环控制结构n循环出口语句循环出口语句n格式:格式: Exit For|Do n功能:功能:直接从直接从For循环或循环或Do循环中退出循环中退出 n 当程序运行时遇到当程序运行时遇到Exit语句时,就不再执行循语句时,就不再执行循环体中的任何语句而直接退出,转到循环语句环体中的任何语句而直接退出,转到循环语句(Next、Loop)的下面继续执行的下面继续执行171171 5.循环控制结构循环控制结构 172172 【例【例19】设计一个】设计一个“加法器程序加法器程序,把每次输入的数累加。把每次输入的数累加。当输入当输入-1时

150、结束程序的运行。时结束程序的运行。Private Sub Form_load() Dim x As Single, Sum As Single Show Sum = 0 Do While True 条件为真,循环无终止进行下去 x = Val(InputBox(“请输入要参加的数 _ (-1表示结束), 输入数据) If x = -1 Then Exit Do End If Sum = Sum + x Text1.Text = Sum Loop MsgBox 累加运算结束“End Sub(1)创立用户界面创立用户界面(2)设置对象属性设置对象属性(3)编写程序代码编写程序代码6.多重循环多重循

151、环 173173 【例【例20】多重循环程序例如】多重循环程序例如 Private Sub Form_load() Show For i = 1 To 3 外循环 For j = 5 To 7 内循环 Print i, j Next j Next iEnd Sub多重循环是指循环体内含有循环语句的循环多重循环是指循环体内含有循环语句的循环注意内、外循环层次要分清,不能交叉注意内、外循环层次要分清,不能交叉程序运行结果:程序运行结果: 15 16 17 25 26 27 35 36 376.多重循环多重循环 174174 【例【例21】编一程序,输出以下所示的图形】编一程序,输出以下所示的图形

152、本例可采用本例可采用两重循环两重循环来实现。外循环控制输出来实现。外循环控制输出7行,行,内循环控制每行输出要求的字符数。内循环控制每行输出要求的字符数。 在进入内循环之前,使用在进入内循环之前,使用Print Tab()来对起始输来对起始输出位置定位,退出内循环后,使用出位置定位,退出内循环后,使用Print来控制换行。来控制换行。6.多重循环多重循环175175 采用采用Print直接在窗体上输出结果,程序代码直接在窗体上输出结果,程序代码Print Chr(i+48)与与Print i有所不同有所不同Private Sub Form_load() Show For i = 1 To 7

153、Print Tab(10 - i); For j = 1 To 2 * i - 1 Print Chr(i + 48); Next j Print Next IEnd Sub7. GoTo型控制型控制nGoTo语句语句n格式:格式: GoTo 行号行号|标号标号 n功能:改变程序的执行顺序,跳转到程功能:改变程序的执行顺序,跳转到程序中指定的行开始执行序中指定的行开始执行 n On.GoTo语句语句n格式:格式: On 数值表达式数值表达式 GoTo 行号表行号表|标号表标号表n功能:根据功能:根据“数值表达式的值,控制转数值表达式的值,控制转移到几个指定的语句行中的一个语句行。移到几个指定的

154、语句行中的一个语句行。类似于类似于Select.End Select语句。语句。176176 8.选择控件选择控件列表框与组合框列表框与组合框n列表框列表框n用途:用于列出可供用户用途:用于列出可供用户选择的工程列表,用户可选择的工程列表,用户可从中选择一个或多个选项。从中选择一个或多个选项。n属性:属性:nList:是一个字符型数组:是一个字符型数组, 存放列表框的表项,数存放列表框的表项,数组的下标从组的下标从0开始。开始。n List1.List(0)的值为的值为“教授教授n List1.List(1)的值为的值为“副教授副教授n List1.List(2)的值为的值为“讲师讲师n Li

155、st1.List(3)的值为的值为“助教助教177177 8.选择控件选择控件列表框与组合框列表框与组合框nListCount:返回列表框中表项的数目:返回列表框中表项的数目nListIndex:返回已选定表项的顺序号:返回已选定表项的顺序号(索引索引)。假设。假设未选定任何项,那么未选定任何项,那么ListIndex的值为的值为-1nMultiSelect:设置是否允许同时选择多个表项:设置是否允许同时选择多个表项nSelected:逻辑值,列表框中某一表项是否被选中:逻辑值,列表框中某一表项是否被选中nSorted:设置列表框中各表项是否按字母顺序排列:设置列表框中各表项是否按字母顺序排列

156、nText:存放当前选定表项的文本内容:存放当前选定表项的文本内容n假设列表框假设列表框List1中有四个表项,并已选定第中有四个表项,并已选定第2项,项,那么有:那么有:n List1.List(0)的值为教授的值为教授n List1.ListCount个数为个数为4n List1.ListIndex 为为1n List1.Text的值为副教授的值为副教授n List1.Selected(1)为为Truen List1.Selected(0)为为False178178 8.选择控件选择控件列表框与组合框列表框与组合框n事件:可接收事件:可接收Click、DblClick等事件等事件 n方法:

157、方法:n AddItem方法:用于把一个列表项参加列表方法:用于把一个列表项参加列表框框n 格式:格式: 对象对象.AddItem 列表项列表项,索,索引引 例:例:List1.AddItem 海南省海南省 ,28n Clear和和RemoveItem方法:用于删除列表项方法:用于删除列表项n列表框表项的输出:列表框表项的输出:n用鼠标单击列表框内某一表项,那么该表项用鼠标单击列表框内某一表项,那么该表项值存放在值存放在Text属性中。例如:属性中。例如:n x = List1.Text 把表项值存放在把表项值存放在x变量中变量中n指定索引号来取表项的内容,例如:指定索引号来取表项的内容,例如

158、:n List1.ListIndex = 3n x = List1.Text 179179 8.选择控件选择控件列表框与组合框列表框与组合框180180 【例例22】设计一个程序,找出设计一个程序,找出100800范围内所有能同范围内所有能同时被时被3和和8整除的自然数整除的自然数(1)创立用户界面创立用户界面(2)设置对象属性设置对象属性8.选择控件选择控件列表框与组合框列表框与组合框181181 Private Sub Form_load() Label1.Caption = 按“显示按钮,可以在列表框中 _ & 显示100到800范围内能同时被3和8整除的自然数End SubPrivat

159、e Sub Command1_Click() List1.Clear For n = 100 To 800 If (n Mod 3 = 0) And (n Mod 8 = 0) Then List1.AddItem n End If Next n Label1.Caption = 符合条件的自然数已显示在列表框中End Sub(3)编写程序代码编写程序代码8.选择控件选择控件列表框与组合框列表框与组合框182182 【例例23】设计一个选课程序设计一个选课程序(1)创立用户界面创立用户界面(2)设置对象属性设置对象属性 用户先在左列表框用户先在左列表框(List1)选择一个或多个选修课,当单选

160、择一个或多个选修课,当单击击“显示按钮时,在右列表框显示按钮时,在右列表框(List2)中将显示出用户选中将显示出用户选中的所有课程。单击中的所有课程。单击“去除按钮时,将去除右列表框中去除按钮时,将去除右列表框中的内容的内容8.选择控件选择控件列表框与组合框列表框与组合框183183 Private Sub Form_load() List1.AddItem 电子商务 List1.AddItem 网页制作 List1.AddItem Internet简明教程 List1.AddItem 计算机网络根底 List1.AddItem 多媒体技术End SubPrivate Sub command

161、1_click() 显示 List2.Clear 去除列表框的内容 For i = 0 To List1.ListCount - 1 逐项判断 If List1.Selected(i) Then 真时为选定 List2.AddItem List1.List(i) End If Next iEnd SubPrivate Sub command2_click() 去除 List2.ClearEnd Sub(3)编写程序代码编写程序代码8.选择控件选择控件列表框与组合框列表框与组合框n组合框组合框n用途:列表框和文本框的组合。用途:列表框和文本框的组合。n属性:属性:nStyle:该属性取值为:该属

162、性取值为0,1或或2,分别决,分别决定了组合框的三种不同类型定了组合框的三种不同类型nText:是用户所选定工程的文本或直接:是用户所选定工程的文本或直接从文本框输入的文本从文本框输入的文本184184 8.选择控件选择控件列表框与组合框列表框与组合框185185 【例【例24】编制程序,把一批课程名放入组合框中,再对组】编制程序,把一批课程名放入组合框中,再对组合框进行工程显示、添加、删除、全部删除等操作合框进行工程显示、添加、删除、全部删除等操作(1)创立用户界面创立用户界面(2)设置对象属性设置对象属性组合框的组合框的Style属性为属性为0,TabIndex(键序键序)为为0 两个标签

163、;四个命令按钮;两个标签;四个命令按钮; 一个文本框一个文本框Text1,用来,用来显示当前的选修课总课程数显示当前的选修课总课程数8.选择控件选择控件列表框与组合框列表框与组合框186186 Private Sub Form_load() Combo1.AddItem 电子商务 Combo1.AddItem 网页制作 Combo1.AddItem Internet简明教程 Combo1.AddItem 计算机网络根底 Combo1.AddItem 多媒体技术 Combo1.Text = 置空值 Text1.Text = Combo1.ListCount 表项个数End SubPrivate

164、Sub command1_click() “添加 If Len(Combo1.Text) 0 Then Combo1.AddItem Combo1.Text Text1.Text = Combo1.ListCount End If Combo1.Text = Combo1.SetFocus 设置焦点End Sub(3)编写程序代码编写程序代码8.选择控件选择控件列表框与组合框列表框与组合框187187 Private Sub command2_click() “删除 Dim ind As Integer ind = Combo1.ListIndex If ind -1 Then -1表示无表项

165、 Combo1.RemoveItem ind 删除已选定的表项 Text1.Text = Combo1.ListCount End IfEnd SubPrivate Sub command3_click() “全清 Combo1.Clear Text1.Text = Combo1.ListCountEnd SubPrivate Sub command4_click() “退出 EndEnd Sub9. 滚动条和框架控件滚动条和框架控件n滚动条滚动条n用途:用途:水平滚动条和垂直滚动条水平滚动条和垂直滚动条n属性:属性:nMin、Max: Min默认值为默认值为0,Max默认值为默认值为3276

166、7nValue:设置滚动块在滚动条中的位置值:设置滚动块在滚动条中的位置值nSmallchange:最小变动值属性:最小变动值属性nLargeChange:最大变动值属性:最大变动值属性n事件:事件:nScroll事件:当用鼠标拖动滚动块时,即触发事件:当用鼠标拖动滚动块时,即触发nChange事件:当改变事件:当改变Value属性值时,即触发属性值时,即触发188188 9. 滚动条和框架控件滚动条和框架控件189189 【例例25】设计一个调色板应用程序设计一个调色板应用程序建立三个水平滚动条作为红、绿、蓝三种根本颜色的建立三个水平滚动条作为红、绿、蓝三种根本颜色的输入工具,合成的颜色显示

167、在右边的标签中,用其背输入工具,合成的颜色显示在右边的标签中,用其背景颜色属性景颜色属性BackColor值的改变实现合成颜色的调色。值的改变实现合成颜色的调色。三个水平滚动条名称从上至下分别为三个水平滚动条名称从上至下分别为HScroll1、HScroll2、HScroll3,其,其Max属性均设置为属性均设置为255,Min属性均设属性均设置为置为0, SmallChange属性设置为属性设置为1,LargeChange属性设置为属性设置为10,Value设置为设置为0。显示合成颜色的标签名为显示合成颜色的标签名为Label1(1)创立用户界面,设置对象属性创立用户界面,设置对象属性9.

168、滚动条和框架控件滚动条和框架控件190190 Private Sub HScroll1_Change() Label1.BackColor = RGB(HScroll1.Value, _ HScroll2.Value, HScroll3.Value)End SubPrivate Sub HScroll2_Change() Label1.BackColor = RGB(HScroll1.Value, _ HScroll2.Value, HScroll3.Value)End SubPrivate Sub HScroll3_Change() Label1.BackColor = RGB(HScrol

169、l1.Value, _ HScroll2.Value, HScroll3.Value)End Sub(2)编写程序代码编写程序代码 功能要求:通过操作功能要求:通过操作(单击或拖动单击或拖动)滚动条,直接修改滚动条,直接修改RGB设置,从而得到标签背景所需的颜色设置,从而得到标签背景所需的颜色9. 滚动条和框架控件滚动条和框架控件n框架框架n用途:用途:作为容器放置其他控件对象,将这些控件对象作为容器放置其他控件对象,将这些控件对象分成可标识的控件组;框架内的所有控件将随框架一分成可标识的控件组;框架内的所有控件将随框架一起移动、显示和消失。起移动、显示和消失。n属性:属性:n Name属性和

170、属性和Caption属性属性n事件:事件:n可以响应可以响应Click和和Dblclick事件。事件。 在应用程序中一般不需要编写有关框架的事件过程在应用程序中一般不需要编写有关框架的事件过程191191 9. 滚动条和框架控件滚动条和框架控件192192 【例例26】控制文本的字体、字号及颜色控制文本的字体、字号及颜色在窗体上设置在窗体上设置3个框架个框架Frame1、Frame2和和Frame3,2个命令按钮和个命令按钮和1个文本框个文本框(1)创立用户界面,设置对象属性创立用户界面,设置对象属性 功能要求:在三个框架中分别选择字体、字号和颜色,单击“确定按钮后,文本框中的文本相应属性会发

171、生变化9. 滚动条和框架控件滚动条和框架控件193193 Private Sub Form_Load() Option1.Value = True Option3.Value = True Option5.Value = True Text1.FontName = 宋体 Text1.FontSize = 16 Text1.ForeColor = RGB(0, 0, 255)End SubPrivate Sub Command2_Click() EndEnd Sub(2)编写程序代码编写程序代码Private Sub Command1_Click() If Option1.Value Then

172、Text1.FontName = 宋体 Else Text1.FontName = 幼圆 End If If Option3.Value Then Text1.FontSize = 16 Else Text1.FontSize = 20 End If If Option5.Value Then Text1.ForeColor = RGB(0, 0, 255) Else Text1.ForeColor = RGB(255, 0, 0) End IfEnd Sub程序程序举例举例194194 【例【例27】打印】打印“九九乘法表九九乘法表(1)创立用户界面创立用户界面(2)设置对象属性设置对象属性

173、(3)编写程序代码编写程序代码Private Sub Form_load() Show FontSize = 15 设置字号 Print Tab(12); 九九乘法表 输出标题 FontSize = 12 Print 输出空行 For k = 0 To 9 Print Tab(k * 4); k; 输出第一行数字 Next k Print 换行 For j = 1 To 9 外循环 Print j; For k = 1 To j 内循环 Print Tab(k * 4); j * k; 输出乘积 Next k Print 换行 Next jEnd Sub程序程序举例举例195195 【例例28

174、】输入一个十进制整数,将其转换成二进制数、八输入一个十进制整数,将其转换成二进制数、八进制数或十六进制数进制数或十六进制数(1)分析:模仿十进制整数转换成二进制数的方法分析:模仿十进制整数转换成二进制数的方法(即即“除除2取余取余),采用逐次,采用逐次“除除n取余法取余法(n为为2,8或或16),即用,即用n不断去除要转换的十进制数,直至商为不断去除要转换的十进制数,直至商为0为止,将每次所得为止,将每次所得的余数逆序排列的余数逆序排列(以最后余数为最前位以最后余数为最前位),即得到所转换的,即得到所转换的n进制数。进制数。(2)创立用户界面创立用户界面,设置对象属性设置对象属性列表框的名称为

175、列表框的名称为List1,属性设置了,属性设置了三个表项:二进制、三个表项:二进制、八进制和十六进制,八进制和十六进制,ItemData属性设置属性设置了相应的值:了相应的值:2,8和和16程序程序举例举例196196 Private Sub Command1_Click() “转换按钮单击事件过程 Dim y As String, x As Long, s As Integer Dim Ch As String, n As Integer Ch = 0123456789ABCDEF 换码表 If List1.ListIndex = -1 Then n = 2 未选时,那么以二进制转换 Els

176、e n = List1.ItemData(List1.ListIndex) End If y = : x = Val(Text1.Text) If x = 0 Then Text2.Text = MsgBox 请输入要转换的十进制数 Exit Sub End If Do While x 0 s = x Mod n 取余数 x = Int(x / n) 求商 y = Mid(Ch, s + 1, 1) + y 换码,反序参加 Loop Text2.Text = yEnd Sub(3)编写程序代码编写程序代码Private Sub Command2_Click() “结束 Unload MeEnd

177、 Sub程序程序举例举例197197 【例【例29】把一个正整数写成假设干个素数相乘的形式】把一个正整数写成假设干个素数相乘的形式 例如:例如: 10=2*5 24=2*2*2*3 76=2*2*19Private Sub Form_load() Show x = Val(InputBox(请输入一个正整数) Print: Print x; =; For i = 2 To x Do While (x Mod i = 0) 求相同因子 x = x / i Print i; If x 1 Then Print *; Loop Next IEnd Sub(1)创立用户界面创立用户界面(2)设置对象属

178、性设置对象属性(3)编写程序代码编写程序代码采用采用Print直接在窗体上输出结果直接在窗体上输出结果第第7章章 数组与记录数组与记录沈阳理工大学应用技术学院沈阳理工大学应用技术学院0.本章内容本章内容n数组的概念数组的概念 n动态数组动态数组 n数组的根本操作数组的根本操作 n数组的初始化数组的初始化 n控件数组控件数组n记录记录 n记录数组记录数组 199199 1.数组的概念数组的概念 n数组的定义数组的定义 n第一种格式第一种格式 n说明符说明符 数组名数组名(下标下标) As 类型类型n例如:例如:Dim y(5As Integern定义了一个一维数组,名字为定义了一个一维数组,名字

179、为y,类型为,类型为Integer,占据,占据6个个05整型变量的整型变量的空间空间n说明符说明符 数组名数组名(下标上界下标上界1,下标上界下标上界2) As 类型类型n例如:例如:Dim Test(2,3) As Integern定义了一个二维数组,名字为定义了一个二维数组,名字为Test,类型,类型为为Integer,该数组有,该数组有3行行024列列03,占据,占据1234个整型变量个整型变量的空间的空间200200 1.数组的概念数组的概念 201201 1.数组的概念数组的概念 n说明:说明:n “说明符为保存字,可以为说明符为保存字,可以为Dim,Public,Private,S

180、tatic中的任意一个。中的任意一个。n数组名的命名规那么与变量的命名相同。数组名的命名规那么与变量的命名相同。 “As类类型用来说明型用来说明“数组元素的类型,可以是数组元素的类型,可以是Integer,Long,Single,Double,Currency,String等根本类型或用户定义的类型,也可以等根本类型或用户定义的类型,也可以是是Variant类型。如果省略类型。如果省略“As类型,那么数类型,那么数组为组为Variant类型。类型。n 数组必须先定义,后使用。数组必须先定义,后使用。n缺省缺省为为0,假设希望下标从,假设希望下标从1开始,可在开始,可在模块的通用局部使用模块的通

181、用局部使用Option Base语句将设为语句将设为1。其使用格式是:。其使用格式是:n Option Base 0|1 后面的参数只后面的参数只能取能取0或或1n 如:如:Option Base 1 将数组将数组声明中缺省声明中缺省下标设为下标设为1 n要注意区分要注意区分“可以使用的最大下标值和可以使用的最大下标值和“元素元素个数。个数。202202 1.数组的概念数组的概念 n第二种格式第二种格式 n说明符说明符 数组名数组名(下界下界To上界上界,下界下界To上上界界)n例如:例如:Dim Arr(-2,3) n定义了一个一维数组定义了一个一维数组Arr,数组元素,数组元素Arr(-2

182、),Arr(-1),Arr(0),Arr(1),Arr(2),Arr(3) 共共6个元素。个元素。n注意:注意:n数组命名应数组命名应“见名知义。见名知义。n在同一过程中,数组与简单变量不能同名。在同一过程中,数组与简单变量不能同名。n 数组每一维元素的个数必须是常数,不能是数组每一维元素的个数必须是常数,不能是变量或表达式。变量或表达式。203203 1.数组的概念数组的概念 n在在实实际际使使用用时时,可可能能需需要要数数组组的的上上界界值值和和下下界界值值,这这可可以以通通过过LBound函函数数和和UBound函函数数来来求求得得。其格式为:其格式为:n LBound数组名数组名,维,

183、维n UBound数组名数组名,维,维n 两两个个函函数数分分别别返返回回数数组组中中指指定定维维的的下下界界和和上界。上界。n默认数组默认数组n省略省略As子句,那么数组为变体类型子句,那么数组为变体类型(Variant)n即同一个数组中可以存放各种不同类型的数据。即同一个数组中可以存放各种不同类型的数据。204204 2.动态数组动态数组 n动态数组的定义动态数组的定义n建立动态数组包括声明和大小说明两步:建立动态数组包括声明和大小说明两步:n声明一个没有下标声明一个没有下标(或称空维数或称空维数)的数组的数组Public | Dim 数组名数组名() As 类型类型n在过程中用在过程中用

184、ReDim语句指明该数组的大小语句指明该数组的大小ReDim Preserve 数组名数组名(下标下标1,下标,下标2) As类型类型重新定义动态数组,按定义的上下界重新分配存储单元重新定义动态数组,按定义的上下界重新分配存储单元205205 静态数组:静态数组:用数值常数或符号常量作下标定维,用数值常数或符号常量作下标定维, 数组元素的个数固定不变数组元素的个数固定不变动态数组:动态数组:用变量作下标定维,元素的个数在用变量作下标定维,元素的个数在 程序运行时可以改变,不占内存程序运行时可以改变,不占内存2.动态数组动态数组 n声明声明F为动态数组的例如:为动态数组的例如:n Private

185、 Sub Command1_Click()n Dim F() As Integer 声声明一个整型动态数组明一个整型动态数组n n Size=20n ReDim F(Size) n n End Subn说明:说明:nReDim语语句句是是一一个个可可执执行行语语句句,只只能能出出现现在在过过程程中中,并并且且可可以以屡屡次次使使用用,改改变变数数组组的的维维数数和和大大小小。但是,不能用但是,不能用ReDim语句改变数组类型。语句改变数组类型。n 如:如: ReDim x(10)n ReDim x(20)n x(20) = 30n Print x(20)n ReDim x(20, 5)n x(

186、20, 5) = 10 n Print x(20, 5) 206206 2.动态数组动态数组 n每每次次使使用用ReDim语语句句都都会会使使原原来来数数组组中中值值丧丧失失,可可以以在在ReDim后后加加Preserve 参参数数来来保保存存数数组组中中的的数数据据。但但此此时时只只能能改改变变最最后后一一维维的的大大小小,而而不不能改变维数的数目。能改变维数的数目。n 例如:例如:n ReDim a(2,4)n . . .n ReDim Preserve a(2,6)207207 2.动态数组动态数组 n数组的去除和重定义数组的去除和重定义n数组刷新语句数组刷新语句(Erase)n格式:格

187、式:n Erase 数组名数组名,数组名,数组名n功功能能:该该语语句句用用来来去去除除静静态态数数组组的的内内容容,或者释放动态数组占用的内存空间或者释放动态数组占用的内存空间n 例如例如:n Dim Array1(20) As Integern Dim Array2() As Singlen ReDim Array2(9,10) n n Erase Array1,Array2n对对静静态态数数组组,Erase语语句句将将数数组组重重新新初初始始化化; 对对动动态态数数组组,Erase语语句句将将释释放放动动态态数组所使用的内存。数组所使用的内存。208208 3.数组的根本操作数组的根本操

188、作 n数组元素的输入、输出和复制数组元素的输入、输出和复制n数组的引用数组的引用n数数组组是是用用一一个个统统一一的的名名称称表表示示的的、顺顺序序排排列的一组变量。数组中的变量称数组元素列的一组变量。数组中的变量称数组元素n数组主要特点是通过下标来引用数组元素数组主要特点是通过下标来引用数组元素n 注意区分数组定义和数组元素注意区分数组定义和数组元素n Dim x(8) 定定义义x数数组组的的最最大大可可用用下下标标值值是是8n t=x(8) 数组数组x中序号为中序号为8的元素的元素n 说明:说明:n数数组组名名、数数组组类类型型和和维维数数必必须须与与数数组组声声明明时一致时一致n 如如果

189、果建建立立的的是是多多维维数数组组,那那么么引引用用时时必必须须给出多个下标给出多个下标n下下标标值值应应在在数数组组声声明明时时所所指指定定的的范范围围之之内内如如209209 3.数组的根本操作数组的根本操作 n数组元素的输入数组元素的输入n通过通过For循环语句及循环语句及InputBox函数输入函数输入n说说明明:程程序序运运行行后后,在在对对话话框框中中输输入入Zhang,Wang,Li,Zhao,被存入字符串数组,被存入字符串数组stuname中。中。nInputBox函函数数输输入入的的是是字字符符串串类类型型,输输入入数数组组元元素时应注意转换为相应数值。素时应注意转换为相应数

190、值。210210 3.数组的根本操作数组的根本操作 n多维数组元素的输入通过多重循环实现多维数组元素的输入通过多重循环实现211211 3.数组的根本操作数组的根本操作 n数组元素的输出数组元素的输出n通过通过Print方法实现方法实现212212 3.数组的根本操作数组的根本操作 n数组元素的复制数组元素的复制n单个数组元素可以象简单变量一样复制单个数组元素可以象简单变量一样复制n 复制整个数组用复制整个数组用For循环语句循环语句213213 3.数组的根本操作数组的根本操作214214 【例例1】编写程序,把输入的编写程序,把输入的编写程序,把输入的编写程序,把输入的1010个整数按逆序

191、输出。个整数按逆序输出。个整数按逆序输出。个整数按逆序输出。本例利用本例利用InputBox函数来输入函数来输入10个整数,输入完毕个整数,输入完毕后再通过后再通过For循环,采用循环,采用Print直接在窗体上输出结果。直接在窗体上输出结果。Private Sub Command1_Click( )Dim a(10) As Integer, i% Print 输入的数据为 For i = 1 To 10 a(i) = InputBox(请输入一个整型数) Print a(i); Next i Print Print 逆序输出为 For i = 10 To 1 Step -1 Print a(

192、i); Next iEnd Sub(1)创立用户界面创立用户界面 设置对象属性设置对象属性(2)编写程序代码编写程序代码3.数组的根本操作数组的根本操作215215 本例程序中,先通过本例程序中,先通过Dim语句为数组语句为数组a定义维数及定义维数及下标范围,也即为数组安排一块连续的内存存储区,但下标范围,也即为数组安排一块连续的内存存储区,但这并不意味着内存里该数组已建立了应有的内容这并不意味着内存里该数组已建立了应有的内容 本例中输入数组中的数据是由本例中输入数组中的数据是由InputBox函数来实函数来实现的,共循环了现的,共循环了10次,输入的次,输入的10个数依次赋值给下标个数依次赋

193、值给下标变量变量a(1)a(10) 建立了数组中的数据后,就可以按要求进行处理建立了数组中的数据后,就可以按要求进行处理3.数组的根本操作数组的根本操作216216 【例例2】从键盘输入从键盘输入10个数,用冒泡排序从小到大排序。个数,用冒泡排序从小到大排序。排序过程:相邻元素二二比较排序过程:相邻元素二二比较1比较第一个数与第二个数,比较第一个数与第二个数,假设为逆序假设为逆序a1a2,那么交,那么交换;然后比较第二个数与第三个换;然后比较第二个数与第三个数;依次类推,直至第数;依次类推,直至第n-1个数和个数和第第n个数比较为止个数比较为止第一趟冒泡第一趟冒泡排序,结果最大的数被放在最后排

194、序,结果最大的数被放在最后一个元素位置上一个元素位置上2对前对前n-1个数进行第二趟冒个数进行第二趟冒泡排序,结果使次大的数被安置泡排序,结果使次大的数被安置在第在第n-1个元素位置个元素位置3重复上述过程,共经过重复上述过程,共经过n-1趟冒泡排序后,排序结束趟冒泡排序后,排序结束3.数组的根本操作数组的根本操作217217 Private Sub Command1_Click( ) Dim t%,i%,j%,a(10)As Integer For i = 1 To 10 a(i)= InputBox( 输入一个整数 ) Next i Print 输入的10个整数为 For i = 1 To

195、 10 Print a(i); Next i Print Print For i = 1 To 9 For i = 1 To 9 For j = i + 1 To 10 For j = i + 1 To 10 If a(i) a(j) Then t=a(i):a(i)=a If a(i) a(j) Then t=a(i):a(i)=a (j):a(j)= t(j):a(j)= t Next j Next j Next i Next i Print Print 排序后的结果为排序后的结果为 For i = 1 To 10 For i = 1 To 10 Print a(i); Print a(i

196、); Next i Next iEnd Sub(1)创立用户界面创立用户界面,设置对象属性设置对象属性(2)编写程序代码编写程序代码3.数组的根本操作数组的根本操作 nFor Each.Next语句语句n与与前前面面的的循循环环语语句句For.Next类类似似,都都是是用用来来执执行行指指定定重重复复次次数数的的循循环环。但但For Each.Next语句专门作用于数组。语句专门作用于数组。n 格式:格式: For Each 成员成员 In 数组名数组名n 循循环环体体 Exit For Next 成员成员n“成成员员是是一一个个Variant变变量量,它它实实际际上上代代表数组中每一个元素表

197、数组中每一个元素n 本本语语句句可可以以对对数数组组元元素素进进行行读读取取、查查询询或或显显示示,它它所所重重复复执执行行的的次次数数由由数数组组中中元元素素的个数确定的个数确定n 在不知道数组中元素的数目时非常有用在不知道数组中元素的数目时非常有用218218 3.数组的根本操作数组的根本操作219219 【例例3】求求1! + 2! + + 10! 的值。的值。(1)创立用户界面设置对象属性创立用户界面设置对象属性(2)编写程序代码编写程序代码Private Sub Form_Load()Dim a(1 To 10) As Long, sum As Long, t As Long Dim

198、 n As Integer Show t = 1 For n = 1 To 10 t = t * n a(n) = t Next n sum = 0 For Each x In a sum = sum + x Next x Print 1! + 2! + 3! + 10! =; sumEnd Sub4.数组的初始化数组的初始化 n用赋值语句或用赋值语句或InputBox函数赋值函数赋值n使用使用Array函数为数组元素赋值函数为数组元素赋值n格式:格式: 数组变量名数组变量名=Array(数组元素值数组元素值)n例:例:Dim D As Variant 定义数组名定义数组名(变体类型变体类型)

199、 D=Array(1, 2, 3, 4) 执行结果:执行结果:1D(0),2D(1), 3D(2), 4D(3)n加上语句加上语句 Option Base 1 设定下界为设定下界为1 执行结果:执行结果:1D(1),2D(2), 3D(3), 4D(4)n Array函数只适用于一维数组初始化函数只适用于一维数组初始化 220220 4.数组的初始化数组的初始化221221 【例例4】输入输入10名学生的成绩,求出最高分和最低分。名学生的成绩,求出最高分和最低分。功能要求:通过功能要求:通过Array函数输入函数输入10个分数;单击个分数;单击“查查找按钮找按钮(Command1)后,开始查找

200、最高分和最低分,后,开始查找最高分和最低分,找到后显示在标签找到后显示在标签Label1上上(1)创立用户界面设置对象属性创立用户界面设置对象属性(2)编写程序代码编写程序代码4.数组的初始化数组的初始化222222 Option Base 1 Dim score As VariantPrivate Sub Form_Load() Label1.Caption = 单击“查找按钮开始查找最高分和最低分 score = Array(89, 96, 81, 67, 79, 90, 63, 85, 95, 83)End SubPrivate Sub Form_Load() Dim max As In

201、teger, min As Integer max = score(1) 设定初值 min = score(1) For i = 2 To 10 If max score(i) Then 找最低分 min = score(i) End If Next i Label1.Caption = 最高分: + Str(max) + _ Chr(13) + 最低分: + Str(min) Chr(13)起换行作用End Sub5.控件控件数组数组n根本概念根本概念n一组具有相同名称、类型和事件过程的控件。一组具有相同名称、类型和事件过程的控件。n建建立立时时系系统统给给每每个个元元素素赋赋一一个个唯唯一

202、一的的索索引引号号(Index)。通通过过返返回回的的下下标标值值区区分分控控件件数数组组中的各个元素。中的各个元素。n例例如如,Label1(0),Label1(1),Label1(2),n 但但 Label1, Label2, Label3, 不是控件数组不是控件数组n 例例:Private Sub cmdName _Click(Index As Integer)n n If Index=3 then 处处理理第四个命令按钮的操作第四个命令按钮的操作n End If n n End Sub223223 5.控件控件数组数组n控件数组的建立控件数组的建立n控控件件数数组组中中每每一一个个元元

203、素素都都是是控控件件,它它的的定定义义方式与普通数组不同。方式与普通数组不同。 n通过以下两种方法建立控件数组通过以下两种方法建立控件数组n将将窗窗体体上上已已有有的的类类型型相相同同的的多多个个控控件件的的Name属属性性设置为同一值。设置为同一值。n复制已有的控件并将其粘贴到窗体上。复制已有的控件并将其粘贴到窗体上。224224 5.控件控件数组数组225225 【例【例5】按图设计窗体,其中一组】按图设计窗体,其中一组(共共5个个)单项选择按钮构单项选择按钮构成控件数组,要求当单击某个单项选择按钮时,能够改成控件数组,要求当单击某个单项选择按钮时,能够改变文本框中文字的大小变文本框中文字

204、的大小控件数组控件数组5.控件控件数组数组226226 (1)创立用户界面设置对象属性创立用户界面设置对象属性 建立一个文本框建立一个文本框Text1,其,其Text属性设置为属性设置为“控件数控件数组的使用。组的使用。 再建立一个标签,其再建立一个标签,其Caption属性为属性为“字号控制。字号控制。 设计控件数组设计控件数组Option1,其中包含,其中包含5个单项选择按钮个单项选择按钮对象具体操作方法:对象具体操作方法: 画出第一个单项选择按钮控件,名称采用默认的画出第一个单项选择按钮控件,名称采用默认的Option1。此时该控件处于选定状态。此时该控件处于选定状态。 单击工具栏上的单

205、击工具栏上的“复制按钮复制按钮(或按或按Ctrl+C)。 单击工具栏上的单击工具栏上的“粘贴按钮粘贴按钮(或按或按Ctrl+V),此,此时系统弹出一个对话框时系统弹出一个对话框5.控件控件数组数组227227 单击单击“是,就建立一个控件数组元素,其是,就建立一个控件数组元素,其Index属性为属性为1,而已,而已画出的第一个控件的画出的第一个控件的Index属性值为属性值为0。 通过鼠标拖放可以调整新控件的位置通过鼠标拖放可以调整新控件的位置 继续单击继续单击“粘贴按钮粘贴按钮(或按或按Ctrl+V)和调整控件位置,可得到和调整控件位置,可得到控件数组中的其他三个控件,其控件数组中的其他三个

206、控件,其Index属性值分别为属性值分别为2,3和和4(即从上即从上而下为而下为0,1,2,3,4) 设置控件数组各元素设置控件数组各元素(从上而下从上而下)的的Caption属性分别为属性分别为10,14,18,24和和28 5.控件控件数组数组228228 (2)编写程序代码编写程序代码Private Sub Form_Load() Option1(0).Value = True 选定第一个单项选择按钮 Text1.FontSize = 10 设定文本框中的字号End SubPrivate Sub Option1_Click(Index As Integer) Select Case In

207、dex 系统自动返回Index值 Case 0 Text1.FontSize = 10 Case 1 Text1.FontSize = 14 Case 2 Text1.FontSize = 18 Case 3 Text1.FontSize = 24 Case 4 Text1.FontSize = 28 End SelectEnd Sub5.控件控件数组数组229229 【例例6】起泡排序法演示程序起泡排序法演示程序功能要求:程序运行后自动产生功能要求:程序运行后自动产生8个两位随机整数,单击个两位随机整数,单击“排序排序按钮按钮(Command1)时,即启动排时,即启动排序过程序过程 ,通过,

208、通过MsgBox函数来暂函数来暂停程序运行停程序运行(1)创立用户界面,设置对象属创立用户界面,设置对象属性性 窗体上含有一个命令按钮和窗体上含有一个命令按钮和一个文本框控件数组一个文本框控件数组Text1(1)Text1(8)用来用来显示演示的显示演示的8个数个数(2)编写程序代码编写程序代码5.控件控件数组数组230230 Const n = 8 声明符号常量Option Base 1Private Sub Form_Load() Randomize For i = 1 To n 产生n 个随机数 Text1(i).ForeColor = RGB(0, 0, 0) 用黑色显示 Text1(

209、i).Text = Int(90 * Rnd + 10) Next iEnd SubPrivate Sub Command1_Click() For j = 1 To n - 1 外循环 MsgBox 准备进行第 + Str(j) + 次比较,按回车键继续 For i = 1 To n - j 内循环 If Val(Text1(i).Text) Val(Text1(i + 1).Text) Then t = Text1(i).Text Text1(i).Text = Text1(i + 1).Text Text1(i + 1).Text = t End If Next i Text1(n -

210、j + 1).ForeColor = RGB(255, 0, 0) 沉底数用红色表示 Next j MsgBox 排序完毕End Sub6. 记记 录录n记录类型记录类型n记录类型定义格式:记录类型定义格式:n Private|Public Type 数据类型名数据类型名n元素名元素名 (下标下标) As 类型名类型名n 元素名元素名 (下标下标) As 类型名类型名n n End Typen记录定义格式:记录定义格式:n Structure 记录名记录名n 成员列表成员列表n End Structuren记记录录类类型型的的所所有有成成员员元元素素组组成成“成成员员列表,也称列表,也称“域表

211、。域表。231231 6. 记记 录录n例例如如: 对对于于一一个个学学生生的的“学学号号、“姓姓名名、“性性别别、“年年龄龄、“入入学学成成绩绩等等数数据据,为为了了处处理理数数据据的的方方便便,常常常常需需要要把把这这些些数数据据定定义义成成一一个个新的数据类型如新的数据类型如Student类型。类型。 n Type Studentn Xh As String*4n Xm As String*8n Xb As String*2n Nl As Integer n Score As Singlen End Typen String*3 :指定定长字符串的长度为:指定定长字符串的长度为3。232

212、232 6. 记记 录录n记录类型变量记录类型变量n引用格式:变量引用格式:变量.元素元素 n例:例: Dim Wang As Studentn Wang. Xhn Wang.Xmn Wang.Xb n记录类型与记录变量的区别:记录类型与记录变量的区别:n记记录录类类型型只只是是“声声明明,不不占占存存储储空空间间;只只有有用用它它定定义义了了具具体体变变量量时时,才才占占据据存存储储空间。空间。n 同同一一程程序序或或模模块块中中,记记录录成成员员和和记记录录变变量量可可以以重重名名,但但分分别别代代表表不不同同的的数数据据对对象象,含义和引用方法不同。含义和引用方法不同。n 记录嵌套记录嵌

213、套233233 6. 记记 录录n记录变量的初始化及引用记录变量的初始化及引用n初始化初始化n 只只能能用用赋赋值值语语句句或或InputBox对对记记录录成成员员分别赋值分别赋值n例:例: Dim Wang As Studentn Wang.Xh=“1008n Wang.Xm=“王大明王大明n Wang.Xb=“男男n引用及操作引用及操作n 成员引用:记录变量成员引用:记录变量.成员名成员名n 嵌套引用:嵌套引用:mail.phone.area=1000024n 整体赋值整体赋值n 两个记录变量的类型相同两个记录变量的类型相同234234 7. 记录数组记录数组235235 0. 本章内容本

214、章内容n Sub 过程过程n Function 过程过程n参数传递参数传递n可选参数与可变参数可选参数与可变参数n对象参数对象参数n局部内存分配局部内存分配n递归递归 236236 1. Sub 过程过程n定义定义Sub过程过程n格式格式:n PrivatePublic Static Sub 过程名过程名(参数表参数表) 语句块语句块 Exit Sub 语句块语句块n End Subn例如:例如: n Sub sumx%,y%,s% n s = x + yn End Sub237237 1. Sub 过程过程n说明:说明:nSub过程以过程以Sub开头,以开头,以End Sub结束结束n局部局

215、部(Private)过程、全局过程、全局(公用公用, Public)过程和静态过程和静态(Static)过程过程n参数表定义格式:参数表定义格式: ByVal |ByRef 变量名变量名 ( )As 数据类型数据类型 ByVal表示该参数按值传递,表示该参数按值传递,ByRef表示该参数按地址传递表示该参数按地址传递n通过参数表传送参数通过参数表传送参数 Sub过程可以获取调用过程传送的参数,也能通过参数表的参过程可以获取调用过程传送的参数,也能通过参数表的参数,把计算结果传回给调用过程数,把计算结果传回给调用过程n End Sub 标志标志Sub过程结束过程结束n Sub 过程不能嵌套过程不

216、能嵌套 238238 1. Sub 过程过程n建立建立Sub过程过程n在标准模块中建立通用过程在标准模块中建立通用过程2种方法种方法)n执行执行“工程菜单中的工程菜单中的“添加模块命令,添加模块命令,翻开模块代码窗口,选择翻开模块代码窗口,选择“工具菜单中工具菜单中的的“添加过程命令,进入添加过程命令,进入“添加过程添加过程对话框对话框n Public Sub Sort( )n n End Subn执行执行“工程菜单中的工程菜单中的n “添加模块命令,打添加模块命令,打n 开模块代码窗口,输开模块代码窗口,输n 入过程名。入过程名。n在窗体模块中建立通用过程在窗体模块中建立通用过程n可以在代码

217、窗口中直接键入来创立可以在代码窗口中直接键入来创立Sub过过程程239239 1. Sub 过程过程n调用调用Sub过程过程n用用Call语句调用语句调用Sub过程过程n格式:格式:Call 过程名过程名参数列表参数列表n例如:例如:Call suma,b,cn把过程名作为一个语句来使用把过程名作为一个语句来使用n格式:格式: 过程名过程名参数列表参数列表n例如:例如: sum a,b,c 240240 1. Sub 过程过程241241 【例例1】编一个求编一个求n!的子过程,然后调用它计算的子过程,然后调用它计算5! + 10! 的值。的值。Private Sub Jc(n As Inte

218、ger, t As Long) Dim i As Integer t = 1 For i = 1 To n t = t * i Next iEnd SubPrivate Sub Form_Load() Show Dim y As Long, s As Long Call Jc(5, y) s = y Call Jc(10, y) s = s + y Print 5! + 10! =; sEnd Sub采用采用Print直接在窗体上输出结果,程序代码:直接在窗体上输出结果,程序代码:程序运行结果:程序运行结果: 5! + 10! 36289201. Sub 过程过程n通用过程与事件过程通用过程与

219、事件过程 事件过程事件过程 Sub过程过程 通用过程通用过程 Function过程过程n事件过程:事件过程:是当某个事件发生时,对该事件作出响是当某个事件发生时,对该事件作出响应的程序段,它是应的程序段,它是VB应用程序的主体,可放在标准模应用程序的主体,可放在标准模块和窗体模块中块和窗体模块中n通用过程:通用过程:是独立于事件过程之外,可供其他过程是独立于事件过程之外,可供其他过程调用的程序段,只能放在窗体模块中调用的程序段,只能放在窗体模块中242242 2. Function 过程过程n建立建立Function 过程过程n格式格式:nPrivate | Public | Static F

220、unction 函数函数名名(参数表参数表) As 数据类型数据类型 语句块语句块n 函数名表达式函数名表达式n Exit Functionn End Functionn说明:说明:nFunction过程以过程以Function开头,以开头,以End Function结束结束nFunction过程要返回一个值,一般出现在表过程要返回一个值,一般出现在表达式中达式中n建立建立Function过程过程(选择选择“函数类型函数类型) 与与Sub过程相同过程相同243243 2. Function 过程过程244244 【例例2】输入三个数,求出它们的最大数输入三个数,求出它们的最大数Function

221、 max(m, n) As Single If m n Then max = m Else max = n End IfEnd FunctionPrivate Sub Form_Load() Dim a As Single, b As Single, c As Single Dim s As Single Show a = Val(InputBox(输入第一个数) b = Val(InputBox(输入第二个数) c = Val(InputBox(输入第三个数) s = max(a, b) Print 三个数中的最大数是:; max(s, c)End Sub 把求两个数中的大数编成把求两个数中

222、的大数编成Function过程,过程名为过程,过程名为Max 采用采用InputBox函数输入三个数,判断出最大数后采用函数输入三个数,判断出最大数后采用Print直接在窗体上输出结果,程序代码:直接在窗体上输出结果,程序代码:2. Function 过程过程n调用调用Function 过程过程n 像使用像使用VB内部函数一样,只需写出函数内部函数一样,只需写出函数名和相应的参数即可。在赋值语句中调用名和相应的参数即可。在赋值语句中调用函数过程,其形式为:函数过程,其形式为:n 变量名变量名=函数过程名函数过程名参数列表参数列表 n例如:例如:n s = Max(a, b) Print Max

223、(s, c)n245245 2. Function 过程过程246246 【例例3】判断输入字符是不是英文字母判断输入字符是不是英文字母分析:英文字母有大小写之分,只要将该字符转换为大分析:英文字母有大小写之分,只要将该字符转换为大写,再判断是不是处于写,再判断是不是处于AZ范围内,假设是,范围内,假设是,那么是英文字母,否那么不是。那么是英文字母,否那么不是。 本例采用本例采用InputBox函数来输入字符,判断后结果直函数来输入字符,判断后结果直接输出在窗体上。接输出在窗体上。2. Function 过程过程247247 Function checha(inp As String) As

224、Boolean Dim upalp As String upalp = UCase(inp) If A = upalp And upalp = Z Then checha = True Else checha = False End IfEnd FunctionPrivate Sub Form_Load()Dim s As String Show s = InputBox(请输入一个字符) If checha(s) Then Print *输入的字符是英文字母* Else Print *输入的字符不是英文字母* End IfEnd Sub3. 参数传递参数传递n形参与实参形参与实参n形参:形参

225、: 在被调过程中的参数。出现在在被调过程中的参数。出现在Sub过程和过程和Function过程中,形式参数可以是变量名和数组名过程中,形式参数可以是变量名和数组名n实参实参: 在调用过程中的参数。过程调用时实参数据会在调用过程中的参数。过程调用时实参数据会传递给形参传递给形参n按位置传送按位置传送nVB默认的数据传递方式默认的数据传递方式n把实参变量的内存地址传递给被调过程把实参变量的内存地址传递给被调过程(如如Sub过程过程),即形参与实参使用相同的内存地址单元,这样通,即形参与实参使用相同的内存地址单元,这样通过过程就可以改变变量本身的值过过程就可以改变变量本身的值n形参表和实参表中的对应

226、变量名可以不同,但实参形参表和实参表中的对应变量名可以不同,但实参和形参的个数、顺序以及数据类型必须相同和形参的个数、顺序以及数据类型必须相同248248 3. 参数传递参数传递249249 定义过程和调用过程的例如:定义过程和调用过程的例如: 调用过程:调用过程: Call Mysub(100, 计算机计算机 , 1.5) 定义过程:定义过程: Sub Mysub(t As Integer,s As String,y As Single) “形实结合是按照位置结合的,即形实结合是按照位置结合的,即第一个实参值第一个实参值(100)传送给第一个形参传送给第一个形参t,第二个实参值,第二个实参值

227、(“计算机计算机)传送给第二传送给第二个形参个形参s,第三个实参值,第三个实参值(1.5)传送给第传送给第三个形参三个形参y。 数组可以作为形参出现在过程的形数组可以作为形参出现在过程的形参表中参表中n指名传送指名传送n显示地指出与形参结合的实参,形参显示地指出与形参结合的实参,形参 := 实参实参n不受位置次序限制不受位置次序限制3. 参数传递参数传递250250 【例例4】求出学生成绩的平均分、最高分及最低分求出学生成绩的平均分、最高分及最低分 输入假设干个输入假设干个(不超过不超过100)学生的成绩,求出平均学生的成绩,求出平均分、最高分及最低分分、最高分及最低分 采用采用InputBo

228、x函数来输入成绩,计算结果直接输函数来输入成绩,计算结果直接输出到窗体上出到窗体上Sub caljc(k As Integer, darray() As Integer, _ s As Long, m As Integer, n As Integer) Dim i As Integer s = darray(1): m = darray(1): n = darray(1) If k = 1 Then Exit Sub For i = 2 To k s = s + darray(i) If m darray(i) Then n = darray(i) Next iEnd Sub3. 参数传递参数

229、传递251251 Private Sub Form_Load() Dim jc(100) As Integer, x As Integer, _ n As Integer, sum As Long, _ max As Integer, min As Integer n = 0 Do While True x = Val(InputBox(请输入第 & n + 1 & _ 个学生的成绩(-1结束) If x = -1 Then Exit Do n = n + 1 jc(n) = x Loop If n 0 Then Call caljc(n, jc(), sum, max, min) Else

230、End End If Show Print 平均分:; Format(sum / n, #.0) Print 最高分:; max Print 最低分:; minEnd Sub3. 参数传递参数传递n引用引用n又称传地址又称传地址(关键字关键字ByRef或省略或省略)n把实参变量的内存地址传递给被调过程把实参变量的内存地址传递给被调过程n即形参与实参使用相同的内存地址单元,即形参与实参使用相同的内存地址单元,这样通过过程就可以改变变量本身的值。这样通过过程就可以改变变量本身的值。实参的值会随形参的改变而改变。实参的值会随形参的改变而改变。n实参必须是变量,不能采用常量或表达式。实参必须是变量,不

231、能采用常量或表达式。n【例【例1】中,】中,Form_Load()事件过程是通过事件过程是通过“Call Jc(5,y)和和“Call Jc(10,y)来调来调用过程用过程Jc(n,t)的,其中采用的第二个参数的,其中采用的第二个参数就是按地址来传送数据的就是按地址来传送数据的252252 3. 参数传递参数传递n传值传值n(关键字关键字ByVal)n通过常量传递实际参数,即传递参数值而不是传递通过常量传递实际参数,即传递参数值而不是传递它的地址它的地址n即系统将实参的值复制给形参,实参值始终不变即系统将实参的值复制给形参,实参值始终不变n因为通用过程不能访问实参的内存地址,因而在通因为通用过

232、程不能访问实参的内存地址,因而在通用过程中对形参的任何操作都不会影响实参用过程中对形参的任何操作都不会影响实参253253 3. 参数传递参数传递254254 【例【例5】参数传递方式例如】参数传递方式例如设置两个通用过程设置两个通用过程Test1和和Test2,分别按值传递和按地址传递,分别按值传递和按地址传递Sub test1(ByVal t As Integer) t = t + 5End SubSub test2(s As Integer) s = s - 5End SubPrivate Sub Form_Load() Dim x As Integer Show x = 5 Print

233、 执行Test1前,x=; x Call test1(x) Print 执行Test1后,Test2前,x=; x Call test2(x) Print 执行Test2后,x=; xEnd Sub运行结果运行结果执行执行Test1前,前,x=5执行执行Test1后,后,Test2前,前,x=5执行执行Test2后,后,x=03. 参数传递参数传递n数组参数的传递数组参数的传递n过程定义时,形参列表中的数组用数组名过程定义时,形参列表中的数组用数组名后的一对空的圆括号表示。后的一对空的圆括号表示。n在过程调用时,实际参数表中的数组可以在过程调用时,实际参数表中的数组可以只用数组名表示,省略圆括

234、号。只用数组名表示,省略圆括号。n被调过程可通过被调过程可通过Lbound和和Ubound函数确函数确定实参数组的上、下界。定实参数组的上、下界。n当用数组作为过程的参数时,进行的不是当用数组作为过程的参数时,进行的不是“值的传递,而是值的传递,而是“址的传递。址的传递。255255 3. 参数传递参数传递256256 【例例6】用数组作参数,求一维数组中的所有负元用数组作参数,求一维数组中的所有负元素之和。素之和。Function sum%(b%() Dim i% For i = LBound(b) To UBound(b) If b(i) 0)Private Sub Form_Load()

235、 Dim n As Integer, m As Double Show n = Val(InputBox(输入115之间的整数) If n 15 Then MsgBox 错误数据, 0, 检查数据 End End If m = fac(n) Print n; != ; mEnd Sub一个过程调用过程本身,就称为过程的递归调用一个过程调用过程本身,就称为过程的递归调用Private Function fac(n) As Double If n 1 Then fac = n * fac(n - 1) 递归调用 Else fac = 1 n=1时,结束递归 End IfEnd Function可用

236、以下的递归公式可用以下的递归公式 1 n=1 n(n-1)! n1n! =7. 递归递归266266 程序的递归过程程序的递归过程(n=4) :使用递归算法必须要满足以下的递归条件:使用递归算法必须要满足以下的递归条件: 1存在递归结束条件及结束时的值;存在递归结束条件及结束时的值; 2能用递归形式表示,且递归向终止条能用递归形式表示,且递归向终止条件开展。件开展。7. 递归递归267267 【例例14】用递归方法求两个正整数用递归方法求两个正整数n和和m的最大公约数的最大公约数Private Sub Form_Load() Show m = Val(InputBox(输入m的值) n = V

237、al(InputBox(输入n的值) Print m; 和; n; 的最大公约数是:; gys(n, m)End SubPrivate Function gys(n, m) p = n Mod m If p = 0 Then 终止条件 gys = m Else gys = gys(m, p) mn,pm,再调用 End IfEnd Function用用“辗转相除法算法:求出辗转相除法算法:求出m/n余数余数p,假设,假设p0,n即为最大公约数;假设即为最大公约数;假设p非非0,那么把原来的分母,那么把原来的分母n作为新的分子作为新的分子m,把余数,把余数p作为新的分母作为新的分母n继续求解。继

238、续求解。第第9章章 键盘与鼠标事件过程键盘与鼠标事件过程沈阳理工大学应用技术学院沈阳理工大学应用技术学院0. 本章内容本章内容n KeyPress事件事件n KeyDown和和KeyUp事件事件n鼠标事件鼠标事件n鼠标光标的形状鼠标光标的形状n拖放拖放269269 1. KeyPress事件事件n按下并且释放一个键时按下并且释放一个键时,触发触发KeyPress事件事件n格式:格式:nKeyAscii 参数有两种形式:参数有两种形式:n Index As Integer 只用于控件数组只用于控件数组n KeyAscii As Integer 用于单个控件用于单个控件n KeyPress事件用来

239、识别按键的事件用来识别按键的ASCII码。码。n如如EnterQVFP、Tab键、键、Backspace键等以及键等以及标准键盘中的字母、标点、数字键等。标准键盘中的字母、标点、数字键等。n 利用利用KeyPress事件可以对输入的值进行限制事件可以对输入的值进行限制270270 1. KeyPress事件事件271271 【例例1】在窗体上放一文本框,编写一事件过程,保证在该在窗体上放一文本框,编写一事件过程,保证在该文本框内只能输入字母,且无论大小写,都要转换成大文本框内只能输入字母,且无论大小写,都要转换成大写字母显示。写字母显示。Private Sub Text1_KeyPress(K

240、eyAscii As Integer) Dim str$ If KeyAscii 122 Then Beep KeyAscii = 0 ElseIf KeyAscii = 65 And KeyAscii num Or n 1 Then MsgBox 超出范围! Exit Sub End If For i = 1 To num - 1 apname(i).Caption = apname(i + 1).Caption Next i Unload apname(num) num = num - 1End Sub4. 弹出式菜单弹出式菜单 n又称快捷菜单。单击鼠标右键,可以根据右击又称快捷菜单。单击

241、鼠标右键,可以根据右击鼠标时的位置弹出不同的菜单。鼠标时的位置弹出不同的菜单。n创立弹出式菜单的步骤如下:创立弹出式菜单的步骤如下: n使用菜单编辑器设计菜单使用菜单编辑器设计菜单n 必须把菜单名即主菜单项的必须把菜单名即主菜单项的“可见属可见属性设置为性设置为False(子菜单项不要设置为子菜单项不要设置为False)。n用用PopupMenu方法弹出显示方法弹出显示n 格式:格式:对象对象. PopupMenu 菜单名菜单名n ,Flags,x,y,BoldCommand 304304 4. 弹出式菜单弹出式菜单305305 【例【例4】在【例】在【例1】的根底上,把】的根底上,把“计算加

242、、减菜计算加、减菜单改为弹出式菜单单改为弹出式菜单 (1)翻开【例翻开【例1】的应用程序,选定窗体,然后在菜单】的应用程序,选定窗体,然后在菜单编辑器中将编辑器中将“计算加、减菜单标题的计算加、减菜单标题的“可见框中的可见框中的“取消取消(即不选中即不选中) (2)增加以下的增加以下的MouseUp事件过程代码:事件过程代码: Private Sub Form_MouseUp(Button As Integer, _Shift As Integer, X As Single, Y As Single)If Button = 2 Then 检查是否右击,击左键为1PopupMenu calc1E

243、nd If End Sub程序运行时,右击窗体空白处,即会弹出快捷菜单,程序运行时,右击窗体空白处,即会弹出快捷菜单,4. 弹出式菜单弹出式菜单306306 弹出式菜单5. 对话框分类对话框分类n应用程序与用户进行交互的主要途径,有三种对应用程序与用户进行交互的主要途径,有三种对话框:话框:n预定义对话框预定义对话框n输入对话框用输入对话框用InputBox函数来实现函数来实现n消息框用消息框用MsgBox函数来实现函数来实现)n自定义对话框自定义对话框n 通用对话框通用对话框n对话框的特点对话框的特点n边框固定边框固定n必须设退出对话框按钮必须设退出对话框按钮n不能有最大化、最小化按钮不能有

244、最大化、最小化按钮n 不是主要工作区,用后关闭不是主要工作区,用后关闭307307 5. 对话框分类对话框分类n自定义对话框自定义对话框n建立一个窗体,在窗体上根据需要放置控建立一个窗体,在窗体上根据需要放置控件,通过设置控件属性值来定义窗体的外件,通过设置控件属性值来定义窗体的外观观n用窗体自定义对话框,一般步骤:用窗体自定义对话框,一般步骤:n向工程添加窗体向工程添加窗体n 在窗体上创立其他控件对象,定义对话框在窗体上创立其他控件对象,定义对话框的外观的外观n 设置窗体和控体对象的属性设置窗体和控体对象的属性n 在代码窗口中创立事件过程在代码窗口中创立事件过程308308 5. 对话框分类

245、对话框分类309309 【例例5】自定义对话框程序用例自定义对话框程序用例(1)创立应用程序的用户界面和设置对象属性创立应用程序的用户界面和设置对象属性5. 对话框分类对话框分类310310 Private Sub Command1_Click() If Option1 Then Data = Val(Text1.Text) End If If Option2 Then Data = Text1.Text End If Print DataEnd SubPrivate Sub Command2_Click() Form2.HideEnd SubPrivate Sub Command1_Clic

246、k() Form2.Show 1End SubPrivate Sub Command2_Click() EndEnd Sub(2)编写程序代编写程序代码码第第1个窗体的程序代码个窗体的程序代码作为对话框的第作为对话框的第2个窗体的个窗体的程序代码程序代码5. 对话框分类对话框分类n通用对话框通用对话框n是一种是一种ActiveX控件,利用它能够很容易控件,利用它能够很容易地创立以下六种标准对话框:地创立以下六种标准对话框:n翻开翻开(Open),另存为,另存为(Save As),颜色,颜色(Color),字体,字体(Font),打印机,打印机(Printer)和帮助和帮助(Help)对话框对话

247、框 n添加通用对话框控件一般步骤:添加通用对话框控件一般步骤:n执行执行“工程菜单中的工程菜单中的“部件命令部件命令n选择选择“Microsoft Common Dialog Control 6.0n单击单击“确定按钮,将其添加到工具箱中确定按钮,将其添加到工具箱中 n属性设置可以在属性窗口或程序代码中进属性设置可以在属性窗口或程序代码中进行行n当程序运行时,通用对话框是不可见的当程序运行时,通用对话框是不可见的 311311 6. 文件文件对话框对话框n结构结构 (1)(1)对话框标题对话框标题 (2)(2)文件夹文件夹 (3)(3)选择文件夹级别选择文件夹级别 (4)(4)新文件夹新文件夹

248、(5)(5)文件列表模式文件列表模式 (6)(6)文件细节文件细节 (7)(7)文件列表文件列表 (8)(8)文件类型文件类型 (9)(9)文件名文件名 312312 6. 文件文件对话框对话框n属性属性n1对话框标题对话框标题DialogTitle属性属性n2文件名称文件名称FileName属性属性n3FileTitle文件标题属性文件标题属性n4初始化路径初始化路径InitDir属性属性n5过滤器过滤器Filter属性属性n6标志标志Flags属性属性n7缺省扩展名缺省扩展名DefaulText属性属性n8文件最大长度文件最大长度MaxFileSize属性属性n9过滤器索引过滤器索引Fil

249、terIndex属性属性n10CancelError属性属性313313 6. 文件文件对话框对话框314314 【例【例6】建立一个】建立一个“翻开文件的对话框翻开文件的对话框在窗体上添加一个通用对话框和一个在窗体上添加一个通用对话框和一个“翻开命令按钮,翻开命令按钮,当单击当单击“翻开按钮时,就会弹出一个翻开按钮时,就会弹出一个“翻开文件的对翻开文件的对话框话框6. 文件文件对话框对话框315315 (1) 把把CommonDialog控件添加到工具箱中。然后在窗体控件添加到工具箱中。然后在窗体上添加该控件,其默认名称为上添加该控件,其默认名称为CommonDialog1 (2)在窗体上添

250、加一个命令按钮在窗体上添加一个命令按钮Command1,其,其Caption属性为属性为“翻开翻开 (3)“翻开命令按钮翻开命令按钮Command1的的Click事件过程代码事件过程代码: 其中,设置文件过滤器其中,设置文件过滤器(Filter)属性的参数格式如下:属性的参数格式如下: 描述符描述符1 过滤符过滤符1 描述符描述符2 过滤符过滤符2 程序运行后,单击程序运行后,单击“翻开按钮即弹出如下图的对话框翻开按钮即弹出如下图的对话框 从控件的从控件的FileName属性中获取选定的路径及文件名属性中获取选定的路径及文件名Private Sub Command1_Click() Commo

251、nDialog1.DialogTitle = 翻开文件“ 设置文件过滤器 CommonDialog1.Filter = 全部文件|*.*|文本文件|*.txt CommonDialog1.InitDir = C:my documents 设置默认文件夹 CommonDialog1.ShowOpen 显示“翻开对话框 End Sub7. 其他其他对话框对话框316316 【例例7】建立一个颜色对话框建立一个颜色对话框Private Sub Command1_Click() CommonDialog1.Flags = vbccrgbinit CommonDialog1.Color = BackCo

252、lor CommonDialog1.Action = 3 Form1.BackColor = CommonDialog1.ColorEnd Sub7. 其他其他对话框对话框317317 【例例8】用字体对话框设置文本框中显示的字体用字体对话框设置文本框中显示的字体Private Sub Command1_Click() CommonDialog1.Flags = cdlCFScreenFonts CommonDialog1.ShowFont 翻开“字体对话框 Text1.FontName = CommonDialog1.FontName Text1.FontSize = CommonDialo

253、g1.FontSize Text1.FontBold = CommonDialog1.FontBold 粗体 Text1.FontItalic = CommonDialog1.FontItalic 斜体End Sub7. 其他其他对话框对话框318318 【例例9】建立一个打印对话框建立一个打印对话框Private Sub Command1_Click() firstpage = 1 lastpage = 50 CommonDialog1.CancelError = True CommonDialog1.Copies = 1 CommonDialog1.Min = firstpage Comm

254、onDialog1.Max = lastpage CommonDialog1.Flags = vbpdusedevmodecopies Or vbpdselectoin CommonDialog1.Action = 5End Sub第第11章章 多窗体与多文档界面多窗体与多文档界面沈阳理工大学应用技术学院沈阳理工大学应用技术学院0. 本章内容本章内容n多窗体处理多窗体处理nVB工程结构工程结构n闲置循环与闲置循环与DoEvents语句语句nMDI窗体窗体nMDI应用应用 320320 1. 多窗体处理多窗体处理n与多窗体有关的语句和方法与多窗体有关的语句和方法nLoad语句:把一个窗体装入内存

255、语句:把一个窗体装入内存n格式:格式:Load 窗体名称窗体名称nUnload语句:去除内存中指定的窗体语句:去除内存中指定的窗体n格式:格式:Unload 窗体名称窗体名称nShow方法:用来显示一个窗体方法:用来显示一个窗体n格式:窗体名称格式:窗体名称.Show 模式模式nHide方法:隐藏窗体不显示,但仍在内存方法:隐藏窗体不显示,但仍在内存中中n格式:格式:窗体名称窗体名称.Hide321321 1. 多窗体处理多窗体处理322322 【例【例1】多窗体应用例如。】多窗体应用例如。1.创立创立3个窗体和个窗体和1个标准模个标准模块块 (1)主窗体主窗体(Form1) 本窗体上建立了本

256、窗体上建立了“输入参数输入参数(Command11)、“画画圆圆(Command12)和和“结束结束(Command13)三个命令三个命令按钮按钮 设置为启动窗体设置为启动窗体1. 多窗体处理多窗体处理323323 (2)“输入参数窗体输入参数窗体(Form2) 在主窗体上单击了在主窗体上单击了“输入参数按钮后弹出的窗体,输入参数按钮后弹出的窗体,用于输入圆的坐标位置用于输入圆的坐标位置(x,y)和半径和半径(r)。窗体上建立了。窗体上建立了3个文本框个文本框(Text21、Text22和和Text23)和和1个个“返回返回命令按钮命令按钮(Command21)1. 多窗体处理多窗体处理324

257、324 (3)“画圆窗体画圆窗体(Form3) 在主窗体上单击了在主窗体上单击了“画圆按钮后弹出的窗体。窗体画圆按钮后弹出的窗体。窗体上建立了上建立了1个图片框和个图片框和2个命令按钮。用户可以单击个命令按钮。用户可以单击“画圆画圆(Command31)命令按钮,使之按给定参数在图片框命令按钮,使之按给定参数在图片框上画圆。上画圆。1. 多窗体处理多窗体处理325325 (4)标准模块标准模块(Modulel) 由于在各窗体之间需要使用公共变量来传送数据,所由于在各窗体之间需要使用公共变量来传送数据,所以建立一个标准模块以建立一个标准模块Modulel,对用到的全局变量,对用到的全局变量X、Y

258、和和R进行声明进行声明 1. 多窗体处理多窗体处理326326 Private Sub Command11_Click() 主窗体“输入参数按钮 Form1.Hide 隐藏主窗体 Form2.Show 显示“输入参数窗体End SubPrivate Sub Command12_Click() 主窗体“画圆按钮 Form1.Hide 隐藏主窗体 Form3.Show 显示“画圆窗体End SubPrivate Sub Command13_Click() 主窗体“结束按钮 Unload Form1 Unload Form2 Unload Form3 EndEnd Sub2.编写程序代码编写程序代码

259、主窗体:主窗体:1. 多窗体处理多窗体处理327327 输入参数:输入参数:Private Sub Command21_Click() “输入参数窗体的“返回按钮 X = Val(Text21.Text) Y = Val(Text22.Text) r = Val(Text23.Text) Form2.Hide 隐藏“输入参数窗体 Form1.Show 显示主窗体End Sub画圆:画圆:Private Sub Command31_Click() “画圆窗体的“画圆按钮 Picture1.Cls Picture1.Circle (X, Y), rEnd SubPrivate Sub Comman

260、d32_Click() “画圆窗体的“返回按钮 Form3.Hide 隐藏“画圆窗体 Form1.Show 显示主窗体End Sub1. 多窗体处理多窗体处理n启动窗体的设置启动窗体的设置n通过通过“工程菜单的工程菜单的“工程属性指定工程属性指定n多窗体程序的存取多窗体程序的存取328328 2. VB工程结构工程结构应用程序通常包括应用程序通常包括3种模块种模块329329 应用程序应用程序工程文件工程文件(.vbp)窗体模块窗体模块文件文件(.frm)Sub过程过程Function过程过程事件事件过程过程声明声明部分部分类模块类模块文件文件(.cls)标准模块标准模块文件文件(.bas)S

261、ub过程过程Function过程过程声明声明部分部分Sub Main过程过程2. VB工程结构工程结构nSub Main过程过程n程序一般从启动窗体的程序一般从启动窗体的Form_Load过程开过程开始执行始执行n应用程序在运行时会先执行应用程序在运行时会先执行Sub Main过程过程n有时在程序启动时不加载任何窗体,而是有时在程序启动时不加载任何窗体,而是首先执行一段程序代码,此时可把要执行首先执行一段程序代码,此时可把要执行的程序代码放在的程序代码放在Sub Main过程中,并指定过程中,并指定Sub Main为为“启动对象。启动对象。n在一个工程中只能有一个在一个工程中只能有一个Sub

262、Main过程过程n设置设置Sub Main过程为过程为“启动对象的方法:启动对象的方法:n 在在“工程属性对话框的工程属性对话框的“通用选项卡中,通用选项卡中,从从“启动对象下拉列表框中选中启动对象下拉列表框中选中“Sub Main330330 3. 闲置循环与闲置循环与DoEvents语句语句 n闲置循环闲置循环nVB只有在发生事件时才执行相应的事件过程,只有在发生事件时才执行相应的事件过程,如果没有事件发生,那么应用程序处于如果没有事件发生,那么应用程序处于“闲闲置状态置状态 n闲置循环,就是当程序处于闲置状态时,用闲置循环,就是当程序处于闲置状态时,用一个循环来执行某些操作一个循环来执行

263、某些操作 nDoEvents语句语句n格式:格式:n 窗体号窗体号=DoEvents()n功能:在闲置循环中,通过功能:在闲置循环中,通过DoEvents语句可语句可以把控制权交给系统去处理所发生的事件以把控制权交给系统去处理所发生的事件331331 3. 闲置循环与闲置循环与DoEvents语句语句332332 【例【例2】闲置循环和】闲置循环和DoEvents应用例如。应用例如。 (1) 建立一个文本框和二个命令按钮,两个事件过程:建立一个文本框和二个命令按钮,两个事件过程:Private Sub Command1_Click() Text1.FontSize = Text1.FontSi

264、ze + 1End SubPrivate Sub Command2_Click() EndEnd Sub3. 闲置循环与闲置循环与DoEvents语句语句333333 (2) 执行执行“工程菜单的工程菜单的“添加模块命令,编写添加模块命令,编写Sub Main过程过程Private Sub MAIN() 进入“闲置循环 Form1.Show Do While True x = DoEvents 把控制权交给系统去处理所发生的事件 否那么死循环,即不能处理其他事件 Form1.Text1.Text = Time LoopEnd Sub (3)把把Sub Main设置为启动对象设置为启动对象 程序运行后,进入闲置循环,此时将在文本框程序运行后,进入闲置循环,此时将在文本框Text1中不断地显示中不断地显示系统时间。系统时间。 由于参加由于参加DoEvents函数,那么可以在执行闲置循环过程中执行其函数,那么可以在执行闲置循环过程中执行其他操作,如重设窗体的大小及最大化他操作,如重设窗体的大小及最大化/最小化,还能响应命令按钮最小化,还能响应命令按钮Command1和和Command2的单击事件等。的单击事件等。 当其他操作完成后,又会回到闲置循环中继续执行当其他操作完成后,又会回到闲置循环中继续执行

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号