Visual Basic程序设计基础 计算机科学学院
第三章 Visual Basic程序设计基础 1 窗 体 2 数据输入与输出 3
3.1 Visual Basic 基本语句 注意: 同一语句行中输入多条语句,语句之间用冒号“ : ”分隔。(不推荐使用) a=3 : b=6 一条语句在多行显示,使用续行符“ _”。续行符与它前面的字符之间至少有一个空格 x=( -b + sqr (b^2 – 4 * a * c) ) / _ (2 * a)
3.1 Visual Basic 基本语句 1.赋值号左边只能是变量,不能是常量、常数符号或表达式 2.不能在一句赋值语句中给多个变量赋值 sin(x) = x + y 5 = sqr(s) + x + y x + y = 3 2.不能在一句赋值语句中给多个变量赋值 Dim x%,y%,z% x=y=z=1 3.等号左边和右边的数据类型至少相关 X%=“asd”
3.1.3 注释语句 功 能:在程序中加入解释性的说明 语法格式: Rem 注释内容 ‘ 注释内容 (推荐使用) 功 能:在程序中加入解释性的说明 语法格式: Rem 注释内容 ‘ 注释内容 (推荐使用) 说 明:注释语句是非执行语句,它仅对程序的有关内容起说明作用 多行注释功能对调试非常有用 (1)使用关键字Rem,在Rem和注释内容之间要加一个空格。 (2)在其他语句后使用Rem关键字,必须使用冒号(:)与前面的 语句隔开。注释符(单引号’)可以直接写在其他语句后面。
3.1.4 暂停语句 (Stop语句) Private Sub Form_click() Dim i%, s% Print i , s s = s + i Form1.Print s End Sub ‘ 每一次的执行都会在此暂停 在VB解释环境下,STOP在程序 代码中设置断点(相当于中断) 暂停程序的执行。 功能:暂停语句功能是暂停程序的执行。 说明:暂停语句可以编写在程序的任何地方,程序执行到Stop语句处即暂停。
3.1.5 结束语句 (End语句) 用于结束一个程序的运行,并关闭所有文件 常用的地方 Sub Command1_Click() End Sub 结束一个Sub过程 End Function 结束一个function过程 End If 结束一个if语句块 End Type 结束记录类型的定义 End Select 结束情况语句
实例 1.两个数的交换 2.计算三角形面积 S=(a+b+c)/2 面积=sqr(s*(s-a)*(s-b)*(s-c))
第三章 Visual Basic程序设计基础 3.1 窗 体 3.2 数据输入与输出 3.3
3.2 窗体 窗体是构成应用程序的基本模块 窗体是用户与应用程序之间进行交互的窗口 最大化按钮 对象 方法 属性 事件
常见属性 0,0 Top Left Height Width Left、Top、Width、Height属性 所有可视化的对象都具有这些属性,它们决定了对象的位置和大小 Top Height Left Width 0,0 格式: 对象.Left[=数值] 对象.Top[=数值] 对象.Width[=数值] 对象.Height[=数值] 属性值以TWIP(缇)为单位,每缇约为1/1440英寸 窗体的LEFT指窗体左边界与屏幕左边界的相对距离 TOP指窗体顶边与屏幕顶边的相对距离
常见属性 Caption和Name属性 Caption属性用来设置窗体或对象的标题,该标题显示在窗体或对象上。 控件名 Name Caption Text 窗体(frm) Form1 文本框(txt) Text1 命令按钮(cmd) Command1 标签(lbl) Label1 计时器(tmr) Timer1 常用控件的默认Caption属性和Name属性
常见属性 Enabled、Visible属性 说明: Enabled属性用来设置一个对象是否激活。 默认情况下,对象的Enabled和Visible属性值均为True,表示该对象既可见,又处于激活状态 Command2.Visible=False Command3.Enabled=False
常见属性 AutoRedraw属性 Picture属性 自动重画,该属性控制屏幕图像的重建 如果该属性设置为True,则当一个窗体被其他窗体覆盖,又回到该窗体时,将自动刷新或重画该窗体上的所有图形。 该属性的默认值为False。 Picture属性 Picture属性用来在对象中显示一个图形。该属性可以显示多种图形格式: .jpg、.bmp、.gif 、.ico……
常见属性 ForeColor和BackColor属性 WindowState和BorderStyle属性 ControlBox属性 颜色用一个十六进制常量表示。&H80000012& WindowState和BorderStyle属性 WindowState属性用来设置窗体的操作状态 (正常状态/最大化/最小化) BorderStyle属性用来设置窗体边框的类型 ControlBox属性 设置窗口控制框(系统菜单,位于窗口左上角). Font属性 Font属性用来设置输出字符的字形属性,包括字体和字号等 如果程序中需要使用多种字形,可以通过程序代码设置 当BorderStyle=0(无边界)时, ControlBox不起作用
窗体的常见方法 [对象.]Cls 用于清除对象中显示的文本或图形 说明: 格式中的“对象”可以是窗体或图片框,如果省略“对象”则清除当前窗体内的显示内容。但是用Picture属性输入的图形不能用Cls方法清除,只能通过LoadPicture方法清除。 不能清除在设计时的文本和图形
窗体的常见方法 [对象.]Show [对象.]Hide 作用:Show方法用来显示窗体,Hide方法用来隐藏窗体
窗体的常见方法 Move方法 用来移动对象,同时可改变其大小。如果一个对象支持Left、Top、Width和Height属性,则它也支持Move方法。 [对象.]Move left[,top,width,Height]
实例 控件从左向右循环移动
窗体的常见事件 Load事件 Unload事件(卸载事件) Sub Form_Load() Caption = "装入窗体" Load事件是在窗体被装入工作区时自动触发的事件。当应用程序启动时,自动执行该事件。Load事件可以用来在启动时对属性和变量进行初始化。 Sub Form_Load() Caption = "装入窗体" Form1.AutoRedraw = True FontSize = 48 : FontName = "隶书" Form1.Print "装入窗体" End Sub Unload事件(卸载事件) 当从内存中清除一个窗体(关闭窗体)时自动触发该事件。
窗体的常见事件 Click和DblClick事件 Click是鼠标单击事件,程序运行后,当鼠标在对象上作单击操作时,将调用对象的单击事件对象名_Click() DblClick是鼠标双击事件,程序运行后,当鼠标在对象上作双击操作时,将调用对象的双击事件对象名_DblClick()。 “双击”实际上触发两个事件,第一次按鼠标按钮时产生Click事件,第二次产生DblClick事件。 触发Click和DblClick事件的对象常见的有窗体和命令按钮。
Private Sub Text1_Change() Print "文本框中的内容有改变" End Sub 常见事件 Change事件 Change事件是一旦控件的内容改变,就自动触发该事件。例如在文本框中键入内容时,就触发Change事件 Private Sub Text1_Change() Print "文本框中的内容有改变" End Sub
几个常见控件 命令按钮(Command Button) 标签(Lable) 文本框(TextBox) 计时器(Timer)
常用控件—命令按钮 属性 Caption、Default、Cancel、Enabled 事件 Click、DblClick
常用控件——标签(Label) 属性 阴影文字的构建 Caption ForeColor、BackColor Alignment BorderStyle AutoSize 阴影文字的构建
常用控件——文本框(TextBox) 既可以显示文本,又可以在文本框中输入、编辑或复制文本 Text属性:设置文本框中显示的文本内容 Multiline属性:设置是否允许输入多行文本 ScrollBars属性:设置是否含有滚动条 PasswordChar属性:设置显示口令字符
常用控件——文本框(TextBox) 仅在运行时有效的属性 SelLength SelStart SelText 实例:显示哪些内容被选中了 当前选中的字符个数。为0表示未选中任何字符。 SelStart 当前选择文本的起始位置。其值为从0开始。 SelText 当前选择的文本字符串,没有选择时为空串。 实例:显示哪些内容被选中了
常用控件——计时器控件 利用计算机系统的时钟计时,间隔一定时间触发事件。计时器的时间以毫秒为单位。 Interval属性 Timer事件 用于设置计时器事件之间的时间间隔,取值为0,则表示定时器无效 Timer事件 当达到Interval属性规定的时间间隔就触发事件
常用控件——计时器控件 Private Sub Form_Load( ) Text1.Text = "计时器" Command2.Enabled = False Timer1.Interval = 100 End Sub Private Sub Timer1_Timer( ) Label1.Caption = Time
常用控件——计时器控件 Timer1.Interval = 100 Private Sub Command1_Click() Text1.Text = "计时开始" Form1.Tag = Timer Command1.Enabled = False Command2.Enabled = True End Sub Private Sub Command2_Click() Text1.Text = CInt(10 * (Timer - Form1.Tag)) / 10 & "秒" Command1.Enabled = True Command2.Enabled = False Tag:返回/设置一个表达式 用来存储程序中需要 的额外数据,字符串型 Timer:返回一个Single,表示 从午夜开始到现在经 过的秒数 Timer1.Interval = 100
实例 任务 设计一个窗体,运行窗体后,图片会不停地闪动 界面设计 : 属性设计 : Private Sub Timer1_Timer() 对象 属性 属性值 Timer Name Timer1 Enabled True 100 PictureBox Picture1 D:\a003.bmp Private Sub Timer1_Timer() End Sub Picture1.Visible = Not (Picture1.Visible)
数据输入输出 ▲ 1 数据输出--Print方法 ▲ 2 数据输入--InputBox函数 ▲ 3 MsgBox函数和MsgBox语句 4 打印机输出
Print方法 [对象名.] Print [表达式] [,|;] 说明 在指定的对象中输出表达式的值,用于在窗体、图片框或打印机上输出数据。 表达式可以省略,则在对象上打印空行。 Print具有计算和输出双重功能。
Print方法 Private Sub Form_Click() Dim intA1 As Integer, intA2 As Integer, intTemp% intA1 = 5: intA2 = 10 Form1.Print "交换"; intA1; intA2 intTemp = intA1: intA1 = intA2: intA2 = intTemp Form1.Print "得"; intA1; intA2 End Sub
Print方法 用“;”隔开数据项,打印时以紧凑格式输出 字符串数据的紧凑格式输出时把各表达式连接起来输出 数值数据的紧凑格式输出时,数据前有一个符号位,后有一个空格
Print方法 用“,”隔开,以标准格式输出(分区输出格式),以14个字符宽度划分为一个区段。 判断下面语句的输出结果?
练习题 Print "AB"; "CDE" Print 2; -4, 6 Print "AB"; "CDE", ‘末尾出现了逗号 *2*-4**********6 ABCDE**********2*-4**********6 ABCDE*2*-4*****6
与Print方法有关的函数 Tab函数 Print Tab(n) Spc函数 Print Spc(n) 功能是在指定的位置显示输出信息。 Print Tab(n) Spc函数 功能是在两个输出表达式之间空n个空格。 Print Spc(n) 参数n为数值表达式,其值为一整数,它是下一个输出位置的列号 注意: Spc函数和Tab函数的功能十分类似,而且可以互相代替,但Tab函数需要从对象的左端开始计数,而Spc函数只表示两个输出项之间的空格数
与Print方法有关的函数 Print "**********" Print Tab(2); "*"; Spc(8); "*"
Format函数 将数值或日期按指定格式输出 Format(数值表达式,格式字符串)
Print format(25634, “########”) 00025634 Print format(25634, “########”) 25634 Print format(850.721, “###.##”) 850.72 Print format(7.876, “000.00”) 007.88
Format函数 Print format(.257, “00.0%”) Print format(384.2, “$###.00”) 25.7% Print format(384.2, “$###.00”) $384.20 Print format(3485.52, “0.00E+00”) 3.49E+03 Print format(9.8596, “$0,000.00”) $0,009.86
Format函数 # 数字;不在前面或后面补0 0 数字;在前面或后面补0 . 小数点 , 千位分隔逗点 % 百分比符号 $ 美元符号 # 数字;不在前面或后面补0 0 数字;在前面或后面补0 . 小数点 , 千位分隔逗点 % 百分比符号 $ 美元符号 -+ 负、正号 E+ E- 指数符号
InputBox函数 提示 标题 默认 InputBox( 提示 [,标题] [,默认] [,x坐标] [,y坐标] ) r = Val(InputBox("输入圆半径", "圆周长和面积计算", 1))
InputBox函数 换行符 Chr$(13)+ Chr$(10) vbCrLf
MsgBox()函数与MsgBox过程 MsgBox(msg[,type][,title][,helpfile][,context]) 整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标类型
MsgBox函数 64 MsgBox "欢迎光临!", vbOKOnly + vbInformation, "欢迎" 64 MsgBox "欢迎光临!", 64, "欢迎"
MsgBox函数 MsgBox “网络连接出现问题,是否重试?", 274, "警告" 2+16+256 vbAbortRetryIgnore+ vbCritical+vbDefaultbutton2
MsgBox()函数与MsgBox过程 函数形式:x = MsgBox("参数错误",18) 过程形式:MsgBox "参数错误",18 返回值为3 返回值为4 返回值为5
MsgBox函数 返回值 符号常量 用户选择的按钮 1 VbOk “确定”按钮 2 VbCancel “取消”按钮 3 VbAbort “终止”按钮 4 VbRetry “重试”按钮 5 VbIgnore “忽略”按钮 6 VbYes “是”按钮 8 VbNo “否”按钮
MsgBox函数 x = MsgBox("是否退出?", vbOKCancel, "提示")
MsgBox()函数与MsgBox过程 MsgBox "请输入小于等于10的半径值", 48, "出错"
思考 以下关于MsgBox的叙述中,错误的是( ) A) MsgBox函数返回一个整数。 B) 通过MsgBox函数可以设置信息框中图标和按钮的类型。 C) MsgBox语句没有返回值。 D) MsgBox函数的第一个参数是一个整数,该参数只能确定对话框中显示的按钮数量。 D
思考 Private Sub Command1_Click( ) a$ = “software and hardware” b$ = Right(a$, 8) c$ = Mid(a$, 1, 8) MsgBox a$, , b$, c$, 1 End Sub 单击命令按钮,在弹出的信息框的标题栏中显示的是( ) A)software and hardware B)software C)hardware D)1 C
顺序程序设计实例 如何输入摄氏温度与华氏温度值? 摄氏温度与华氏温度的转换 转换公式为:F=32+1.8C,其中F为华氏温度,C为摄氏温度 用文本框或InputBox函数来获得输入值 如何输出转换后的结果? 用文本框的文本属性、标签的标题属性以及Print方法来输出结果
两种界面设计方法 InputBox函数来获得输入值,用标签的标题显示输出结果 文本框既获得输入值,也来显示输出结果
实验 计算三角形的面积,三角形三边的值通过三次调用InputBox函数求得,求出的面积通过调用MsgBox输出
实验 单机窗体时,随机产生一个三位正整数,然后逆序输出该数,产生的数与逆序数同时显示(要求用数字和字符串两种形式完成)