前言 1
第1部分 Visual Basic基础知识 1
第1章 介绍Visual Basic 1
译者序 1
1.1 编程基础 2
1.1.1 什么是程序 2
1.1.2 事件驱动编程 3
1.1.3 面向对象编程 4
1.1.4 程序的组成部分 4
1.1.6 Visual Basic5的新功能 5
1.1.5 几个定义 5
1.1.7 可在Visual Basic中创建的程序类型 6
1.2 探索Visual Basic界面 7
1.2.1 使用菜单栏 8
1.2.2 用工具栏访问功能 9
1.2.3 组织Visual Basic 10
1.2.4 程序的画布 12
1.2.8 定制环境 13
1.2.7 工作区域 13
1.2.6 Project窗口中的内容 13
1.2.5 控制窗体和控件 13
1.3 在需要时获取帮助 15
1.3.1 基本帮助系统 15
1.3.2 上下文相关的帮助 15
1.4 小结 16
第2章 用于COBOL程序员的VB 17
2.1 决定转向Visual Basic 17
2.2 探索Visual Basic背景 21
2.2.2 Visual Basic的图形特性 23
2.2.1 Visual Basic中的代码 23
2.3 万乐于学 24
2.4 学习Visual Basic 24
2.5 小结 25
第3章 使用窗体与控件 26
3.1 探索属性、方法、事件 26
3.1.1 通过属性控制行为 26
3.1.4 属性与方法的关系 30
3.1.3 处理动作 30
3.1.2 使用方法 30
3.1.5 窗体的组成部分 31
3.1.6 设置属性 31
3.1.7 显示窗体 34
3.1.8 处理事件 35
3.2 使用控件 36
3.2.1 控件是什么 36
3.2.2 给窗体添加控件 37
3.2.3 设置和获取属性值 37
3.3.1 处理文本 39
3.3 控件能做什么 39
3.3.2 做出选择 44
3.3.3 处理列表 45
3.3.4 动作 49
3.3.5 小结 50
第4章 理解事件模型 51
4.1 生活在事件驱动世界中 51
4.2 改变思考方式 52
4.3.1 事件类型 55
4.3 在程序中处理事件 55
4.3.2 编写事件过程 57
4.3.3 用单个过程处理多个控件 58
4.4.1 每个动作的多个事件 59
9.7 小结 59
4.4 理解事件的先后次序 59
4.4.2 确定事件的顺序 60
4.5 小结 60
第5章 用菜单和对话框增强程序 61
5.1 用菜单栏控制程序 61
5.1.1 创建菜单栏 62
5.1.2 菜单项的代码 67
5.1.3 可选的设置 68
5.2 创建弹出式菜单 69
5.2.1 创建要显示的菜单 69
5.2.2 激活弹出式菜单 70
5.2.3 通知用户 70
5.2.4 显示消息 71
5.2.5 由MagBox函数返回一个值 73
5.3 获取用户信息 75
5.4 使用内置对话框 76
5..3.1 建立输入对话框 76
5.3.2 确定用户的输入和动作 76
5.4.1 File对话框 77
5.4.2 Font对话框 79
5.4.3 Color对话框 80
5.4.4 Print对话框 80
5.5 小结 81
第6章 在Visual Basic中编程 82
6.1 处理变量 82
6.1.1 变量的类型 83
6.1.2 变量声明 83
6.1.3 使用Option Explicit语句 85
6.1.4 常量有何不同 87
6.2 编写简单的语句 88
6.2.1 使用赋值语句 88
6.2.2 使用算术运算符 88
6.2.3 处理字符串 92
6.3 在程序中进行判断 93
6.3.1 使用If语句 94
6.3.2 处理False条件 95
6.3.3 处理多个If语句 96
6.3.4 使用Select Case 97
6.4 处理循环 99
6.4.1 For循环 99
6.4.2 Do循环 101
6.5 使程序中无故障 103
6.5.1 如何避免语法错误 103
6.5.2 出现错误时Visual Basic如何处理 105
6.5.3 调试环境如何工作 106
6.5.4 如何确定变量值 106
6.5.5 运行命令 110
6.5.6 调用堆栈 110
6.5.7 暂停执行程序 110
6.5.8 跟踪代码 112
6.6 小结 113
第7章 从头到尾管理项目 114
7.1 处理过程和函数 114
7.1.2 创建过程和函数 115
7.1.1 为什么要使用过程 115
7.1.3 确定过程和函数的作用域 117
7.2 处理多个窗体 119
7.2.1 把新窗体增加到程序中 119
7.2.2 在项目上增加代码模块 119
7.2.3 访问项目的窗体和模块 120
7.3 管理项目中的组件 121
7.3.1 管理程序引用 121
7.3.2 控制控件 121
7.3.3 在项目上增加窗体、模块和类 121
7.3.4 删除模块或窗体 122
7.4 控制程序的启动 122
7.4.1 设置Startup窗体 122
7.5.1 确定要创建的程序类型 123
7.5.2 编译程序 123
7.4.2 使用Sub Main 123
7.5 创建可发行的程序 123
7.6 小结 124
第8章 类的概述 125
8.1 类的概述 125
8.1.1 理解面向对象编程的基本原理 126
8.1.2 在Visual Basic中用类来实现OOP 126
8.1.3 在程序中使用类 126
8.2 在Visual Basic中创建类 127
8.2.1 创建新的类模块 127
8.2.2 向类添加属性 128
8.2.4 向类中添加事件 131
8.2.3 让类采取行动的方法 131
8.2.5 从程序中访问类 132
8.3 程序中的类 134
8.3.1 一台较好的打印机 134
8.3.2 数据库访问 138
8.4 小结 141
9.1 理解数据库 143
第9章 关于数据库与Jet引擎的介绍 143
第2部分 创建数据库应用程序 143
9.1.1 平面文件数据库与关系数据库 144
9.1.2 可能了解的典型数据库 144
9.2 研究一个数据库管理系统是如何工作的 145
9.2.1 DBMS的优势 145
9.1.3 数据库术语的定义 145
9.2.2 DBMS的组成 147
9.3 理解Microsoft Jet引擎 147
9.3.1 Jet的历史 148
9.3.2 可以在数据库中存放什么 148
9.3.3 数据访问对象 149
9.3.4 数据控件介绍 149
9.4 关于数据库完整性的说明 149
9.4.1 在数据库中关系是如何起作用的 150
9.4.2 防止关系崩溃 153
9.4.3 不接受复制 155
9.4.4 数据是否完好 155
9.5 形成一个查询 157
9.5.1 数据操纵语言(DML) 157
9.5.2 数据定义语言*(DDL) 158
9.5.3 避免重复 158
9.6 做数据库备份 159
9.5.4 非Jet数据库中的查询 159
第10章 快速创建数据库应用程序 160
10.1 理解数据控件 160
10.1.1 什么是数据控件 161
10.1.2 向窗体中加入数据控件 161
10.1.3 用户仅需设置的两个属性 162
10.2.1 这些控件做什么 164
10.2 了解依附控件的基础 164
10.2.2 向用户窗体中加入控件 165
10.2.3 用两个简单的属性显示数据 165
10.3 创建一个简单的应用程序 166
10.3.1 建立窗体 166
10.3.2 浏览数据库 167
10.3.3 数据控件遗漏的重要功能 168
10.4.1 创建数据窗体Wizard 169
10.4 自动创建窗体 169
10.4.2 达到数据的源头 170
10.4.3 一些有用的域 171
10.4.4 这个按钮是做什么的 171
10.5 设计报表 173
10.5.1 启动Crystal Reports 173
10.5.2 选择数据域 175
10.5.3 预览报表 176
10.6 运行报表 177
10.5.4 存储报表 177
10.6.1 Crystal Reports控件 178
10.6.2 建立控件 178
10.6.3 采取行动 179
10.6.4 在运行时设置属性 180
10.7 小结 180
第11章 设计与建立数据库 181
11.1 设计一个数据库 181
11.1.3 组织数据 182
11.1.2 设计数据库的主要工作 182
11.1.1 设计目标 182
11.1.4 使用索引 187
11.1.5 使用查询 188
11.2 实现设计 189
11.2.1 创建数据库 190
11.2.2 创建表 192
11.2.3 创建索引 195
11.2.4 创建关系 197
11.2.5 创建查询 198
11.3 用其他工具创建数据库 199
11.3.1 使用Visual Data Manager 199
11.3.2 使用Microsoft Access 202
11.3.3 第三方数据库设计器 202
11.4 修改数据库结构 202
11.4.1 添加和删除表 203
11.4.2 添加、删除和编辑索引 203
11.4.3 添加、删除和编辑域 203
11.5 为什么用程序而不用Visual Data Manager 204
11.4.5 用SQL修改数据库 204
11.4.4 删除关系 204
11.6 小结 205
第12章 用依附控件处理更多工作 206
12.1 探入研究数据控件 206
12.1.1 数据控件的优点和局限性是什么 206
12.1.2 使用其他的数据 207
12.1.3 直接处理表和快照 209
12.1.4 BOF属性和EOF属性 210
12.1.5 其他可选的属性 210
12.2.1 在运行时改变属性 211
12.2 数据控件的编程 211
12.2.2 记录集和数据控件(Set命令) 212
12.2.3 数据控件事件的编程 213
12.2.4 数据控件方法 214
12.3 其他依附控件 215
12.3.1 列表框和组合框 215
12.3.2 数据依附列表框和组合框 216
12.3.3 数据依附网格 217
12.4.2 选项按钮 219
12.4.1 查找操作和寻找操作 219
12.3.4 Visual Basic的其他控件 219
12.4 进一步的增强 219
12.3.5 第三方控件 219
12.5 小结 221
第13章 用数据访问对象编写程序 222
13.1 打开一个已有的数据库 223
13.1.1 使用表 224
13.1.2 使用动态集 225
13.1.3 使用快照 227
13.1.4 228
13.2 把信息放在屏幕上 229
13.3 定位记录指针 230
13.3.1 使用Move方法 230
13.3.2 使用Find方法 232
13.3.3 使用Seek方法 235
13.3.4 使用Bookmark属性 237
13.4.1 设置Filter属性 239
12.3.5 使用PercentPosition属性和AbsolutePosition属性 239
13.4 使用Filter、Index和Sort 239
13.4.2 设置Sort属性 240
13.4.3 在表中设置当前索引 241
13.4.4 为新情况创建一个索引 241
13.5 需要更改多个记录的程序 242
13.5.1 使用循环 242
13.5.2 使用SQL语句 243
13.6.2 编辑记录 245
13.6.1 增加记录 245
13.6 了解其他的程序命令 245
13.6.3 更新记录 246
13.6.4 删除记录 246
13.6.5 把增加、编辑、删除功能组合到样本例中 247
13.6.6 介绍事务处理 247
13.7 小结 249
第14章 理解结构化查询语言 250
14.1 定义SQL 250
14.2 理解SQL语句的组成部分 251
14.2.1 使用SELECT语句 252
14.2.2 使用DELETE语句 268
14.2.3 使用INSERT语句 268
14.2.4 UPDATE语句 269
14.3 使用数据定义语言语句 270
14.3.1 用DDL语句定义表 270
14.4 使用SQL 271
14.4.1 执行动作查询 271
14.3.2 用DDL语句定义索引 271
14.4.2 创建QueryDef 272
14.4.3 创建动态集和快照 272
14.4.4 对数据控件使用SQL语句 273
14.5 创建SQL语句 273
14.5.1 使用Visual Data Manager 273
14.5.2 使用Microsoft Access 275
14.6 优化SQL的性能 275
14.6.1 使用索引 275
14.7 把SQL语句传递到其他数据库引擎 276
14.8 小结 276
14.6.3 使查询保持简单 276
14.6.2 编译查询 276
第15章 多用户编程 277
15.1 控制数据访问 277
15.1.1 互斥性地使用数据库 278
15.1.2 拒绝其他用户或程序访问表 278
15.1.3 使用只读表 279
15.2 理解记录锁定方案 280
15.2.1 页锁定与记录锁定 280
15.2.2 悲观锁定 280
15.2.3 乐观锁定 281
15.2.4 使用哪种锁定方法,何时使用 281
15.2.5 释放锁定 281
15.2.6 使用数据控件 281
15.3 研究Jet安全性功能 282
15.3.1 数据库许可 282
15.3.3 建立安全性系统 283
15.3.2 表许可 283
15.3.4 加密 284
15.3.5 应用程序口令 285
15.3.6 使用网络安全性 285
15.4 维护数据的当前性 285
15.4.1 只使用一个表 285
15.4.2 重复查询动态集 285
15.5 探查性能问题 285
15.5.4 使用事务处理来处理更新 286
15.6.1 使数据库可复制 286
15.6 利用数据库复制处理多用户 286
15.5.2 把数据库或表拷贝到本地驱动器 286
15.5.3 在可能的地方使用快照 286
15.5.1 使动态集较小 286
15.6.2 生成数据库的拷贝 287
15.6.3 回收并集中数据库 287
15.6.4 处理错误和冲突 287
15.7 小结 289
第16章 访问其他PC机数据库 290
16.1.1 与其他数据库一起使用数据访问对象 291
16.1 直接访问数据 291
16.1.2 和其他数据库一起使用数据库控件 294
16.2 从外部数据库引入数据 295
16.2.1 何时引入数据 296
16.2.2 使用程序来引入数据 296
16.2.3 使用Microsoft Access 297
16.3 附加外部表 298
16.3.1 使用数据访问对象附加表 298
16.3.2 使用Visual Data Manager附加表 299
16.3.3 使用Access附加表 300
16.3.4 使用附加表 300
16.4 小结 301
第17章 利用远程数据对象 302
17.1 介绍ODBC 302
17.1.1 理解ODBC驱动程序 303
17.1.2 建立ODBC数据源 303
17.2 使用远程数据对象 306
17.2.1 对比RDO和DAO 306
17.2.2 用RDO访问数据库 308
17.3 使用远程数据控件 309
17.3.1 比较RDC和Data控件 309
17.3.2 建立RDC 309
17.4 小结 310
第3部分 使用OLE 311
第18章 控制OLE对象 311
18.1 在运行时创建OLE对象 311
18.1.1 创建嵌入对象 312
18.1.2 使用类类型 312
18.1.3 创建链接对象 313
18.2 控制OLE对象的显示 314
18.2.1 SizeMode属性和Reaize事件是如何相互作用的 314
18.2.2 在可变大小的窗口(窗体)中显示对象 315
18.2.3 为大对象滚动控件 316
18.2.4 按比例缩放对象与控件相匹配 319
18.2.5 缩放对象使匹配最佳 320
18.3 在就地编辑时移动和改变嵌入对象的大小 322
18.4 捕获对象的图片 323
18.5 更新链接的数据 324
18.6 控制激活对象 325
18.6.2 在应用程序中打开对象 326
18.6.3 使对象成为非活动对象 326
18.6.1 激活对象进行编辑 326
18.7 存取OLE对象 327
18.7.1 将OLE对象保存到文件 327
18.7.2 从文件中读取OLE对象 328
18.8 从链接或嵌入对象中取得OLE Automation对象 328
18.9 小结 330
19.1 理解OLE和ActiveX术语 331
第19章 对OLE容器编程 331
19.2 为Windows 95设计应用程序 332
19.3 允许OLE拖放 332
19.3.1 处理释放事件 333
19.3.2 处理拖动事件 334
19.3.3 拖放文件 337
19.4 创建OLE存储系统 340
19.4.1 将多个对象保存在一个文件中 341
19.4.2 从单个文件中获取多个对象 347
19.5 注册应用程序 349
19.5.1 将一种文件类型同应用程序相关联 350
19.5.2 注册Program Manager图标 351
19.6 在启动时检查注册项目 352
19.7 处理OEL错误和超时 354
19.7.1 从OLE服务器处理可捕获错误 354
19.7.2 为错误投票 355
19.8 小结 356
20.1 选择项目类型 357
第20章 用类创建可重用对象 357
20.2 创建第一个类 358
20.3 从另一个项目中使用类 360
20.4 使用Class Builder 361
20.5 命名类、对象和项目 362
20.6 创建方法和属性 363
20.6.1 分配缺省的方法或属性 363
20.6.2 构造友元 365
20.6.3 创建读/写属性 365
20.6.4 创建只读或只写属性 366
20.6.5 创建对象属性 367
20.7 创建枚举型共有常量 369
20.8 创建包含集合的类 370
20.8.1 标准集合属性和方法 371
20.8.2 为分组动作创建新集合 371
20.8.3 用集合组织对象 372
20.9 向已存在的项目中加入ActiveX对象 373
20.9.2 使窗体事件过程成为共有的 374
20.9.3 从类模块调用窗体事件 374
20.9.1 改变项目类型 374
20.9.4 运行和使用新的Activex对象 375
20.9.5 精炼ActiveX对象 376
20.10 为对象、属性和方法编写文档 380
20.11 小结 381
第21章 创建远程自动服务器 382
21.1 安装DCOM95 382
21.2 编译远程应用程序 383
21.3 注册远程应用程序 384
21.5 调试远程应用程序的问题 385
21.4 使用远程应用程序 385
21.6 改进远程自动化的性能 387
21.6.1 优化多用途对象应用程序 387
21.6.2 理解多线程 388
21.6.3 优化单用途对象应用程序 391
21.7 小结 391
第22章 创建OCX控件 392
22.1 创建第一个控件 392
22.2 启动一个新的.OCX项目 393
22.2.1 画控件界面 394
22.2.2 编写代码改变控件尺寸 395
22.2.3 编写代码初始化控件 395
22.2.4 编写代码响应变化 396
22.2.5 加入共有属性、方法和事件 397
22.2.6 加入设计时的属性 398
22.2.7 在开发环境下运行控件 400
22.2.8 编译完成后的控件 401
22.3 从VB和VBA中使用定制控件 402
22.4 使用ActveX Control Interface Wizard 403
22.5 理解属性页 406
22.6 小结 408
第23章 调试ActiveX组件 409
23.1. 解决对象特有的问题 409
23.1.1 调试时查看对象实例 409
23.1.2 单用途与多用途对象 410
23.1.3 单用途应用程序和丢失引用 411
23.1.4 多用途对象和初始化 412
23.1.5 多用途对象和全局数据 414
23.1.7 注册数据库的问题 415
23.1.6 多用途对象和下级对象 415
23.2 调试对象的策略 416
23.2.1 在进程中调试(.EXE) 417
23.2.2 在进程中调试(DLL) 418
23.2.3 跨进程调试(.EXE) 418
23.2.4 在目标平台上测试 421
23.3 维持发行版本的兼容性 421
23.4 小结 422
24.1 给对象加入版本信息 423
24.1.1 创建新版本 423
第24章 建立和分配ActiveX组件 423
24.1.2 创建新版次 425
24.2 安装对象 425
24.2.1 创建注册文件 426
24.2.2 注册注册文件 428
24.3 注销对象 428
24.4 小结 429
第25章 Visual Basic, VBA和VBScript的比较 431
25.1 理解VB和VBA之间的不同 431
第4部分 Visual Basic与其他应用程序的集成 431
25.1.1 使用Visual Basic for Applieation 432
25.1.2 类型库和Object Browser 434
25.2 介绍最新的Visual Basic: VBScript 434
25.2.1 VBScript概述 435
25.2.2 在Web页面上使用VBSeript 438
25.2.3 快速了解Outlook中的VBSeript编程 441
25.3 知道何时使用何种Visual Basic 443
25.4 小结 443
26.1.1 用Excel的宏记录器编写OLE Automation代码 445
第26章 同Excel集成 445
26.1 Excel使用 OLE Automation 445
26.1.2 Excel中OLE Automation的技巧 447
26.2 在Excel中使用OLE容器控件 448
26.3 把VB应用程序用做Excel的DLL 463
26.4 小结 481
第27章 同Access和PowerPoint的集成 482
27.1 同Access集成 482
27.1.1 Jet数据库引擎 482
27.1.2 用Jet和DAO 483
27.1.3 通过OLE Automation与Access通信 504
27.2 同PowerPoint的集成 508
27.2.1 理解claPowerPoint对象 508
27.2.2 使用claPowerPoint对象 514
27.3 小结 517
第28章 Visual Basic同Mail、Sehedule和Exchange的集成 518
28.1 Microsoft Word自动化 518
28.2 对word使用OLE容器控件 521
28.3 Microsoft Outlook自动化 536
28.4 同OLE消息(MAPI)集成 545
28.4.1 创建通用的SendMail方法 545
28.4.2 处理附件 548
28.4.3 用MAPI类对象发送邮件 551
28.5 小结 553
第29章 同其他OLE应用程序的集成 555
29.1 同OLE Automation服务器连接 555
29.2 使用Microsoft的OLE MiniServers 560
29.3 在应用程序中使用其他Microsoft应用程序 564
29.4 使用其他不支持OLE或DDE的Microsft应用程序 567
29.5 小结 584
第30章 用Visual Basic创建Internet应用程序 585
30.1 创建第一个Itenet应用程序 585
30.2 为Intenet准备第一个应用程序 588
30.3 使用第一个Internet上的应用程序 591
30.4 安全吗 593
30.5 在用户文档之间移动 594
30.6 在用户文档之间传递数据 596
30.7.1 创建远程日志服务 598
30.7 把数据传递到服务器 598
30.7.2 调用远程日志服务 599
30.7.3 安装远程自动化服务器 600
30.8 小结 600
第31章 Visual Basic与Intenet Explorer和IIS的集成 602
31.1 创建浏览器应用程序 602
31.1.1 控制Internet Explorer 604
31.1.2 将浏览器实现为插个 607
31.1.3 使用浏览器插件 607
31.2.1 创建FIP浏览器 610
31.2 使用Internet控件 610
31.2.2 创建Chat应用程序 614
31.3 Internet访问数据库 617
31.4 创建运行于IIS上的应用程序 618
31.4.1 同ASP一起提供的对象 619
31.4.2 从ASP中使用VB创建的对象 621
31.5 小结 623
32.1.1 菜单和控件数组技术 625
32.1 使用控件数组 625
第32章 高级控件技术 625
第5部分 优化的和高级的编程技术 625
32.1.2 选项按钮技术 629
32.2 应用Windows公用控件技术 630
32.2.1 在状态栏中使用进程樯 630
32.2.2 TreeView和listView控件 631
32.3 编写Frankintrols 637
32.3.1 简要的窗口样式背景信息 638
32.3.2 向控件加入新样式 638
32.3.3 解释回调和函数指针 641
32.3.4 纯VB中的窗口挂钩 643
32.4 小结 650
第33章 高级窗体技术 651
33.1 保存窗口位置 651
33.2 简化MDI 654
33.2.1 MDI父窗体 655
33.2.2 MDI子窗体 658
33.3 创建多媒体窗体 660
33.3.1 多媒体窗体 661
33.3.2 在图片框中播放AVI 666
33.3.3 播放波文件 669
33.4 小结 671
第34章 高级代码技术 672
34.1 从简单内容开始 672
34.1.1 利用变体 672
34.1.2 ParamArray: 灵活之王 677
34.2 在Visual Basic中应用计算机科学技术 678
34.2.1 搜索和排序 678
34.2.2 探讨链表 687
34.2.3 在Visual Basic中操作位 694
34.3 小结 699
第35章 访问Windows API 700
35.1 调用基本API和DLL函数 700
35.1.1 调用GetVersionEx() 700
35.1.2 声明API函数 702
35.1.3 调用其他DLL中的函数 703
35.2 认真对待好材料 706
35.2.1 使用内存类 706
35.2.2 用API克服Visual Basic的限制 709
35.2.3 使用GDI API图形功能 723
35.2.4 重新使用注册 728
35.2.5 重新使用回调 734
35.3 小结 738
第36章 设计Windows应用程序 739
36.1 实施 以用户为中心 的软件开发过程 739
36.1.1 预生产阶段 740
36.1.2 生产阶段 740
36.1.3 生产后阶段 742
36.2.1 制作设计优秀的窗体 743
36.2 创建一致的有效的图形界面 743
36.2.2 提供选择 747
36.2.3 改善用户用程序的感觉 749
36.3 避免编程陷阱 749
36.3.1 编写可读性好的代码 749
36.3.2 使用Visual Basic常量 750
36.3.3 注释代码 750
36.3.4 使用描述性名字 751
36.4 小结 752