For 循环
For indexvar= start to end [step step]
<语句块1>
Exti for
<语句块2>
Next[indexvar]
注意:当初值大于终值得时候,步长选取负值
Do…loop 循环
(1)Do{WHILE UNTIL}<条件>
<语句块1>
Exit do
<语句块2>
Loop
(2) Do
<语句块1>
[exit do]
<语句块2>
Loop{while until}<条件>
可能执行零次,不清楚能执行多少次,使用do loop
For each 循环
用于无序的集合
For each element in group
<语句块1>
[exit for]
<语句块2>
Next [element]
While 循环
While <条件>
<语句块1>
wEnd
注释:
20行以上的代码一定要注释
代码中包含参数,返回值
包含算法
if (num=1)then exit sub
If(a=1)then exit function
函数和过程(过程没有返回值,函数有返回值)
过程
事件过程
通用(自定义)过程:
Static 可循环使用的变量声明
属性过程(成对出现)
参数列表:ByVal:传值 ByRef:传址 optional:可选的
函数
系统函数
自定义函数
属性函数
过程的调用
CALL SubName(ArgList)
SubName ArgList
自定义函数
调用:返回值的取舍,括号的使用
常用系统函数
伪随机数:randomize[number]
Rnd[(number)]
固定序列的随机数:指定为负的随机数生成序列
字符串处理函数
RGB(red,green,blue)
0——255
QBColor(color)
0—15
颜色常数:vbred vbblue vbwhite vbblack
示例1.演示日期函数的使用
窗口的管理
SDI:单文档界面(记事本)
MDI:多文档界面(word)
窗体的方法
Me 当前的对象
控件的介绍
ActiveX组件
–ActiveX文档
–代码组件(OLE自动化)
–控件
控件的命名
字母开头
只有字母下划线,不能有标点空格
不能超过40个
txtMyInput.text=””
txtMyInput =”” (可以省略但尽量不要省略)
关于控件的几个问题
1.键盘处理与SendKeys方法
2.输入的有效性检验
一般准则:
Valiate事件和CauseValidate属性
4.图形的处理
AutoRedraw
ClipControl
5.控件的显示层数
菜单的代码
修改菜单的标题,复选,可视,有效
菜单的事件代码
显示弹出式菜单:[object].PopUpMenu
Menuname[,flags[,x[,y,
boldCommand]]]]
时钟示例
关键内容
Timer 控件的使用
全局对象
说明:(例)
类 对象示例
Form1 Form1,MyFrom
CommandButton Command,cmdOk
基本组成
属性,方法(事件)
常用对象
全局对象(VB)
–app(整个应用程序)
主要属性
–Path,exeName,hInstance(当前的应用程序实际句柄),PrevInstance
–Major,Minor,Revision
–ThreadID
应用示例
–
–Screen(屏幕)
主要属性
–Height,Width(单位:Twip)
–TwipsPerPixeIX,TwipsPerPixelY
–MousePointer(鼠标变幻成别的形状),MouseIcon
应用示例
–显示当前显示器的分辨率
–Err错误
主要属性
–Number(0-512)(513-65535),vbObjectError
–Description
–Source
主要方法
–Clear,Raise
错误处理
–On Error resume Next(直接进入下一个,跳过错误)
–On Error Goto [LineLabel|0]
–If(err.number>0)then…(提示上面的语句是否出现错误 )
–Resume[[0]|Next|Line]
–Clipboaerd剪切板
主要方法
–SetText data,textformat
–GetText(textformat)
–SetData data,picformat
–GetData(picformat)
–GetFormat(dataformat)
应用示例
–文本的复制和粘贴
–Forms集合
集合对象Collection
例:dim MyCol as new collection
Mycol.add item:”aaa”,key:=”MyItem01”
属性、方法
Count,Item,Add,Remove
遍历:
For each ItemVarname in objectname
Next Itemvarname
–Printer(s)打印机
–Debug使用调试
引用对象(工程–引用)
自定义类的实例对象
其他类的对象
With…End with 的使用
CallByName 的使用
用Windows API 和DLL编程
应用程序编程接口-API(Appliication Programming Interface)
位置:-Gdi32.dll,Kernel32.dll,User32.dll….
Vb中使用WindowsAPI
API声明
枚举函数与回调函数
用VBA开发Office应用程序
Office内置功能
宏
向导和帮助
模板
链接和嵌入对象
自定义窗体
使用VBA进行程序编码
多个应用程序间的数据交换
使用动态数据交换的方法(DDE)
VB程序作为接收端,其他程序作为发送端
例如:VB程序和office产品
两个VB程序,一个为接收端,另一个为发送端
使用office对象进行数据交换
使用office对象的方法
引用office对象
创建Aoolication对象
使用Application和其他子对象
关闭Application对象
VB程序的其他操作
使用Word/Excel
引用和创建对象
类及对象
类的引入
类和对象之间的关系
类的组成
-方法(函数、过程)/数据(属性)/事件
-成员的访问权限(public(公开)/private(私有的)/friend(工程内部可以访问,外部不可以))
对象的创建和使用
添加属性(1)
读属性过程
Public property get age () as long
写对象属性过程
Public property let age (ByVal num As Long)
写数值属性过程
Property let和property set区别
设置缺省属性(default)
Class Buider 的使用
目的:创建自定义的类或集合
方法:
–类:属性、方法、事件
–集合:Add Item Remove Count NewEnum
特别:
–自定义集合类时,必须实现枚举例子:NewEnum
Public Property Get NewEnum()As IUnknown
‘本属性允许使用For…Each语法枚举该集合
Set NewEnum = mCol.[NewEnum]
End Property
继承的实现
·继承与类的展开(flatten)
·实现
——Flatten方法
——对象作为成员
多态
·多态的作用和意义
相同的表达式不同的操作
·接口与实现的关系
·多态的实现
-定义接口类
-定义实现类
-给接口添加属性
ActiveX 组件
·COM(Component Object Model)
-二进制兼容
-跨平台的互操作性
-版本控制
·VB可创建的ActiveX组件
-ActiveX控件
-ActiveX文件
-代码部件(ActiveX DLL和ActiveX Exe)
COM组件服务与标准dll的比较
·标准dll的调用约定限制
·COM组件服务的可扩充性,可移植性
创建代码部件(一)
·设置工程属性-线性模型
-ActiveX DLL工程
·单线程
·公寓式线程
-ActiveX EXE工程
·每个新对象对应一个线程(Thread Per Object)
·采用线程冲池,最多n个:
n = 1 等价于单线程
n = 大的整数 等价于公寓式线程
创建代码部件(二)
·设置类属性
-MTSTransactionMode属性
-Persistable属性
-Instancing(实例化)属性
Private:只能本工程使用。类似标准Exe中的类模块
PublicNotCreatable:其他应用程序可使用,但不能用New、CreateObject等创建
MultiUse:其他应用程序可创建并使用
GlobalMultiUse:其他应用程序可直接使用,不用创建
SingleUse(只能在ActiveX Exe中):客户创建类中的每个对象实例,都导致创建整个部件的一个新实例。
GlobalSingleUse(只能在ActiveX Exe中):
创建代码部件(三)
·添加类属性
-属性变量或属性过程
·添加类方法
·使用类的事件(Initalize、Terminate等)
·给部件添加代码和窗体
-启动窗体设为Sub Main
-例:
If App.NonModalAllowed then
Form1.Show vbModeless
Else
Form1.Show vbModal
End if
创建代码部件(四)
·类型库ID(TypeID)、类ID(CLSID)和接口ID(IID)
·工程的编译
·每个类的注册表内容(部分)
·部件的兼容模式
-不兼容:GUID全部重新建立
-工程兼容:TypeID不变
-二进制兼容:GUID都不变
创建代码部件(五)
创建ActiveX控件(二)
·定制属性
-使用属性过程
Property get,property let,property Set
-定制自定义的新属性:
-引用内部控件的属性
-propertychanged方法,ReadProterties事件
WriteProperties事件
-设计/运行时的只读/写属性限制:
·使用UserControl.Ambient
·UserControl.Exstender
数据库基本概念
·关系数据库中数据的组织结构(Access)
-数据库(Database)
-表(Table)
-记录(record)
-字段(field):数据类型,长度,规则,可变
-索引(index)
·建立数据库(VisData)
SQL语句
·语法
-SELECT
FROM
-UPDATE
-DELETE
ADO对象模型
通过ADO与数据库相连
使用DAO模型
·使用控件编程
-内置控件+DbList+DbCombo+FlexGrid
·使用编码方式编程
-打开记录集
-添加记录
-编辑记录
-更新记录
-移动当前记录
ADO对象相关属性说明
·记录集的游标类型
-Forward Only
-Static
-KeySet
-Dynamic
·游标位置(CursorLocation)
-adUseClient
-adUseServer
·加锁类型(LockType)
-adLockReadonly
-adLockPessimistic(保守加锁)
-adLockOptimistic(乐观加锁)
-adLockOptimistic
利用ADO控件编程
·建立连接,关闭连接
-cn.open”Provider=Microsoft.Jet.OLEDB.4.0
DateSource=D:\VStudio\VB98\Nwind.mdb;Persist
Security Info=False”
Cn.close
Set cn = nothing
·创建记录集(结果集)
-cn.execute”selectfrom salary”
-re.open
-cmd.execute
利用ADO对象编程(二)
·移动游标
-rs.movefirst
-rs.movePrevious
-rs.movenext
-rs.movelast
·进行编辑(添加,修改,更新,删除,刷新)
-rs.addnew
-rs.update
-rs.delete
-rs.requery
ADO对象与ActiveX数据控件的绑定
·建立记录集(结果集)
-例:rs.open “selectfrom table1”
·绑定
-例:Crl.datafield=fdNameStr
Set clr.datasource=rs
数据库编程中的注意事项
·NULL值的处理
-使用IsNull函数
·不同平台上的SQL语法差异
·游标位置,记录集的游标类型,锁类型等设定
·随时允许刷新
·保证实时错误有处理