visual basic 程序设计
DESCRIPTION
北京大学远程教育课程. Visual Basic 程序设计. 主讲教师:唐大仕 [email protected] http://www.dstang.com. 参考书. Visual Basic 程序设计, 唐大仕, 北方交大、清华大学出版社, 2002. 教学进度安排 (45 学时 ). 1. 序论 2. 数据与运算 3. 语句与分支控制 4. 循环语句 5. 过程与函数(上) 6. 过程与函数(下) 7. 数组与常用算法. 教学进度安排 ( 续 ). 8. 常用控件 9. 绘图、窗体与菜单 10. 复杂界面 - PowerPoint PPT PresentationTRANSCRIPT
参考书 Visual Basic 程序设计, 唐大仕,
北方交大、清华大学出版社, 2002
教学进度安排 (45 学时 ) 1. 序论 2. 数据与运算 3. 语句与分支控制 4. 循环语句 5. 过程与函数(上) 6. 过程与函数(下) 7. 数组与常用算法
教学进度安排 ( 续 ) 8. 常用控件 9. 绘图、窗体与菜单 10. 复杂界面 11. 文件、程序调试 12. API 及多媒体编程 * 13. 数据库编程 * 14. 网络编程及其他 * 15. 复习
第 1 讲 序论
程序与语言的概念 为什么要学习程序设计
软件 = 程序 + 文档 程序 语言
汇编语言 asm 高级语言 c, pascal, fortran, 面向对象的语言 c++, java
Visual Basic 简介 一种程序设计环境 一种程序设计语言 具有广泛的用途
VB 快速入门单击右击双击
示例:按钮信息
编程提示: 要用西文标点 点启动按钮才会运行
设计与运行 界面设计
(插入对象,设其属性)(对象窗) 程序代码
(双击对象,填写代码)(代码窗) 运行
按 F5 (或点启动按钮)
保存 保存
窗体文件 .frm 工程文件 .vbp 其他辅助文件
编程提示: 文件应保应在自已的文件夹中,不要放在 VB98 下 每个程序放在单独的文件夹中 下次打开这个程序,只需双击 .vbp 文件即可
编译
编译 Make .Exe 文件 / 生成 xxxxx.exe 文件
编程提示: exe 是交给最终用户的,编程者不需要它
VB 程序设计环境 工程窗口 对象窗口 属性窗 工具箱 代码窗
VB 三种状态 编辑状态 (edit) 运行状态 (run) 中断状态 (break)
使用帮肋 按 F1 键 MSDN 教程 网络上的资源
www.vb-helper.com www.codeproject.com
VB 中的对象 属性 (property) 方法 (method) 事件 (event)
属性与方法的书写 对象 . 属性 对象 . 方法 示例: .move .ForeColor rgb 及 rnd
示例 print
事件 Sub objName_EventName(…)
事件驱动 示例 : event_drive.frm & “”
示例:事件改变属性
改变字体、大小、颜色
其中 等号( = )表示赋值
小结 Visual Basic 程序设计语言 Visual Basic 程序设计环境 Visual Basic 程序设计核心概念:
对象:属性、方法、事件 事件驱动
第 2 讲 数据与运算
本讲内容 进一步理解对象 数据类型 常量与变量 运算符
进一步理解对象
对象命名 对象名
对象名 (Name) 与文字 (Caption/Text) 不同 窗体名 . 控件名
匈牙利命名法 对象命名的惯例:匈牙利命令名法
前缀(表类型) + 单词(表意义)
btnSayHello btnOk cmdOk btn 按钮 lbl 标签 txt 文字框 pic 图片 frm 窗体 lst 列表框 tmr 定时器 scr 滚动 chk 复选框
特殊对象名 事先定义好的对象 Me, Screen, Printer , App, Debug
注: Me表示当前窗体 Me. 可省略
编程技巧: Ctrl+J 快速提示 F2 对象浏览
几种常用对象 按钮 CommandButton btn 标签 Label lbl 文本框 TextBox txt 图片框 PictureBox pic
常见的属性 Name ForeColor, BackColor FontSize FontN
ame Top Left Width Height Caption/ Picture/ Text / Value Visiable Enabled
默认属性 对象有一个默认属性 ( 属性值 )
如: Label 的 Caption, Text 的 Text 如: Text1.Text = "...." 可写为 Text1 = "...."
常见的方法 Move (适用于各种控件 ) Print (适用于窗体及图片框 ) Show / Hide (适用于窗体 )
常见的事件 有关Mouse, keyboard, 有关选择,文字改变
事件驱动编程 对象之间的相互作用 示例:两个文本框显示同样的文本
文本框的事件 跳动的小球
Shape形状对象 : Shape FillColor FillStyle
Timer 计时器对象 : Interval
数据与运算 数据:常量与变量 数据的类型
数据的含义不同 数据的运算不同 数据的存储方式不同
数据类型 类型 类型符 前缀 占字节数 字节型 Byte b 1 (0-255) 整型 Integer % i 2 (-32768~32767) 长整型 Long & l 4 单精度 Single ! s 4 双精度 Double # dbl 8
数据类型(续) 逻辑型 Boolean 2 True/False 日期型 Date 8 字符串型 String 后缀 $ 对象型 Object 变体型 Variant
变量 变量的含义 变量的名字
用字母、数字、下划线构成 不能用数字开头
变量的定义 隐式定义
不定义而直接赋值 a = 99*99
显式定义:使用 Dim Dim a As Integer Dim iCount% As Integer Dim studentName As String*8 注:还有 Private, Public, Static等词可以定义变量(以后会讲到)
Option Explicit 该语句表示变量必须显示定义 它必须放在程序中的第一句 使用它可以减少程序中的错误
字面常量 整数、实数 类似于数学中的写法
如 123 -45 123.45 2.3E-5 十六进制 &H0027D9 长整数 1234&
日期 #9:21:30 PM# #7/21/99#
逻辑 True False
字符 "Hello" "A" ""
符号常量 Const Pi As Double =3.14
较高要求( * ) 自定义类型
用于表示多个数据的组合 Private Type…End Type
枚举 用于表示有限个常量 Private Enum…End Enum
运算符
算术运算 + - * / \ mod(取余) ^(乘方 ) 字符串连接 & + 关系运算 > < = >= <= <> 逻辑运算 And Or Not
表达式 表达式举例:参 表达式 .txt
运算符的优先级与结合性 优先级(从高到低) :
算术运算 (其中 ^ */\ +- ) 关系运算 逻辑运算 (其中 NotAndOr )
结合性 从左向右
程序的基本过程: 输入处理输出 示例:圆的面积 InputBox, MsgBox 示例: a *b = c
示例 求解一元二次方程
小结 进一步理解对象 数据类型 常量与变量 运算符
第 3 讲 语句与分支控制
本讲内容 简单语句 输入及输出 If/ElseIf 语句 Select Case 语句
VB 语言 程序设计语言的两个重要方面:
数据 控制
简单语句 简单语句
一句一行 多句同行 ( 用: ) 一句跨多行 ( 用 _ )
注释 对程序的执行没有影响 用单引号开始 ,直到行尾 注释的用途:
对一段程序 对一些变量 对一些算法
赋值语句 = 示例 : a=a+1 示例 : 移动的小球 示例:交换两变量值
输入与输出 程序的基本过程 :
输入处理输出 输入输出的常见方法:
使用控件进行输入输出 使用 InputBox, MsgBox 使用 Print
Print 的使用 Print
换行 不换行(,或;)
相关函数 Space , Tab, Format
示例:圆的面积 方法 Print, cls , 与;
示例: a *b = c
If条件语句 两种写法:
同一行: If 条件 Then … Else …
多行: If 条件 Then … Else … End If
示例:小球 示例:闰年
条件语句嵌套 条件语句的嵌套
示例:性别,年龄的判断 示例 : 判断圆的半径
编程提示: 使用 Tab 键正确地缩进
ElseIf 示例:分数的判断 示例:所得税的计算
Select Case Select case 表达式 case 常量 。。。。 case 常量 。。。。 case else …. End Select 示例: 分数
示例: 自动出题及判分 加减乘除 If 及 Select 的使用 随机数的使用
Rnd 及 Randomize
IIF 函数 IIf(条件 , 式 1, 式 2 ) Choose( 数 a ,式 1 , 式 2 , … ) Switch(条件 1 ,表达式 1 ,条件 2 ,表达式 2 ,…… )
小结 简单语句 输入及输出 If/ElseIf 语句 Select Case 语句
第 4 讲 循环语句
本讲内容 控制结构与流程图 For Next 语句 Do Loop 语句 循环出口语句 循环的嵌套 循环的应用 ---- 数列求和
三种控制结构 为什么要有循环 程序的三种控制结构
顺序 分支(选择) 循环
程序流程图 流程线 开始与结束 任务及子任务 输入与输出 条件判断
For 语句 For v=1 To 100 Step 2
…Next
其中 Step 1 可以省略
使用 For 语句 示例
显示 1-100 画同心圆 1+2+…+100 1*1+2*2 +...+100*100 6^3+....+69^3
Do Loop Do While 条件 。。。 Loop
示例 :角谷猜想
Do 循环的几种写法 Do While 条件 ( 或 :Until条件 )
。。。 Loop
Do 。。。 (至少执行一次循环)
Loop While 条件 ( 或 :Until条件 )
While 条件 。。。
Wend
循环的五要素 初始化 循环条件 循环动作 循环改变 结束后处理
理解循环 1 变量 5 要素 3典型 几种循环的比较
循环出口语句 Exit For
示例 : 判断质数 Exit Do 其他几个相关的语句:
Exit Sub 退出此段 Sub子程序 End 结束整个程序 Stop 停止执行,进入中断状态
循环的嵌套 示例
九九乘法表 画图 1! +2! +…. +10! 2-100以内的角谷猜想
内外循环的关系 每重循环的控制变量 控制变量间的关系
循环的应用 数列求和 : ---递推法 1! + 2! +…. + 10! 2+22+222+… Exp_sum Pi/2 Pi/4
7
1
5
1
3
11
4
753
321
53
21
3
11
2
!3!2
132 xx
xex
程序的 3 种结构 顺序 选择(分支) 循环
编码约定 变量名
Option Explict 匈牙利命名法 :类型及含义
注释 使用‘ 针对一段程序或一条语句
缩进 编进 空格、空行
GoTo 语句 GoTo 标号或行号
标号:。。。。 On 表达式 GoTo 行号 ,……, 标号 , 尽量少用 GoTo 语句
小结 控制结构与流程图 For Next 语句 Do Loop 语句 循环出口语句 循环的嵌套 循环的应用 ---- 数列求和
第 5 讲 过程与函数(上)
本讲内容 过程 函数 参数传递 过程中的变量
过程 学习 VB 语言:
单词语句篇章
使用过程的好处 任务分解 代码重用
事件过程与普通过程 事件过程
与某个对象事件相关 过程名为: 对象名 _ 事件名 如: Sub Command1_Click() 如: Sub Form_Load()
普通过程 与事件无关 表示某项任务
过程的定义 Sub 过程名(参数 As 类型,。。。) 。。。 End Sub
过程的调用 使用 Call
Call 过程名 (参数值。。。) 注意,要用括号
或省略 Call 过程名 参数值,。。。 注意,不用括号
示例 :sub_print100 示例 :sub_delay
注 :second, do loop
函数 函数也是一种子程序
是一种带返回值的过程
内建函数 已由 VB定义好,可直接使用 如: CInt(), Int(), Rnd(), Now()
函数的定义 Function 函数名(参数,。。。) As 类型
。。。其中有一句 : 函数名 =某个值 End Function
函数的调用 一般用于表达式:
函数名 (参数值。。。) 用括号 如果忽略结果,也可以当过程来调用:
函数名 参数值,。。。 示例:
fac1_10_fun :求 1! +2! +……+10! prime_fun :求 100以内的质数
参数的传递 形参与实参 参数的传递
按位置传送 按名传送( * )
变量名 :=值
传值与传址 传值 ByVal 传址 ByRef (缺省为 ByRef )
示例 简单示例 fun_digi2Sum
特殊的参数 可选参数( * )
Optional 可变参数( * )
ParamArray xxxx()
模块 模块
工程 /添加模块 工程 / 属性 / 启动对象
模块中的变量 / 过程 模块名 . 过程名 Public 与 Private 过程 过程缺省是 Public 的
变量的作用域 作用域(可见性)
全程变量 Public 或 Global 窗体级变量 Private 或 Dim 局部变量 Dim
示例
变量的生存期 生存期
普通变量 有产生和消失 静态变量 (Static) 不消失
Static 函数或过程 其中所有变量为 static
示例
小结 过程 函数 参数传递 过程中的变量
第 6 讲 过程与函数(下)
---- 常用函数
本讲内容 I/O函数 数学函数 字符函数 日期时间函数 转换函数
再谈使用帮助 F1 使用 MSDN F2 浏览对象 Ctrl+G 立即窗口
其中使用 Print 或 ?来显示一个表达式
I/O函数 MsgBox
有关按钮图标 / 有关返回值 MsgBox "hello", vbInformation
InputBox 有关默认值 / 有关返回值 a = InputBox(" Please Input a num", , 99)
Beep 附: Enum枚举的定义
例: Enum_weekday
数学函数 Rnd
Int(Rnd * 9) + 1, Randomize Sqr, Abs Sin, Cos Log, Exp Int 示例:
rnd_luckynum Rnd_投针 Sqr_triangle_area
字符串函数 Len LTrim, RTrim, Trim UCase, LCase Left, Right, Mid InStr Asc, Chr, String 示例: str_encrypt, str_InStr_email
str_num2chinese
日期函数 Date, Time, Now Year, Month, Day, Weekday Hour, Minute, Second DateDiff, DateAdd
转换及判断 CInt, CLng, CDbl, CDate, CStr Str, Int, Val Hex, Oct Format
Format( Now(), "hh:mm:ss" ) Format( 3.14, "#,###.000" )
IsNumeric, IsDate
小结 I/O: MsgBox InputBox Beep 数学: Rnd Abs Int Sqr Sin Cos Log Exp 字符串: Len LTrim RTrim Trim UCase Mid Left Right InStr Chr Asc 日期: Date Time Now Year Month Day 转换判断 CInt Val Format IsDate IsNumeric
第 7 讲 数组及常用算法
本讲内容 数组 遍试 迭代 递归
数组 数组的概念
加上下标来决定是哪个变量 定义数组
Dim 数组名(数组大小) As 类型 使用数组
数组名 ( 下标) For Each……Next
数组的大小 下标 Dim a(100) 0--100 Dim a( 2 to 9 ) Option Base 0 或 1 二维数组 dim c(10,20) LBound () 最小下标 UBound ()最大下标
动态定义数组大小 Dim A( ) as Integer n= 计算出的一个数 ReDim A(n) As Integer ReDim Preserve age(i)
几个细节 数组元素可以为不同类型
Dim x(10) As Variant 数组的其他定义词
Dim , Public( 在模块中 ), Private, Static 数组作参数
Sub MySub ( x( ) As Integer) Call MySub( a() )
数组的应用 最大值与平均值 排序,插入 筛法求素数 约瑟夫问题 Fib 数列 , 其他数列 杨辉三角
Array等函数 (*) Array() 及 IsArray()
Dim ary As Variant ary = Array("apple", "banana", "…")
Split() 及 Join() ary = Split("This is a book", " ") j = Join(ary, "@")
集合 (*) Collection
Add Remove Count Item For Each……Next
算法 指令的有限序列 特点:
有穷性 确定性 可行性
遍试 逻辑上:针对所有可能的情况, 形式上: For 中用 If
示例: 1.韩信点兵 ,百鸡问题 ,鸡兔同笼问题
2.水仙花数 13+53+33=153 3. 完全数 28=1+2+4+7+14 4.百分币 5. 佩尔方程 5.验证猜想 :哥德巴赫猜想
迭代 逻辑上:多次使用同一算法 形式上: a = f( a )
示例: 1.求平方根 2. Mandelbrot集 ,Julia集 3. 倍边法求 Pi 4. 数字平方和
Xn Xn+1
)(/)( '1 nnnn xfxfxx
递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己
示例: 1.求阶乘 2.菲波那契数列 3. Celay树 , Koch 分形集
小结 数组 : 定义与下标 遍试: for 中用 if 迭代 : for 中 n=f(n) 递归 : f(n) 中用 f(n-1)
第 8 讲 常用控件
界面设计 界面设计的重要性 界面元素
控件 窗体 绘图 菜单 其他
有关控件的使用 怎样得到控件相关的属性、方法与事件 :
Ctrl_J 快速提示 F1 --MSDN (如果安装了MSDN) F2 --Object Browser
可以参考其他一些资源 光盘,如: <<编程资源大全 >> 书籍,如: <<VB6 参考手册 >> www.codeguru.com www.helpwork.net
控件的一般属性 Alignment 对齐方式
0 vbLeftJustify 1 vbRightJustify 2 vbCenter
Appearance 0 1:3D AutoSize True False BackColor ForeColor
RGB(r,g,b) vbRed vbGreen QBColor(Rnd * 15) 123235& &Hrrggbb&
控件的一般属性 ( 续 ) BorderStyle Caption Font
xxx.Font.Bold = true xxx.Font.Italic = True xxx.Font.Underline = True xxx.Font.Size = 24 xxx.Font.Name = "宋体 " 或 xxx.FontName = "宋体 "
Left Top Width Height
控件的一般属性 ( 续 ) MousePointer MouseIcon
(当MousePointer 为 99 时,设 MouseIcon)
Picture 设计时:选择文件 或 粘贴图片 运行时: xxx.Picture = LoadPicture(“ 文
件” )
控件的一般属性 ( 续 ) ToolTipText UseUnemonic
caption 中用 &,如 "xxxx&Xxxxx" Visiable: True False Enabled: True False WordWrap MultiLine
CommandButton 按钮 Caption Style, Picture, ToolTipText Enabled
Label 标签 ToolTipText, AutoSize, WordWrap, Alignment
0 vbLeftJustify 1 vbRightJustify 2 vbCenter
例 : Label_mouse_shell_263 注 :shell "程序名 参数 " 表示调用外部程序
TextBox 文本框 SetFocus 方法 ,
GotFocus, LostFocus 事件 SelStart, SelLength, SelText, Text MultiLine, ScrollBars PasswordChar "*" Locked,Enabled 示例 :text_sel_password_enter
Frame 框 Caption BorderStyle 框 : 容器 线 成组 Visible
CheckBox 及 OptionButton CheckBox 复选框
Value(1 或 0 或 2):vbChecked OptionButton 单选框
Value(Ture 或 False) 放到一个 Frame 经常做成控件数组
示例: Checkbox_option.frm
滚动条 HScrollBar, VScrollBar Max, Min, Value
Shape 及 Line Shape形状 / Line 线
Shape / x1,y1,x2,y2 BorderStyle, BorderColor BorderWidth FillStyle, FillColor, BackStyle, BackColor
Timer 定时器 Timer
Interval, Enabled
示例 : Timer_Shape_Line_Clock.frm
ListBox 及 ComboList ListBox 列表框 ComboList 组合框 '可以认为 ComboList=List + Text Style MultiSelect List(i), ListCount, ListIndex, Selected(i), SelCount AddItem, RemoveItem, Clear 方法 Combo 的 Text 示例: Combox_list.frm
PictureBox 及 Image PictureBox
可作容器,可以在上面画图 xxx.Picture = LoadPicture("XXX.jpg")
Image Picture
不能作容器 , 但可以 Stretch Image1.Picture = LoadPicture("XXX.bmp")
示例:跳舞的小女孩 dance_girl
小结 控件的一般属性 CommandButton, Label, TextBox Frame, CheckBox, OptionButton HScrollBar, VScrollBar ListBox, ComboBox PictureBox, Image
第 9 讲 绘图、窗体与菜单
本讲内容 绘图 窗体 多窗体 菜单
绘图 在哪里绘图:
窗体上 如: Me.Circle (1000,1000),300
PictureBox 上 如 : Picture1.Circle (1,1),1
单位及比例尺 比例尺 ScaleMode
=vbTwips 1/1440 inch =vbPixels 像素
Scale (-50,50)-(50,-50) ScaleLeft ScaleTop ScaleWidth ScaleHeight
Scale (-50,50)-(50,-50)
绘图状态 CurrentX=100, CurrentY=100 ForeColor BackColor DrawWidth DrawStyle FillColor FillStyle
DrawMode =vbCopyPen, =vbXorPen
Font FontSize, FontName, FontBold, FontItalic
绘图方法 Line (x,y)-(x,y), color, BF Circle (x,y), r, color Circle (x,y), r, color, start, end, aspect PSet (x,y), color Print "....." Cls 示例: draw_simple.frm
绘图示例 函数图 螺线 画极坐标图 旋转的椭圆 画金刚石
窗体 Form 窗体与对话框
添加窗体 加入系统定义的窗体或对话框
特殊的事件 Resize Paint 示例: Form_Resize_Paint.frm
特殊的属性 BackColor BorderStyle WindowStatus StartupPosition MousePointer 示例:简单屏保: form_screen_saver.frm
生成屏保: File/Make EXE 文件名为: xxxx.scr 然后将 xxxx.scr 文件复制到 c:\windows目录下
示例:屏保 ScreenSaver ( * )
多窗体 加入窗体:
Project/Add Form 已有的窗体及对话框
加入模块: Project/Add Module (模块中可以定义变量 public,定义 Sub,Fu
nction) 设定程序入口:
Project/Property/Startup Object
窗体的显示 当某个事件发生时(如点击某个菜单或图片 ) Form2.Show Me.Hide Load Form2 Unload Form3 frmAbout.Show vbModal, Me '模态
程序生成多窗体 (*) Dim f As New Form1 f.Show
示例: Form_As_New.frm
模块 用于定义变量、函数、过程
Public xxxx As String Public Sub xxxxx( xxx ) Public Function xxxx(xxx) As XXXX
Public Sub Main() 可作为程序入口
调用模块中的过程 可以用模块名如: Call Module1.mysub
怎样在窗体之间交流信息 直接使用控件:
Form2.Text1.Text = "hello" 使用模块中的变量
在模块中定义变量: Public age As Integer 在窗体 1 中对它赋值: age = Text1.Text 在窗体 2 中使用它: If age>18 Then
Menu 菜单 进入菜单编辑器: Tools/MenuEditor (或按 Ctrl+E) 有关菜单项:
菜单名( Name) 菜单文字 (Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号( - )表示分隔线 快捷键 ShorCutKey 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList
菜单的编程 与按钮相似 菜单上单击,对 XXX_Click 事件进行处理
上下文菜单 (*) 设计时:
使该菜单不可见 ( Visiable 为 False) 程序中,弹出:
在 MouseDown 事件中, If Button=vbRightButton Then PopupMenu menu5
示例 Form_menu_simple.frm
小结 绘图:状态与方法 窗体:事件与属性 多窗体:加入与交互 菜单:编辑与编程
第 10 讲 复杂的界面
本讲内容 多控件 外部控件 控件数组 MDI 菜单、通用对话框、工具栏、状态栏等
多控件的布局 多控件的选定与设置 对齐与大小 TabIndex ( Tab顺序) 控件的成组
示例:人员信息 _control.frm
外部控件 ActiveX Control (外部控件)
是已经编好的程序,可用于 VB 中 一般存在于 .ocx .dll 文件中
加入外部控件的步骤: 1. 工具箱上点右键,选 Component...( 组
件) 从中进行选择,如: Microsoft Windows Common Control 2.从工具箱上,选控件,加入到窗体中
使用外部控件 1. 属性 : F4, 属性窗 点右键 , 打开属性页 2. 方法 / 事件 3. 系统中必须有控件
例 : Microsoft Windows Common Contro 的ProgressBar( 参见书中示例)
控件数组 控件数组 :
同名的多个控件,称为控件数组 每个控件的 Index 不同
产生方法(以下方法均可): 1. 复制、粘贴 2.将多个控件的名字相同 3. 设 Index 4. 程序中 Load XXX(i)则生成一个新的
复杂示例:计算器 ( 不讲 )
处理控件数组的事件 在控件的事件中可以用 Index
示例:按钮数组 .frm 示例:六个滚动条: line_color_grad_scroll.frm 示例:排块游戏 .frm
(练习使用控件数组、过程、函数) 有趣示例:雪花飘飘 snowflake
更复杂的界面 (*) SDI: 单文档界面 MDI: 多文档界面
使用 MDI 及菜单 加入一个 MDIForm 加入一个 frmAbout 将MDIForm 设为启动对象
(Project/Property/StartObject) 在 MDIForm 中加入菜单
(Ctrl+E) 将 Form1 的 MDIChild置为 True
(F4 属性窗中设 ) 在 Form1 上加入菜单
(Ctrl+E)
使用 ActiveX控件 工具箱加入 ActiveX控件
(工具箱上点右键 ,选 Components) Microsoft Rich Text Box Control Microsoft Windows Common Contr
ol Microsoft Common Dialog Control
使用 RichText 及通用对话框 在 Form1 上加入 RichTextBox,命名为Rich1
在 Form1 上加入 CommonDialog
通用对话框 .showOpen .showSave .showFont .showColor .showPrint 示例: CommDialog 示例:参见WebBrowser
使用 ClipBoard GetText SetText
使用工具条 在 Form1 上加入 ToolBar
在其中加多个按钮: Buttons/InsertButton 在 Form1 上加入 ImageList
在其中加多个图片: ImageList/InsertPicture 为工具条设图片:
在 ToolBar1/ImageList 中选 ImageList1 然后设每一个 Button 的 Image
为工具条编程: 其中利用 Button.Index
使用状态栏 在 Form1 上加入 StatusBar 加入多个 Panel 设定 Panel 的类型 设定图片 对 StatusBar 进行编程
Statusbar1.Panel(3).Text = “…”
小结 多控件的布局 外部控件 控件数组 MDI 菜单、通用对话框、工具栏、状态栏等
第 11 讲 文件、程序调试
本讲内容 文件的分类及操作 文件及目录控件 程序的调试 从程序到软件
文件的概念 是信息的集合 存储于一定的介质上 按名存取
E:\vb_class\Draw\Form1.frm \\teacher\share\sub\file1.txt
文件的种类 顺序文件 (sequential file)
文本文件 , 不定长记录文件 随机文件 (random access file)
定长记录文件 二进制文件 (binary file)
所有其他文件
文件的操作 文件的打开
Open 文件名 [For 方式 ] [Access 存取类型 ] As[#]文件号
FreeFile() 得到可用的文件号 读写
Line Input, Get Print, Write, Put等 EOF() 判断是否到文件尾
关闭 Close 文件号
文件应用举例 文本文件
示例: FileCopy_AddLineNum 注 : On Error ....
定长记录的文件 (*) 示例: File_Random_Student
二进制文件 (*) 示例: File_Read_Bmp
文件及目录控件 DriveListBox,
Drive1.Drive DirListBox,
Dir1.Path FileListBox
File1.Path File1.FileName
示例: 图片浏览器 pic_browser
通用对话框 Microsoft Common Dialog Control .ShowOpen .ShowSave .ShowFont .ShowColor .ShowPrint
文件和目录管理 FileSystem 用于文件及目录的管理
FileCopy 复制文件 Kill 删除文件 MkDir 建立目录 RmDir 删除目录 GetAttr 文件及目录属性 FileLen 文件长度 FileDateTime 文件时间
Dir 查找文件 Dir(“*.txt”) 用于首次查找 在循环中, Dir() 用于其他各次查找
示例 DirFind File_Find_Recurse
程序中的错误 错误的种类
语法错 逻辑错 运行错
减少错误的一般方法: Tab缩进 ,空格 ,空行 ,注释 变量名 (匈牙利命名法) 显式定义变量 ,Dim,Option Explicit
调试 (debug) 断点 (breakpoint):
在行的左边单击 或 F9 跟踪 (trace)
F8, Shift_F8 执行到当前行 (Run to cursor ) 点右键 , Ctr_F8
观察 (watch) 光标指向一个变量 View/Watch Window,然后点右键 , Add Watch 使用立即窗口 (Immediate) ?表示 print
错误的捕获与处理 错误的捕获
On Error Resume Next On Error Goto XXXXXX
错误的捕获 XXXXX: Err.Number Err.Description
产生错误: Err.Raise
示例 :err_divby0 err_fordebug ary_prime_filter
从程序到软件 软件工程的基本概念 软件开发过程
计划 需求分析 系统设计 软件实现 确认 维护
小结 文件的分类及操作 文件及目录控件 程序的调试 软件工程的基本概念
第 12 讲 API 及多媒体编程
本讲内容 API 图像动画 音频 视频
API 的概念 API
Application Programming Interface 应用程序编程接口
Win32 API
使用 API 声明 API
Private Declare Function .…Lib … Alias …
若使用 Public ,则必须放入模块文件中 调用
a = 函数名 ( 参数 ) Call 过程名 ( 参数 ) 函数名 参数
使用 API Text Viewer 打开 API Text View (API浏览器 ) File/Open 打开 Win32API.txt 选 Declare 或 Constants 选 Private 或 public 最后 Copy到 VB 中
声明常数与类型 常数
Private Const 类型
Private Type 句柄作参数
句柄 Handle, 是一个数字 , 代表某个对象 如 Me.hwnd 代表窗体
API 应用举例 GetTickCount Topmost WinRoundRect 设定桌面墙纸
多媒体编程 多媒体的概念 多媒体编程的基本方式
使用 API 使用 MCI指令 使用 ActiveX控件
图像及动画 常用的图像文件
.bmp/.jpg/.gif, .png 动画
使用 Image 或 PictureBox来实现图像的切换 图像的进一步处理
使用 bitblt BitBlt Pd.hDC, x, y, w, h, Ps.hDC, x, y, COPY_PUT
使用 PaintPicture PaintPicture img.Picture, x,y,w,h, x,y,w,h
示例: Bitblt_PaintPicture
播放声音 常用的声音文件
.wav .mid .midi .mp3
使用Win32 API 使用 sndPlaySound 使用 Beep
使用声卡驱动程序中的 API 与具体的声卡相关
使用 MCI指令 MCI指令 API
Private Declare Function mciSendString Lib "MMSYSTEM" (ByVal lpstrCommand As String, ByVal lpstrReturnStr As Any, ByVal wRetumLen As Integer, ByVal hCallBack As Integer) As Long
播放 CD , AVI 示例: MCI_Play.frm 演示: Piano
MMControl 控件 使用 Microsoft Multimedia Control 播放 CD
MMControl1.DeviceType = "CDAudio" MMControl1.Command = "open"
播放 wav MMControl1.DeviceType = "WaveAudio" MMControl1.FileName = " ……." MMControl1.Command = "open"
Media Player 控件 常用的媒体文件
.avi .mpg
使用 Windows Media Player 控件 播放声音 (.mid, .wav, .mp3) 播放视频 (.avi, .mpg ) .FileName = “…” .Play 在 Media Player9以上版本,使用 .URL表示文件名
流式媒体 流式媒体
Real 格式: .rm,.ram Microsoft 格式: .asf
Real Player 控件
Flash 动画 使用 Flash Shockwave Flash Control .movie=“……” .play
使用 Agent 及 Speech Agent Speech
小结 API 的使用 API 应用举例 多媒体编程: API, MCI, Control 图像、动画 音频 视频
第 13 讲 数据库编程
本讲内容 数据库基本概念 使用 Data 控件 使用 ADO控件 使用 DAO 使用 ADO 基本的 SQL语句
数据库 数据库 (Database) 数据库管理系统 ( DBMS )
Oracle, Sybase, Infomix, DB2 MS SQL Server MS Access桌面数据库 (*.mdb)
数据库系统的优点: 数据的共享性、独立性、完整性和冗余数据少
管理功能 数据定义 /操纵 /完整 / 安全 /并发
关系型数据库 (RDB) 数据表 (Table) 、记录 (Record) 、字段 (Field) 字段类型
char int smallint bit float datetime image 主键 : primary key 示例:
书目表 : 编号 (ID), 书名 , 作者 , 出版社 , 关键字 读者表 : id, 姓名 , 性别 , 系别 , email 借阅表 : 人号 , 书号 , 日期 , 选课表 : 人 , 课 , 成绩
2501, A03, 80 2501, A04, 83 2502, A04, 87
关系型数据库(续) 其他对象
索引 (Index) 、查询 (Query) 、 过滤 (Filter) 、视图 (view)
用户及权限
数据库的使用 可视化的界面 通过 SQL语句
通过编程来操作数据库 编程的任务
通过用户界面获取参数,并形成 SQL语句 建立与数据库的连接 向数据库管理系统发出命令( SQL) 从数据库得到数据并显示到用户界面
Client/Server模式 (客户 /服务模式 )
数据库编程的基本技术 基于 DAO (Data Access Object)
早期的技术,主要用于MS Access 编程语言以 VB , VC 为主 使用方式:
通过 Data 控件 通过对象库
基于 ADO (ActiveX Data Object) 应用更广,用于各种数据库 编程语言包括 VB , VC , VBScript , ASP等 使用方式:
通过 DAO控件 通过对象库
使用 Data 控件 Data 控件 :
DatabaseName (选 xxxx.mdb,注意 Access97格式 )
RecordSource (选表名 , 或填 SQL语句 ) Text 或其他控件 :
DataSource (选 Data1) DataField (选字段名 )
Microsoft Data Bound Grid Control: DataSource (选 Data1)
使用 ADODC 控件 Microsoft ADO Data Control(ADODC) 控件 :
Source of Connection (选 xxxx.mdb,SqlServer)
RecordSource (选 CommandType,选表名 , 或填 SQL语句 )
Text 或其他控件 : DataSource (选 Adodc1) DataField (选字段名 )
Microsoft DataGrid Control: DataSource (选 Adodc1)
使用 DAO DAO (Data Access Object)
引用 DAO: Project( 工程 ) /Reference(引用 )...中 ,选Microsoft DAO 3.51 Object Library
DAO的基本对象 Database 数据库 RecordSet 记录集(相当于表) Fields(i) 记录中的字段
Data1.RecordSet 记录集
RecordSet 的基本操作 移动当前记录
.MoveFirst .MoveLast .MoveNext, .MovePrevious 编辑
.Edit .Fields(i)=.... .Update .AddNew .fields(i)=.... .Update .Delete
查找 .FindFirst .FindNext
使用 ADO ADO (ActiveX Data Object)
引用 ADO: Project( 工程 ) /Reference(引用 )...中 ,选Microsoft ActiveX Data Object 2.1 Library
ADO中的基本对象 Connection 连接 RecordSet 记录集 Fields(i) 字段 Command Parameter(了解即可 ,表示命令及参
数 )
ADO的基本操作 建立连接
conStr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\mydir\biblio.mdb;"
Dim conn As ADODB.Connection Set conn = New ADODB.Connection conn.Open conStr
ADO的基本操作 ( 续 ) 执行 SQL
Dim rs As ADODB.Recordset conn.CursorLocation = adUseClient
Set rs = conn.Execute("Select * FROM [Publishers]")
Set DataGrid1.DataSource = rs
ADO的基本操作 ( 续 ) 显示各个字段的名字
For i = 0 To rs.Fields.Count - 1 Print rs.Fields(i).Name, Next
在数据集中遍历数据 Do While Not rs.EOF For i = 0 To rs.Fields.Count - 1 Print rs.Fields(i).Value '或直接写为 rs(i) Next rs.MoveNext Loop
常用的连接方式 连接 Access97 文件
"Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\mydir\biblio.mdb;"
连接Microsoft SQL Server "Driver={Sql Server}; Server=192.168.0.12;Datab
ase=pubs;Uid=sa;Pwd=tree“ 连接ODBC 数据源 (较少使用 , 针对其他数据
库 ) "Dsn=biblio; Uid=sa;Pwd=tree"
SQL SQL( Structured Query Language ),
即结构化查询语言 SQL包含数据定义、数据查询、数据操纵和数据控制等多种功能
是数据库的标准操作语言
SQL语句 SELECT * FROM [publishers] SELECT age, sex, salary + bonus
FROM employee WHERE depart= ' 销售部 ' and title= ' 经理 '
[GROUP BY < 列名 > [HAVING<条件 >]] [ORDER BY < 列名 > [ASC , DESC]]
SELECT avg( salary ) FROM employee
SQL语句(续) 加入数据
INSERT INTO [employee] ( name, age ) VALUE ( ' 李明 ', 18)
更新数据 UPDATE [employee] SET salary = salary +500
删除数据 DELETE FROM [employee] WHERE age>80
创建及删除数据表 CREATE TABLE [employee] ( id integer, name char(10), age integer ) DROP TABLE [employee]
应用演示 图书馆系统 订单管理 收支管理 图表
小结 数据库基本概念 使用 Data 控件 使用 ADO控件 使用 DAO 使用 ADO 基本的 SQL语句
第 14 讲 网络编程及其他应用
本讲内容 网络编程 OLE 、 VBA 、 VBScript 开发 ActiveX控件 程序的打包发行
网络浏览及文件传输 网络浏览 Browser
加入 Microsoft Internet Control 使用WebBrowser1. Navigate "http://……“ “ 工程 /添加窗体 /Web浏览窗体”
文件传输 FTP 加入 Microsoft Internet Transfer Control b() = Inet1.OpenURL("ftp://…", icByteArray) Open "C:\aaa.htm" For Binary Access Write As #1 Put #1, , b() Close #1
Microsoft Winsock 控件 Winsock服务端
.LocalPort = 2000 .Listen .Accept
Winsock客户端 .RemoteHost = " 127.0.0.1 " .RemotePort = 2000 .Connect
数据传送 .GetData .SendData
OLE OLE :对象链接与嵌入 OLE容器控件
OLE1.CreateEmbed "c:\myfile.doc " OLE1.CreateLink "c:\myfile.doc"
OLE 自动化 Set xls = GetObject("c:\myfile.xls") xls.Sheets(1).cells(3, 3).Value = 1200 xls.Sheets(1).cells(3, 5).formula = "=r3c3+r3c4"
VBA VBA : Visual Basic For Application 在各种 Office 软件中使用 工具 /宏 /Visual Basic 编辑器 宏: Sub 示例:加行号的宏 宏病毒
VBScript VBScript
变量没有类型 在网页中使用 VBScript
<script language=vbscript>……</script> 在 ASP( 动态服务端网页 ) 中使用 VBScri
pt <% …………%> 示例:使用 ADO, 显示数据库内容
用 VB建立 ActiveX控件 VB 的其他应用程序 建立 ActiveX控件
属性 Public Property 读 Public Property Get 写 Public Property Let
方法 Public Sub 事件 Public Event
调用事件 RaiseEvent 测试 ActiveX控件
VB 应用程序的发行 使用“打包及发行向导”
小结 网络编程: Browser 、 FTP 、Winsock VB 与其他软件: OLE 、 VBA 、 VBScri
pt VB 开发其他程序:开发 ActiveX控件 程序的打包发行
第 15 讲 复习
本讲内容 复习串讲 重点、难点 有关事项
复习内容 第 1部分 VB基础 第 1-2章 第 2部分 VB 语言 第 3-6章 第 3部分 界面、文件等 第 7-11章 第 4部分 VB 应用 第 12-16章
第 1部分 VB基础
第 1-2章
程序设计的概念 程序设计语言
语言的分类 Visual Basic 在各种语言中的地位
程序设计的基本方面 从编写的内容看:界面与代码 从程序的本质看:数据与控制
程序设计与软件工程
VB 程序设计的基本步骤 界面设计 代码编写 运行 / 编译
VB 中的核心概念 对象
属性 (property) 方法 (method) 事件 (event)
事件驱动
第 2部分 VB 语言
第 3-6章
数据与运算 数据:常量与变量 数据的类型
数据的含义不同 数据的运算不同 数据的存储方式不同
常用的数据类型 Integer, Single, Double, Boolean, String,
Date, Variant
变量与常量 变量
隐式定义 显式定义
Dim, Public, Global, Private, Static 常量
字面常量 12, 12.3, "Hello", #2008-12-30#
符号常量 Const PI As Double = 3.14
运算符 算术运算符
+ - * / \ mod(取余) ^(乘方 )
字符串连接 & + 关系运算 > < = >= <= <> 逻辑运算 And Or Not 运算的优先级
控制结构 程序的三种控制结构
顺序 分支 循环
语句 简单语句 分支控制语句
If ElseIf Select Case
循环控制语句 For…Next Do While…Loop
语句的应用 分支的嵌套 循环的嵌套
For I=1 to 9 For J=1 To I Next
Next 循环的五要素 递推法数列求和
For n=1 To 10 f = f * n s = s + f
Next
过程 过程的定义
Sub 过程名(参数……) …… End Sub
过程的调用 Call 过程名 (参数值……) 用括号 过程名 参数值……
函数 函数的定义
Function 函数名(参数……) As 类型 其 中有一句 :函数名 =某个值 End Function
函数的调用 函数名 (参数值… .. ) 用括号 过程名 参数值……
过程中的几个概念 传值与传址 (ByVal, ByRef) 变量的作用域
全程 Public 局部 于窗体, Private( Dim ) 局部于过程内 Dim
变量的生存期 static
常用函数 I/O: MsgBox InputBox Beep 数学: Rnd Abs Int Sqr Sin Cos Log Exp 字符串: Len LTrim RTrim Trim UCase Mid Left Right InStr Chr Asc 日期: Date Time Now Year Month Day 转换判断 CInt Val Format IsDate IsNumeric
数组 定义数组 Dim 数组名(数组大小) As 类型 数组元素的个数 使用数组
常用算法 遍试:
逻辑上:针对所有可能的情况, 形式上: For 中用 IF
迭代 逻辑上:多次使用同一算法 形式上: a = f( a )
递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己 : F(n) 中调用 F(n-1)
第 3部分 界面、文件及其他
第 7-11章
控件 常用控件的属性、方法、事件 控件的典型应用 外部控件( ActiveX控件)的使用 控件数组
绘图 坐标系 绘图状态 绘图方法
窗体与菜单 窗体的属性、方法与事件 多窗体
窗体的显示 窗体间的信息交互
菜单
图片、动画 Picture/Image LoadPicture
文件 文件种类
顺序文件(文本文件) 随机存取文件(定长记录文件) 二进制文件
文本文件的打开与读写 Open, Close Line Input, Print
程序中的错误 程序中的错误
语法错 逻辑错 运行错
错误的捕获与处理 On Error 语句 Err 对象
程序的调试 断点 跟踪 观察
第 4部分 VB 的应用
第 12-16章
API API 的声明与调用
Declare 调用
多媒体编程 编程方式
API, MCI, ActiveXControl 图像、动画
Bitblt, PaintPicture 音频 /视频的播放
数据库编程 数据库基本概念 使用 Data 控件 使用 ADO控件 使用 DAO 使用 ADO 基本的 SQL语句
网络编程 高层网络编程
Browser 、 FTP 低层网络编程
Winsock
VB 与其他软件 OLE 、 VBA 、 VBScript 用 VB 开发其他程序
开发 ActiveX控件 属性、方法、事件
程序的打包发行
附: VB 使用外部程序的方法 VB 中使用外部程序的几种方法(还不止这些)
API ( 需要 Declare) ActiveX ( 需要加入部件 ) Object Library ( 需要添加引用 ) OLE ( 需要用 OLE 控件 ) Shell (直接执行外部程序 )
VB作为一个快速应用开发工具 善于作前端的应用 善于集成
重点 VB 语言
运算、各种语句、数组、过程与函数 VB 常用函数 VB 常用算法 VB 常用控件 文件的处理
注 :笔试中第 12-16章 (VB 应用 )内容很少
难点 循环
循环的五要素 循环的嵌套 数列求和
遍试算法 数组 过程与函数
变量的作用域 参数的传递
有关考试 考试内容 考试形式
选择、填空、编程、问答等题型 一般说来,每种题型占 20% -40% 要注意有关考试的具体通知
VB 应用程序演示 学生作业 游戏程序
计算器 /俄罗斯方块 /挖地雷 / 分形 多媒体程序
电子琴 数据库应用程序
图书馆系统 订单管理 收支管理 图表
进一步的学习 VB 网站 VB 参考书 VB 开发实践 相关的程序设计语言 相关的其他知识 全国计算机等级考试二级 VB ?
与老师联系 与唐大仕老师联系
[email protected] 与北大联系 与当地的辅导老师联系
Thanks
祝同学们学习愉快,学有所获,学有所成!