1、Visual Basic程序设计第一章 Visual Basic 导论第二章 程序设计与算法第三章 常用控件与界面设计第四章 数据、表达式与简单程序设计第五章 选择分支与循环第六章 数组第七章 过程第八章 文件第九章 程序调试第十章 其他控件及其应用第十一章 图形处理与多媒体应用第十二章 数据库操作与编程,第一章 Visual Basic导论,1.1 引例 1.2 VB主要功能和特点 1.3 VB集成开发环境1.4 程序设计方法的发展1.5 VB中的有关概念1.6 建立简单的应用程序,1.1 引例1.1 一行内容在窗体左、右移动;移动两种方法:手动和自动,当自动时,文字闪烁显示;当内容超出窗体
2、,进行反弹。,1.1 引例 1.2 对输入的字符进行转换的程序。转换规则:大写字母转换成小写字母,小写字母转换成大写字母空格不转换其余转换成“*”。要求:每输入一个字符,马上就进行判断和转换。通过上述两例说明VB面向对象、可视化、事件驱动的特点。,1.2 VB主要功能和特点,1. 具有面向对象的可视化设计工具; 2. 事件驱动的编程机制; 3. 提供了易学易用的应用程序集成开发环境; 4. 结构化的程序设计语言; 5. 支持多种数据库系统的访问; 6. Active技术; 7. VB 6.0在开发环境上、网络功能等的增强; 8. 完备的help联机帮助功能。,标题栏,菜单栏,工具栏,控件工具箱
3、,初始窗体,工程资源管理器子窗口,属性子窗口,窗体布局子窗口,1.3 VB集成开发环境,Visual basic 的开发环境,查看代码,查看对象,切换文件夹,Visual basic 的开发环境,对象框,排序选项卡,属性列表,1. 主窗口应用程序窗口,由标题栏、菜单栏和工具栏组成。 2. 窗体(form)窗口设计VB程序的界面。 3. 代码(code)窗口编辑窗体、标准模块中的代码。 4. 属性(properties)窗口所有窗体或控件的属性设置。 5. 工程资源管理器(project expror)窗口保存一个应用程序所有的文件。 6. 工具箱(toolbox)窗口显示各种控件的制作工具,供
4、用户在窗体上设计。,1.4 程序设计方法的发展,1. 初期的程序设计高运行效率、少占用内存为目标。 2. 结构化程序设计程序的可读性、可维护性为目标。程序= 算法+数据结构 的面向过程的程序设计。 3. 面向对象的程序设计降低程序的复杂性、提高软件的开法效率和改善工作界面为目标。程序=对象+消息 的面向对象的程序设计。,1.5 对象的有关概念,1. 类类是创建对象实例的模板, 包含了创建对象的属性描述和行为特征的定义。 2. 对象是类的一个实例,继承了类的属性、方法。VB中常用的对象有:窗体、控件等。 3. 对象的建立和命名 4. 对象的三要素(1)属性 对象的性质,即用来描述和反映对象特征的
5、参数。(2)方法 对象的行为,即将一些通用的过程编写好并封装起来,作为方法供用户直接调用。,(3)事件 响应对象的动作称为事件,它发生在用户与应用程序交互时。如单击控件、鼠标移动、键盘按下等。事件过程 指附在该对象上的用户编写的程序代码,是事件的处理程序。事件驱动过程 是图形用户界面的本质,由用户控制而代码作出响应。 5. VB程序的执行步骤如下: 1)启动应用程序,装载和显示窗体; 2)窗体(或窗体上的控件)等待事件的发生; 3)事件发生时,执行对应的事件过程; 4)重复执行步骤(2)和(3) ; 5) 直到遇到END结束语句结束程序的运行;或按“结束”强行停止程序的运行。,1.6 建立简单
6、的应用程序,以例1.3为例: 1. 建立用户界面的对象; 2. 对象属性的设置; 3. 对象事件过程及编程; 4. 程序运行和调试; 5. 保存文件。,1.7 工程的管理及环境的设置,一、工程的组成工程文件包含了一个应用程序的所有文件: 窗体文件(.frm):控件及属性、事件过程和自定义过程; 窗体的二进制数据文件(.frx),自动产生同名.frx文件; 标准模块文件(.bas); 类模块的文件(.cls); 资源文件(.res); ActiveX控件的文件(.ocx). 二、创建、打开和保存工程,三、添加、删除和保存文件 1. 窗体名和窗体文件名概念窗体名:窗体的Name属性, 在代码中用来
7、引用该窗体,同一 工程不能有相同的窗体名;窗体文件名:窗体存放在磁盘上的文件名,该文件包含了该窗体的所有控件属性和代码,同一文件夹不能有相同的文件名。 2. 在工程中添加现存的窗体时,只是对该窗体文件的引用纳入工程。因此,如果更改窗体并保存它,会影响包含此窗体文件的任何工程。 3. 在工程中删除窗体时,仅将此窗体从工程里删除掉,但是窗体文件仍存在于磁盘上。但是,如果在VB之外删除一个窗体文件,VB不能更新此工程文件,当打开此工程时,将显示一个文件丢失的错误信息。 4. 对窗体文件改名方法 1) 打开工程 “另存为Form”实现文件的复制保存工程文件。 2) 利用编辑程序打开工程文件,修改FOR
8、M=XXX的文件名。,1.8 生成可执行文件和制作安装盘,以工程文件例2.11为例。 1. 生成可执行文件文件/生成V6B2-11.exe文件,然后关闭Visual Basic6.0。 2. 制作安装盘 在向导的指导下运行V B6.0中文版工具“Package & Deployment”; “打包”:把工程中用到的各种类型的文件进行打包压缩后,存放到特定的目录下。 “展开”:再把这些打包的文件展开到用户可以携带的安装介质软盘、光盘等。 3. 检测安装程序在没有VB 6.0系统的环境下,执行安装盘中的Setup.exe文件,将发行盘进行安装。,第二章 程序设计与算法,2.1 算法概论2.2 基本
9、算法结构图的设置,2.1 算法概论 1/2,1. 算法的概念 一类是数值计算算法,如求解超越方程的根 一类是非数值计算算法,如对非数值信息的排序、查找等。 2. 算法示例,1、求两个自然数的最大公约数的算法(欧几里德算法)S1.输入两个自然数M、NS2. 求M除以N的余数RS3.使M=N,即用N代换MS4.使N=R,即用R代换NS5.若R0,则重复执行S2、S3、S4(循环),否则转S6S6.输出M,M即为M和N的最大公约数,2、在N个字符串数据集合中,查找有无特定的字符串存在S1.输入输入字符串数据的个数N和要查找的字符串SS2. 使I=1,I用于计数S3.从字符串数据集合中读取一个字符串X
10、S4.若X=S,输出“找到S”的信息,算法结束,否则转S5S5.使I=I+1,计数器计数S6.若IN,则重复执行S3、S4、S5(循环),否则转S7S7.输出“找不到S”信息,算法结束,3. 算法的特征 (1) 确定性 (2) 可行性 (3) 有穷性 (4) 输入性 (5) 输出性 4. 算法的描述 见p12 表、图 5. 基本算法结构,2.1 算法概论 2/2,5. 基本算法结构 顺序结构; 分支结构; 循环结构循环结构可分为两类: 当型循环 直到型循环 共同特点是: (1) 只有单一的入口和单一的出口; (2) 结构中的每个部分都有执行到的可能; (3) 结构内不存在永不终止的死循环,图,
11、2.2 基本算法结构图,返回,第三章 常用控件与界面设计,3.1 窗体及常用控件属性3.2 常用方法3.3 菜单设计3.4 多重窗体和多文档窗体,3.1 窗体及常用控件,1. Name名称属性创建的对象名称,有默认的名。在程序中,控件名是作为对象的标识而引用,不会显示在窗体上。2. Caption标题属性该属性决定了控件上显示的内容。3. Height、width、top和left属性,4. Enabled属性控件是否可操作。当设置为false时,呈暗淡色,禁止用户进行操作。 5. Visible属性控件是否可见。当设置为false时,用户看不到,但控件本身存在。 6. Font属性Fontn
12、ame:字体;Fontsize:字体大小;Fontbold:是否是粗体;Fontitalic:是否斜体;Fontstrikethru:是否加一删除线。Fontunderline:是否带下划线。例2.2 在窗体是建立两个命令按钮Command1和Command2, Command2的Font通过属性窗口设置, 其余属性通过代码实现。,7. Forecolor前景颜色属性设置控件的前景颜色(即正文颜色).。其值是一个十六进制常数,用户可以在调色板中直接选择所需颜色。 8. Backcolor背景颜色属性 9. Backstyle背景风格属性0-transparent:透明显示,即控件背景颜色显示不
13、出来。 10. BorderStyle边框风格属性0-None:控件周围没有边框 。1-Fixed Single:控件带有单边框。 11. Alignment属性控件上正文水平对齐方式 0:正文左对齐 ;1:右对齐;2:居中。 12. AutoSize属性控件是否根据正文自动调整大小, False 13. WordWarp属性 AutoSize True时,WordWarp才有效。按正文字体大小在垂直方向上改变显示区域的大小。,14.TabIndex属性决定了按Tab键时,焦点在各个控件移动的顺序。各个控件默认 TabIndex值就是以控件建立时 的顺序,第一个为0。 15.控件默认属性反映该
14、控件最重要的属性,使用时可省略属性名。注意:Command的默认属性为Default,当该属性为True,当按Enter键,该控件起作用。 例3.3.a控件设置效果,2.窗体 1.属性Caption标题MaxButton、MinButtonIcon、ControlBoxPicture、AutoRedrawBorderStyle (0 1 2 3 4 5 )WindowsState (0-正常、1-最小化、2-最大化) 2.事件Click、DblClick和Load Load 当装入窗体时激发,通常用于对属性和变量初始化 3.方法Print、Cls和Move等例3.4 上述属性、Click、Db
15、lClick和Load 事件演示。,3.标签 Label用于显示文本(输出)信息,不能作为输入信息的界面。例3.3.b 显示浮雕效果的文字,实现方法:字颜色、标签位置 四、文本框 TextBox是一个文本编辑区域,可在该区域输入,编辑和显示正文内容。1.其他属性Text:正文内容;Maxlength:设置正文的最多字符个数,0任意长度值;MultiLine:是否为多行,默认为一行,False;ScrollBars:MultiLine为True时,该属性才有效,表示滚动条的形式0-None、1-Horizontal、2-Vertical、3-Both;Locked:是否可被编辑属性,False,
16、表示为可编辑。 PassWord:口令字符; Text属性返回输入的数据,屏幕显示该字符;SelStart、SelLength、SelText:选中文本的起始、长度、内容。例3.6 .a复制选中的文本,2.常用事件 Change:当改变文本框的Text属性时会引发该事件。KeyPress(KeyAscii As Integer):同上,并可返回一个KeyAscii参数KeyAscii 为13,按回车键;为0 去除刚输入的字符。LostFocus:当控件失去焦点时发生。GotFocus:当控件获得焦点时发生。 3.常用方法 对象.SetFocus:是把光标移到指定的文本框对象中。 4.文本框的应
17、用 数据过滤 例3.6.b 要求输入合法的数字数据。当输入结束时(按Tab键),对于输入正确的数据,显示正确信息;对输入的非数字数据,则响铃(Beep)、显示错误信息、清除文本框中的内容,并使焦点重新回到文本框。Text2_ LostFocus 当输入结束按Tab键时,该事件激发。IsNumeric(Text2):判断是否输入非数字数据。Text2.SetFocus:使焦点重新回到文本框。,4、命令按钮CommandButton接受用户输入的命令。输入命令可以有三种方式:鼠标单击、Tab键焦点到该按钮、快捷键。1. 其他属性 Caption:命令按钮显示的内容,可设置快捷键,例 &Ok,显示
18、Ok。 Value: 检查该按钮是否按下。该属性在设计时无效。 Picture :按钮可显示图片文件(.bmp和.Ico),当Style为1时有效。 Style:确定显示的形式,0 只能显示文字,1 文字、图形均可 。 ToolTipText :设置工具提示,和Picture结合使用。2. 事件 Click,3. 例 3.8建立一个允许剪切、复制和粘贴的简单便笺板程序。可增加内容:利用MouseMove事件决定命令按钮的有效性,即当选中内容,“剪切”、“复制”按钮有效,否则无效。,5.单选钮和复选框,Caption属性:文本标题。 Alignment属性0:控件钮在左边,标题显示在右边。1:控
19、件钮在右边,标题显示在左边。Value属性单选钮(逻辑型) 检查框(数值型)True:选定 0-Unchecked:未被选定False:未选定 1-Checked:选定2-Grayed:灰色,禁止选择Style属性0-Standard:标准方式1-Graphical:图形方式,事件:Click因为单击时自动改变状态,故不需要编写过程。例3.9.a用单选钮和检查框设置文本框的字体。,6.框架(Frame),框架内控件的创建方法: 方法1:单击工具箱上的工具,然后用出现的“+”指针,在框架中适当位置拖拉出适当大小的控件。不能使用双击工具箱上图标的自动方式。 方法2:将控件“剪切”到剪贴板,然后粘贴
20、(Ctrl+V)到框架。,Caption属性:框架标题Enabled属性False:标题呈灰色,不允许对框架内的对象进行操作。Visible属性True:框架及其控件可见。False:框架及其控件被隐含起来。Click、DblClick事件:一般不需要编写框架的事件过程。例3.9.b 框架用法示例。,7. 列表框和组合框,列表框各主要属性的值:List1.ListIndex = 3 (下标从0开始的)List1. ListCount = 5List1. Selected(3) = True,其余为False。List1. Sorted = False,没有排序。List1. Text 为 “c
21、ox” ,与List1. List(List1. ListIndex)相等,List1,列表框各主要属性的值:List1.ListIndex = 0List1. ListCount = 8List1. Selected(3) = True其余为False。List1. Sorted = FalseList1. Text 为 “李宁”,Combo1,1. 共有的重要属性(P:可在程序中设置或引用,D:可在设计状态设置。)List :PD 字符型数组,存放列表框的项目,下标是从0开始。ListIndex:P选中的项目的序号,没有项目被选定时为-1ListCount:P项目的数量,ListCount
22、-1是最后一项的下标。Sorted:DTrue:按字母顺序排列。False:按加入先后顺序排列。Text:P列表项中被选定的内容,List 1.List(List 1.ListIndex) = List1.Text。,2. 列表框的特有属性Selected:P逻辑数组。Selected(i)的值为True表示第i+1项被选中。MultiSelect0-None:禁止多项选择。1-Simple:简单多项选择。2-Extended:扩展多项选择。3. 列表框的特有属性Style,4. 方法AddItem对象.AddItem item , indexRemoveItem对象.RemoveItem i
23、ndexClear对象.Clear5. 事件列表框:Click、DblClick。组合框:Click,只有简单组合框才有DblClick事件。 一般不需要编写Click事件过程。通常在单击命令按钮或发生DblClick事件时才读取Text属性。,例3.11.a对列表框进行项目添加、修改和删除操作。,例3.11.b对列表框进行项目添加、修改和删除操作。,时钟控件以Interval为时间间隔产生 Timer事件。属性Interval属性单位:ms(0.001s),0.5秒是500。Interval0:屏蔽计时器。Enabled属性True:有效计时False:停止时钟工作事件Timer例3.13.
24、a数字时钟例3.13.b蝴蝶飞舞,8. 时钟(Timer),3.2 常用方法方法是面向对象的,故使用的形式为: 对象.方法1.Print方法形式: 对象.PrintSpc(n)|Tab(n)表达式列表;|,作用:在对象上输出信息 对象:窗体、图形框或打印机(Printer) ,省略对象在窗体上输出。 Spc(n)函数:插入n个空格,允许重复使用。 Tab(n)函数:左端开始右移动n列,允许重复使用。 ;(分号):光标定位上一个显示的字符后。 ,(逗号):光标定位在下一个打印区的开始位置处。 无 ;,时换行。开始打印的位置是由对象的CurrentX和CurrentX属性决定,缺省为打印对象的左上
25、角0,0。注意:Print方法在Form _Load事件过程中起作用,必须设置窗体的AutoRedraw为True。,例3.15 显示图形Private Sub Form_Click()For i = 1 To 5Print Tab(i); String(6 - I, “); Spc(6); String(I, “)Next iEnd Sub,注意: String(number, character) 返回指定长度重复字符的字符串。考虑: 若把Spc(6)换成Tab(6),效果如何?,2. Cls方法形式:对象.Cls作用:清除运行时在窗体或图形框中显示的文本或图形。注意:不清除在设计时的文本
26、和图形。 3. Move方法形式:对象.Move 左边距离,上边距离,宽度,高度作用:移动窗体或控件,并可改变其大小。对象:可以是窗体及除时钟、菜单外的所有控件例3.16 图形移到窗体的中心。,应用举例,例3-17 编一计算月支付贷款的程序。现要求根据房产商提供的信息,买房者选择房型、面积、单价、按揭期等信息,计算每月支付代款的程序。 窗体1:列表框选择数据、标签显示数据、文本框输入数据; 窗体2:图形框显示房屋的平面图。 Pmt函数计算月支付贷款。,3.3 菜单的设计,下拉式菜单系统的组成结构 :,主菜单名 快捷键热键下级子菜单标记,主菜单条,分隔线,子菜单名,一、菜单编辑器的使用工具菜单编
27、辑器(Ctrl+E);窗体上快显菜单菜单编辑器。,常用属性: 1. 标题(Caption) 热键 前面加& 2. 名称(Name)文本框 分隔符也应有名称 3. 快捷键(Shortcut) 菜单名没有快捷键 4. 复选(Checked)检查框 TRUE 有 5. 有效(Enabled)检查框 6. 可见(Visible)检查框,例 3.18 建立一个有菜单功能的文本编辑器。,二、 菜单项增减,在程序运行时,菜单随时增减,如“文件”菜单能保留最近打开 的文件数。这同控件数组一样,使用菜单数组。 步骤:1.在菜单设计时,加入一个菜单项,其Index为0(菜单数组),Visual为False。2.在
28、程序运行时,通过Load方法向菜单数组增加新的菜单项。例3.19 在上例的文件菜单中保留最近打开的文件清单。同样,要删除所建立的菜单项,使用UnLoad方法向菜单数组 减少菜单项。,三、 弹出菜单(快捷菜单),弹出菜单是独立于窗体菜单栏而显示在窗体内的浮动菜单。显示位置取决于单击鼠标键时指针的位置。设计与普通菜单相同(如果不希望菜单出现在窗口的顶部,该菜单名Visible属性设置为False )。菜单弹出的方法:对象.PopupMenu 菜单名, 标志, x, y标志,表示弹出的位置和触发的键,Sub Text1_MouseDown(Button As Integer, Shift As In
29、teger, X As Single, Y As Single)If Button = 2 Then PopupMenu EditMenu, vbPopupMenuCenterAlign End Sub,例3.20 弹出菜单。,3.4 多重窗体和多文档窗体,一、多重窗体 1. 添加窗体“工程|添加窗体”,新建,现存,添加“现存”窗体时要注意:防止多个窗体的Name相同而不能添加;添加的窗体实际是将其他工程中已有的窗体加入,多个工程共享窗体;通过“另存为”命令以不同的窗体文件名保存,断开共享。2. 保存窗体一个工程中有多个窗体,应分别取不同文件名保存在磁盘上,VBP工程文件中记录了该工程的所有窗
30、体文件名。,3. 设置启动窗体,设置启动对象,4. 窗体语句(1)Load语句:装入窗体到内存但没有显示窗体形式: Load 窗体名称(2)Unload语句:从内存删除窗体形式: Unload 窗体名称,“工程/属性” “启动对象”,5. 窗体方法(1)Show方法:显示一个窗体(当窗体没有Load,自动Load)窗体名称.Show 模式0 Modal:关闭才能对其他窗体进行操作。1 Modeless,可以对其他窗体进行操作。 (2) Hide方法:隐藏窗体,没有Unload删除窗体名称. Hide6. 不同窗体间数据的存取(1)存取控件的属性另一窗体名.控件名.属性(2)存取变量的值另一窗体
31、名.全局变量名,例3.21 输入和计算学习成绩。,模块: Public MATH As Single Public PHYSICS As Single Public CHEMISTRY As Single Public CHINESE As Single Public ENGLISH As Single,二、 多文档界面(MDI)例3.22 1. 创建和设计MDI窗体及其子窗体(1) 创建和设计MDI窗体创建: “工程/添加MDI窗体”命令,设计:一般有菜单栏、工具栏、状态栏,(2) 创建和设计MDI子窗体创建: MDI子窗体是一个MDIChild属性为True的普通窗体。要创建多个子窗体,通
32、过窗体类来实现:Public Sub FileNewProc()Dim NewDoc As New frmMDIChild No = No + 1NewDoc.Caption = “no“ & NoNewDoc.Show End Sub设计:可有菜单栏,但必须有文本框。,MDI子窗体的Name,2. MDI窗体与子窗体的交互 (1)活动子窗体和活动控件 MDI窗体的两个属性:ActiveForm 和ActiveContro。l 例:将子窗体的文本框中所选文本复制到剪贴板上。ClipBoard.SetText frmMDI.ActiveForm.ActiveControl.SelText (2)
33、显示MDI窗体及其子窗体 显示任何窗体的方法为show,还有有关规则: 加载子窗体时,其父窗体会自动加载并显示;反之则无。 MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体。 (3)维护子窗体的状态信息 (4)用QueryUnload卸载MDI窗体,3. 多文档界面应用程序中的“窗口”菜单(1)显示打开的多个文档窗口要在某个菜单上显示所有打开的子窗体标题,只需利用菜单编辑器将该菜单的WindowList属性设置为True。(2)排列窗口利用Arrange方法进行层叠、平铺和排列图标。形式: MDI窗体对象.Arrange 的排列方式:,第四章 数据、表达式与简单程序设计
34、,4.1 编码规则4.2 数据类型4.3 变量与常量4.4 运算符和表达式4.5 常用函数4.6 常见错误,4.1 编 码 基 础,1. VB代码不区分字母的大小写系统保留字自动转换每个单词的首字母大写;用户自定义行以第一次为准。 2. 语句书写自由一行可书写几句语句,之间用冒号分隔;一句语句可分若干行书写,用续行符_连接一行=255个字符。 3. 注释有利于程序的维护和调试Rem开始 或 单撇号 4. 保留行号与标号,4.2 数 据 类 型,标准数据类型,4.3 变量与常量,一、变量和常量的命名规则变量:在程序运行中其存储的值可以改变。常量:在程序运行中其值不可以改变。命名规则: 1. 以字
35、母或汉字开头,后可跟汉字、字母、数字或下划线组成,长度小于等于255个字符; 2. 不要使用VB中的关键字; 3. VB中不区分变量名的大小写; 4. 为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。,二、变量声明 1.用Dim语句显式声明变量形式:Dim 变量名 AS 类型Dim 变量名类型符例 Dim iCount As integer , sAllsum As single等价于 Dim iCount%, sAllsum! 2.隐式声明未进行上述的声明而直接使用,其类型为 Variant 类型。建议不使用。注意: 在通用声明处加 Option Explicit
36、语句可强制显式声明变量。,三、常量 1. 用户声明常量形式:Const 常量名 AS 类型 = 表达式省略 AS 类型 ,常量的类型由表达式值的类型决定。为使与变量名区分,一般常量名使用大写字母。例 Const MAX=100 2. 系统提供的常量系统定义常量位于对象库中,可通过“对象浏览器”查看。例:vbNormal vbMinimized、vbbCrLf等,4.4 运算符和表达式,一、运算符1. 算术运算符例:5+10 mod 10 9 / 3 +2 2 结果:10,2. 字符串运算符 、+ 字符串连接“ 123 “ + “ 456 “ 结果 “ 123456 “ “ 123 “ & “
37、456 “ 结果 “ 123456 “区别:+ 两边必须是字符串,& 不一定例如:“abcdef“ & 12345 结果为 “abcdef12345 “abcdef “ + 12345 出错“123“ & 456 结果为“ 123456 “123” + 456 结果为 579 注意:“123 “ + True 结果为 122True转换为数值-1,False转换为数值0,3关系运算符将两个操作数进行大小比较,结果为逻辑量。字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止.。例: “ ABCDE “ “ ABRA “ 结果为 False,“男字“ “女字“ 按汉字的拼
38、音字母比较,4. 逻辑运算符将操作数进行逻辑运算,结果是逻辑值:条件表达式1 And 条件表达式2 条件表达式均为T, 结果为T;条件表达式1 Or 条件表达式2 条件表达式有一个为T 结果为T。,二、表达式1. 组成变量、常量、函数、运算符和圆括号。2.书写规则(1) 运算符不能相邻。例a+ -b是错误的。(2) 乘号不能省略。例x 乘以y 应写成:x*y。(3) 括号必须成对出现,均使用圆括号。(4) 表达式从左到右在同一基准上书写,无高低、大小。3. 不同数据类型的转换运算结果的数据类型向精度高的数据类型靠。Integer=字符运算符关系运算符逻辑运算,表达式书写举例,sin(45*3.
39、14/180)+(exp(10)+log(10)/sqr(x+y+1),a*b*c*d/e/f/g 或 a*b *c*d/(e*f*g),例:用人单位招聘秘书:年龄小于40岁的女性,学历专科或本科,年龄40,性别=“女”,(学历=“专科”,学历=“本科”)And And Or,比a小,比b大 用 Or,a 小数,b 大数,a 小数,b 大数,比a大,比b小 用 And,例:表示算术表达式:正确的VB表达式: 3=x And x =7错误的VB表达式: 3=x=7 或 3=x Or x=7,考虑:若分别写成:年龄40 And 性别= “女“ And (学历= “专科“ And 学历= “本科“)
40、年龄40 Or 性别= “女“ Or (学历= “专科“ Or 学历= “本科“),4.5 常用内部函数 1. 数学函数Rnd函数返回0和1(包括0但不包括1)之间的双精度随机数。每次运行时,要产生不同序列的随机数,执行Randomize 语句。例产生1100的随机数: Int(Rnd *100)+1 2. 转换函数Chr(66) “B“ Asc (“B“) 66 Asc(Chr(99) 99 Chr(Asc(“K“) “K“Ucase$(“abcdefg“) “ABCDEFG“ 3.日期函数,Time返回系统时间、Date返回系统日期、Now返回系统日期和时间 DateAdd(要增减日期形式
41、,增减量,要增减的日期变量) DateDiff(要间隔日期形式,日期1,日期2) 例如求离你毕业还有多少天:DateDiff(“d“,date, #2006/07/01# )假定2006年毕业,4. 字符串编码和函数(1)字符串编码Windows系统对字符采用了DBCS编码,中文2字节,西文1字节VB中字符Unicode编码,任何字符2字节。 Len(“中国good ”)为6;LenB(“中国good ”)为12。StrConv() 进行DBCS与Unicode之间转换。(2)字符串函数Mid$(“ABCDEFG“,2,3) “BCD“InStr(2, “ABCDEFG“, “EF“) 5S=
42、Split(“123,56,ab“,“,“) Join(S,“) “123 56 ab“ Replace(“ABCDABCD“,“CD“,“123“) “AB123AB123”,S(0)=“123”,S(1)=“56”,S(2)=“ab“,5. 格式输出函数 例4.1 利用Format函数显示有关的日期和时间。Private Sub Form_Click( )FontSize = 12MyTime = #9:21:30 PM#MyDate = #7/21/1997#Print Tab(2); Format(MyDate, “m/d/yy“)Print Tab(2); Format(MyDate
43、, “mmmm-yy“)Print Tab(2); Format(MyTime, “h-m-s AM/PM“)Print Tab(2); Format(MyTime, “hh:mm:ss A/P“)Print Tab(2); Format(Date, “dddd,mmmm,dd,yyyy“) Print Tab(2); Format(Now, “yyyy年m月dd日 hh:mm“) Print FormatDateTime(Now) VB6.0新提供的函数 End Sub,6. Shell函数Shell函数负责执行一个可执行文件,返回一个Variant,如果成功,代表这个程序的进程ID,若不成
44、功,则会返回0。形式:Shell(命令字符串,窗口类型)窗口类型值为1表示正常窗口,缺省窗口最小化为图标。 i = Shell(“c:windowscalc.exe“) j = Shell(“c:“, 1),提示:如果不知道应用程序的路径名,可用Start命令启动程序i = Shell(start & “calc.exe“) ; i = Shell(start & “ vb6.exe “),4.6 常 见 错 误,1. 逻辑表达式书写错,在VB没有造成语法错而形成逻辑错 例如,数学表达式 3x10 VB表达式写为 3=x10。问题在于VB中的逻辑量与数值量可相互转换。 2. 同时给多个变量赋值
45、,在VB没有造成语法错而形成逻辑错例如:Dim x%,y%,z%x=y=z=1 3. 标准函数名写错 4. 变量名写错检查方法:在通用声明段加Option Explicit 5. 语句书写位置错在通用声明段只能有Dim语句,不能有赋值等其他语句,第五章 选择、分支与循环,5.1 顺序结构5.2 选择结构5.3 循环结构5.4 其他辅助控制语句5.5 常用算法(一)5.6 常见错误 (顺序、条件、循环),5.1 顺 序 结 构,一、赋值语句形式:LET变量名表达式作用: 将表达式的值赋值给变量名。 一般用于给变量赋值或对控件设定属性值。例: sRate!=0.1Text1.Text “欢迎使用V
46、isual Basic 6.0 “当表达式的类型与变量的类型不一致时,强制转换成左边的精度,如iA% = 10 / 3 iA中的结果为3注意:虽然赋值号与关系运算符等于号都用“=”表示,VB系统会根据所处的位置自动判断是何种意义的符号。,二、与用户交互函数和过程1. InputBox函数InputBox(提示,标题,缺省,x 坐标位置,y坐标位置)其中:提示: 提示信息;标题: 对话框标题;缺省:输入区缺省值函数返回字符类型。例要在屏幕上显示图示的对话框:,相应的语句如下: Dim strName As String * 40 strName= InputBox(“请输入你的姓名“ + vbC
47、rLf + “然后单击确定“ , “输入框“ ) 也可以使用如下语句: Dim strName As String * 40, strS1 As String * 40 strS1 = “请输入你的姓名“ + Chr(13) + Chr(10) + “然后单击确定“ strName= InputBox(strS1, “输入框“ , , 100,100) 当键盘输入“王晓明” 后,变量strName获得键盘输入的值。,2. MsgBox函数和MsgBox过程函数形式:变量% = MsgBox(提示,按钮,标题)过程形式:MsgBox 提示,按钮,标题按钮值如下: 函数返回所选按钮整数值:,例5.
48、1 编一帐号和密码检验程序。 要求: 帐号不超过6位数字,有错,清除原内容再输入。密码输入时在屏幕上以 “*”代替; 若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。 分析:帐号6位,MaxLength为6,LostFocus判断数字IsNumeric函数密码PassWordChar为“*”,MsgBox函数设置密码错对话框。,常 见 错 误,数据合法性检查中引起程序的死循环,Private Sub Text1_LostFocus()If Not IsNumeric(Text1) ThenText1 = “Text1.SetFocusEnd If End Sub,Private Sub Text2_LostFocus()If Not IsNumeric(Text2) ThenText2 = “Text1.SetFocusEnd If End Sub,If Text2 “ And Not IsNumeric(Text2),5.2 选 择 结 构1. IfThen语句(单分支结构)If Then语句块End If或 If Then ,例:已知两个数x和y,比较它们的大小,使得x大于y.If xy Thent=xx=yy=tEnd If或 If xy Then t=x: x=y: y=t,