1、2018/11/20,1,Visual Basic 程序设计,2018/11/20,2,第二讲 VB可视化编程初步,2018/11/20,3,内容简介,本章以一个简单的时钟应用程序开发为主线: 详细介绍窗体、文本框、标签和命令按钮等常用控件 事件和事件过程以及事件驱动程序设计的基本原理 MsgBox函数、赋值语句的使用方法。 通过本章的学习,你将熟悉Visual Basic开发应用程序的全过程,领略到VB可视化编程的魅力,为进一步深入学习奠定基础。,2018/11/20,4,学习目标,掌握VB应用程序开发的一般步骤。 掌握命令按钮、文本框和标签的使用和MsgBox函数的用法。 理解赋值语句、变
2、量的概念,理解对象、属性、方法和事件的概念及其之间的区别和联系,理解事件驱动的原理。 了解时钟程序的工作原理。,2018/11/20,5,2.1“时钟程序”任务,在实际工作中,为了准确的控制时间,经常需 要用到计时器,现在我们就来创建一个倒计时 的简单应用程序。该程序的功能是:当在文本框内输入倒计时的 分钟数后,单击“开始”按钮就开始倒计时,倒 计时结束时,弹出“时间到!”的信息框。,2018/11/20,6,任务描述 界面设计 代码设计 保存和运行程序 编译与打包 安装运行 VB应用程序开发 的一般步骤,时钟程序任务,时钟程序任务 任务描述 程序运行:出现 输入分钟数 时间到: 出现,201
3、8/11/20,7,2.1.1任务描述,启动界面,2018/11/20,8,输入1分钟数字界面,2018/11/20,9,倒计时进行中界面,2018/11/20,10,倒计时结束界面,2018/11/20,11,212 界面的设计,1 新建工程并创建窗体 启动VB 在“新建工程“对话框中,选择“标准EXE ”单击“打开”。 2 向窗体中添加控件调整窗体的大小为合适,向窗体中添加:一个标签、一个文本框、一个命令按钮和一个计时器控件。,2018/11/20,12,通过鼠标单击“工具箱”中的控件,在窗体上划出相应的控件。,2018/11/20,13,3 设置对象属性,(1)单击Form1窗体,选定它
4、。在属性窗口中选中Form1,将Caption 的属性改为“倒计时器” (2)单击窗体上的“Label1”控件,将Caption的属性改为清输入倒计时的分钟数,将Autosize属性改为true (3)将命令按钮command1的Caption属性改为“开始“。 (4)将text1 的Alignment属性改为“2-center”. (5)将计时器控件timer的Interval的属性值设为1000(1秒),Enabled属性设为False.,2018/11/20,14,2.1.3代码设计,(1)代码编辑器“通用”区代码 Dim m As Long 声明一个变量 (2)Command1控件代码
5、 Private Sub Command1_Click() 使计时器控件开始工作 Timer1.Enabled = True 将分钟数转换为秒数,并保存在m变量中 m = Val(Text1.Text) * 60 改变标签控件的标题 Label1.Caption = “现在开始倒计时“使用命令按钮不可见 Command1.Visible = False End Sub,2018/11/20,15,2.1.3代码设计,(3)Timer1控件代码 Private Sub Timer1_Timer() 当Timer1.Enabled=Ture是,本程序每秒自动执行一次每运行一次,就将m变量的值减1秒
6、m = m 1If m 0 Then 如果倒计时结束(即m=0)则:Timer1.Enabled = False 关闭计时器MsgBox “时间到!“, 0, “倒计时“Label1.Caption = “请输入计时的分钟数“Text1.Text = “ 清空文本框Command1.Visible = True 使命令按钮可见 Else 否则显示倒计时数Text1.Text = m End If End Sub,2018/11/20,16,2.1.4保存和运行程序,1保存工程 单击“文件”菜单中的“保存工程” 2运行程序 单击工具栏中的启动按钮,或者按F5键开始运行该应用程序。,2018/11
7、/20,17,2.1.5编译与打包,1编译应用程序 单击“文件”菜单中的“生成Timer.exe”选项 2打包 创建一个安装程序来发布文件 Package&Deployment向导,2018/11/20,18,2.1.6 VB应用程序开发的一般步骤,1设计应用程序界面 2设置对象属性 3编写代码 4保存和运行工程 5编译与打包 6安装运行,2018/11/20,19,2.2 程序代码分析,2.2.1 变量是指在程序运行过程中其值可以改变的那些量。当执行了Dim语句后,VB程序就会在计算机内存中预留 一个区域,准备存放数据。 变量命名规则: 第一个字符必须是字母 其它字符只能是字母、数字、下划线
8、 最后一个字符可以是类型说明符 变量名最长可达255个字符 不能与保留字重名,如Input 尽量使用有意义的名字,2018/11/20,20,声明变量 隐式声明:变量不经声明直接使用,此时该变量将被赋予缺省的类型和值 如:class=3 class为整型 name=“张三“ name为字符串显式声明:变量声明后再使用 强制显式声明 工具/选项/编辑器/要求变量声明 代码编辑器/对象列表中选通用,在声明区加入声明option explicit,2018/11/20,21,使用Dim语句声明变量 一般格式:Dim 变量名 As 变量类型 例: Dim num As Integer 声明num为整型
9、变量 Dim test As long, today As Date 同时声明test为长整型,today为日期型 Dim str As string,value 声明str为一变长字符串,value为不定类型,2018/11/20,22,全局变量的声明 全局变量是可以在工程中的所有程序模块使用的变量。使用关键字Public和Global 如:Public test1 As Integer Global test2 As Byte,2018/11/20,23,表 VB的标准数据类型,2018/11/20,24,2.2.2赋值语句 格式:变量名=表达式 或 对象名.属性名=表达式 注意: 1、不
10、要把赋值号“=”与数学中的等号相混淆m=m-1 2、赋值号“=”左边必须是变量名或对象属性,“=”右边是表达式,其值可以是常量、变量、函数或是它们的混合运算式m=val(text1.text)*60z=x+yb=1c=b*2+2label1.caption=“现在开始倒计时”,2018/11/20,25,2.2.3 MsgBox语句和函数的使用 MsgBox函数的格式:变量=msgbox(提示信息,对话框类型,对话框标题) MsgBox命令语句的格式:msgbox 提示信息,对话框类型,对话框标题MsgBox函数各参数使用与MsgBox语句函数相同,但是MsgBox语句没有返回值。,2018/
11、11/20,26,参数说明: (1)“提示信息”指定在对话框中出现的文本。 (2)“对话框标题”指定了对话框的标题。 (3)“对话框类型”是可选项,用来指定对话框中出现的按钮和图标,见(p32表2.1、表2.2、表2.3),该参数的值有三类数值相加产生,这三类数值分别表示按钮的类型、显示图标的种类和默认按钮的位置。msgbox “时间到!”,0,”倒计时” (4)函数返回值见p32表2.4,2018/11/20,27,编写程序利用MsgBox函数创建对话框,Private Sub Form_Click()msgtitle$=“考生登录信息提示“msg1$=“准考证号输入有误,请重新输入正确的号
12、码!“w=MsgBox(msg1$,37,msgtitle$)Print w End Sub,2018/11/20,28,例如:执行下列语句private sub command1_click()msgbox(“除数不能为0!”,vbokcancel,”输入数据错误”)end sub P33,例如:执行下列语句private sub command1_click()a=msgbox(“密码不正确”,2+32+0,”标题”)if a=3 thenend 如果选择了“终止”按钮则程序结束end ifend sub P33,2018/11/20,29,例如:执行下列语句 private sub co
13、mmand1_click()msgbox “密码不正确,”+chr(13)+”请重新输入!”end sub P33,2018/11/20,30,2.3 窗体及基本控件,2.3.1 对象的概念、属性、事件及方法1 对象的概念 简单的说,对象就是代码和数据的封装体。 VB中,我们将窗体、标签、文本框、命令按钮和时钟控件等都可以理解为对象。2 属性 属性是一个对象的基本特征,每一个对象都有自己的属性。常见的对象的属性有标题(Caption)、名称(mane)、颜色(color)、字体(font)、是否可见(Visible)等。,2018/11/20,31,各属性通常都有默认值,如果不改变采用默认值。
14、 (1)在设计阶段,通过属性窗口来改变各属性值。(2)在程序代码中,使用赋值语句设置对象的属性格式:对象名.属性名=属性值例如: Label1.Caption=”现在开始倒计时”,2018/11/20,32,3 方法 一般说,方法就是要执行的动作,可理解为VB提供的一种特殊的过程和函数,已将一些通用的函数和过程编写好并封装起来,如:打印(print)、显示窗体(show)、清除(cls)和移动(move)等 调用对象的方法格式为:对象名. 方法名 例如: form1.print “你好!”4 事件 事件就是在对象上发生的事情, 在VB中,系统是预先为每个对象定义好了一系列事件.例如:单击事件(
15、click)、双机事件(dblclick)、装入事件(load)、改变事件(change)和鼠标移动事件(mousemove)等. 鼠标单击(事件)命令按钮(对象)调用打印(方法),2018/11/20,33,2.3.2窗体(Form),窗体的结构,2018/11/20,34,232 窗体,窗体(Form)是用户界面最基本的构造模块,也是创建应用程序所使用的主要对象之一。窗体有自己的属性、事件和方法,以便控制窗体的外观和行为。窗体又是其他对象 的载体和容器,几乎所有的控件都是在窗体上的。 窗体运行以后,就是应用程序的窗口。,2018/11/20,35,1 窗体的基本属性设置窗体的属性有两种方法
16、,一种使用属性窗口,另一种是在代码编辑器中使用代码命令。常见的窗体属性有以下几种: (1)Name属性用于设置窗体名称,默认名称为Form1, Name属性只能在属性窗口中设置。 (2)Caption 属性用于设置显示在标题栏上的窗体的标题,在属性窗口和代码编辑器均可设置。其默认值同窗口名称相同。如:窗体名称.Caption=”标题”,2018/11/20,36,(3) MaxButton和MinButton属性 各有两个属性True和False,分别表示标题栏上是否有最大化和最小化按钮. (4) BorderStyle边框样式属性表2.5所示 (5) Picture属性设置窗体上要显示的图片
17、,可以用语句: 对象.picture=loadpicture(“文件名”) (6) Icon属性用于设置窗体标题栏上的图标. (7) visible 属性用于设置窗体是否可见. (8) WindowsState属性用来设置窗体运行时窗体的显示状态0-Normal ,1-Minimized,2-Maximized,2018/11/20,37,2 窗体的常用方法,(1) show 方法 用于快速先是一窗体,与窗体的visible属性设置位为true一样. Form1.show Form1.visible=true(2) Hide 方法 其功能是隐藏窗体, 与窗体的visible属性设置位为fals
18、e 一样 Form1.Hide Form1.visible=false (3) print 方法用于在窗体或图片框上输出文本 private sub form_load()dbug.print “print 方法可以在窗体上打印文本” end sub.,2018/11/20,38,(4) cls 方法用于清除运行时在窗体和图片框中显示的文本和图片. picture.cls 清除图片框中的图片 cls 清除窗体上的文本 (5) move 方法将窗体已到指定位置,如: form1.move(0,0) 将窗体一到左上角。,2018/11/20,39,3 窗体的常用事件,窗体的常用事件有 (通过代码编
19、辑器)(1)click 单击事件单击窗体是发生(2)DblClick 事件双击窗体是发生。(3)load 事件 装在窗体是发生。(4)Unload事件 当单击窗体上的”关闭”和或使用Unload语句时触发该事件.(5) Activate 和 DeActivate事件当一个窗体变成活动窗体时,就会触发Activate事件.当窗体不再是活动窗体时就会触发DeActivate事件,2018/11/20,40,4 窗体事件演示程序事例: 设计一窗体,是标题栏上无最大化和最小化按钮;运行后将窗体的颜色设置为黄色;单机窗体时窗体变宽;双击窗体时退出.,2018/11/20,41,2.3.3 命令按钮其主要
20、功能是通过命令按钮来调用Click 事件过程。控制开始、中断、结束一个进程。 1、常用属性Enabled:允许程序在运行时使窗体和控件成为有效或无效 object.Enable =boolean Visible:允许在程序运行时隐藏一个对象 object.Visible =booleanStyle:设置按钮外观。0为标准Windows风格 ,1为允许带有自定义图片 Picture:Style为1时,指定粘贴到按钮上的图形文件Default:属性为True时,指定为窗体缺省按钮Cancel:属性为True时,指定为窗体缺省取消按钮,2018/11/20,42,例如:Option Explicit
21、Private Sub Form_Load()Text1.Text = “Command1.Caption = “save“ End SubPrivate Sub Text1_Change()If Text1.Text = “ ThenCommand1.Enabled = FalseElseCommand1.Enabled = TrueEnd If End Sub,2018/11/20,43,2、常用方法SetFocus方法3、常用事件 Click(单击) Click事件,以下情况可发生Clicl事件:(1) 在按钮上单击鼠标。(2) 焦点在按钮上,按空格键或回车键。(3) 在代码中将按钮Va
22、lue属性设置为True(4) 对于取消按钮按Esc键(5) 在Caption属性中用&符号链接一访问键,在运行时按Ali+访问键。,2018/11/20,44,234 标签,标签现实不能编辑的信息。 1 常用属性(1)AutoSize当值为true 时自动调节内容大小以适应其内容。当值为false时,不能改变大小。(2)Alignment 属性标签内文本的对齐方式,标2. 7所示(3) BordeStyle 属性标签的边框,默认值为0 ,无边框。属性设为1 右边框。,2018/11/20,45,(4)Backstyle 属性用来设置标签是否透明,0透明,1不透明,默认值为1。(5)wordw
23、rap属性用来设置标签中的内容是否能够显示多行。缺省为false ,设为true 可显示多行。 2 常用方法常用方法有move方法实现控件的移动。,2018/11/20,46,其他用法用标签来显示时间 Label1.Caption = Time在标签中同时显示两行以上的字符串 Label1.Caption = Time & Chr(13) & Chr(10) & Date,2018/11/20,47,2.3.5文本框(Textbox),1常用属性 (1)Text属性 (2)MultiLine属性,2018/11/20,48,2.3.5文本框(Textbox),1常用属性 (3)PassWord
24、Char,2018/11/20,49,235 文本框,文本框控件一般用于接收用户输入信息,用户可以在文本框中编辑信息。 1 常用属性 (1)text 属性 用来设置文本框中的内容。 (2)MultiLine 属性 MultiLine 属性用来决定文本框是否可输入多行文本。默认为false ,设为true 可输入多行。 (3)PasswordChar 属性 用于密码输入,设置为* ,显示为*。,2018/11/20,50,(4)ScrollBars 属性 用于设置文本框是否有滚动条 如表2。8 只有当MultiLine 属性为true 时滚动条才有效。 (5)locked 属性 用于设置文本框的
25、内容是否可以编辑,默认值为false 表示可编辑,值为true 表示锁定。,2018/11/20,51,2 常用方法 常用的方法为Setfocus 设置焦点,将光标从其它位置移到文本框中。 3 常用事件 (1)Chang事件,改变文本框中内容改变时发生的事件 (2)KeyPress 事件,当用户按下并且释放键盘上的一个键时,发生KeyPress 事件。该事件将返回一个KeyAscii 参数值. (3) LostFocus 和GotFocus 事件:表示文本框控件shiqu和得到焦点是所发生的事件。,2018/11/20,52,24 事件驱动,241 事件驱动的程序设计 事件驱动的应用程序,程序
26、的执行发生了根本的变化,代码不是按预定的路线执行,而是在响应不同的事件时执行不同的代码片断。每个对象都有一个相应的事件集每个事件的发生都要执行一段程序代码,时间可以由用户操作触发,也可以有操作系统或其他应用程序的消息触发,甚至可以由应用程序本身的消息触发。,2018/11/20,53,242 VB的对象如何识别事件,代码部分与每个事件相对应,如果让控件对象响应事件,就把代码写入这个事件的事件过程中.,2. 4. 3 事件驱动的工作过程,事件驱动的工作过程 (1) 启动应用程序,装载和显示函数。 (2) 窗体和窗体上的控件等待时间的发生。事件可以由用户引发,可由系统引发,也可由代码间接引发。 (
27、3) 当某个事件发生后,执行其对应的事件过程代码。 (4) 重复执行第2和第3步,直到结束。,2018/11/20,54,五、计时器控件的一般用法,如果想通过事件来控制某些操作或用于计时,就可以用计时器(Timer)控件来实现。计时器控件在设计时可见,而在运行时则隐藏起来,但在后台每隔一定的时间间隔就执行一次Timer事件。,(一)常用属性1、Interval属性返回或设置对Timer控件的计时事件各调用间的毫秒数语法:object.Interval=milliseconds milliseconds:0使Timer控件无效;165535可设置的时间间隔范围2、 Enable属性:用来决定计时
28、器控件是否能够响应计时事件。相当于启动或关闭计时器的开关。,2018/11/20,55,(二)Timer事件Timer事件是计时器的唯一事件。在一个Timer预定时间间隔过去之后发生,用以告诉VB在每个Interval到时该做什么。 语法: Private Sub object_Timer(index As Integer)程序代码End Sub,2018/11/20,56,本章习题,一、单项选择题 1.在 Visual Basic的集成开发环境中创建Visual Basic应用程 序时,除了工具箱窗口、窗体设计窗口、属性窗口外,必 不可少的窗口是( )。 A窗体布局窗口 B立即窗口 C代码窗
29、口 D监视窗口 2应用程序打包后,其包文件的后缀为( )。 A.exe B.cab C.txt D.ocx 3当运行程序时,系统自动执行启动窗体的( )事件过程。 ALoad BClick CUnload DGotFocus,2018/11/20,57,4.下列赋值语句正确的是( ) AA=B+C BB+C =A C-B=A D2=A+B5时钟控件响应的事件是( ) ATimer BInterval CClick DEnable6工程文件的后缀是( ) A.bmp B.vbpC.frm D.bas,2018/11/20,58,作业,1时间换算程序。设计一个时间换算程序,要求输入小时数、分钟数和秒数后,单击计算按纽输出共计秒数。程序运行界面如图1所示。,图1 程序运行界面,2018/11/20,59,2除法计算程序,编写求两个数相除的程序,若除数为零,用消息对话框提示重新输入。程序运行界面如下图2所示。 。,图2. 程序运行界面,2018/11/20,60,3角度转换程序。设计一程序,要求在文本框中输入角的弧度值,按“转换为角度”按纽,文本框中角的弧度值转换为角度值,程序运行界面如图3所示。,图3 角度转换程序运行界面,2018/11/20,61,本讲结束!,