第一章 简介 1
1.1 设计前的考虑 1
1.2 人工操作与编程 2
1.3 Visual FoxPro的编程机制 3
1.4 有关语言概念 4
1.4.1 存储数据 5
1.4.2 处理数据 5
1.4.3 使用过程和用户自定义函数 8
1.4.4 流程控制 10
1.5 程序设计的基本步骤 13
1.5.1 对问题进行说明 14
1.5.2 分解问题 14
1.5.3 编制模块 14
1.5.4 测试模块 16
1.5.5 组装全部模块 17
1.5.6 整体测试 19
1.5.7 使程序更可靠 19
1.5.8 将程序转换成函数 20
1.6 帮助与示例文件 21
第二章 面向对象程序设计 22
2.1 Visual FoxPro中的对象 22
2.1.1 对象的属性 22
2.1.2 对象的事件和方法程序 23
2.2 Visuall FoxPro中的类 24
2.2.1 类、子类与继承性 24
2.2.2 Visual FoxPro的类分层结构 24
2.2.3 什么情况下创建类 26
2.2.4 Visual FoxPro的基类 26
2.2.5 扩展Visual FoxPro基类 27
2.2.6 创建新类 28
2.2.7 修改类定义 29
2.2.8 创建类定义的子类 29
2.3 “类设计器”的使用 29
2.3.1 在控件类或容器类中添加对象 30
2.3.2 将属性和方法程序添加到类 30
2.4 保护和隐藏类成员 31
2.4.1 指定属性的默认值 33
2.4.2 为类指定设计时的外观 33
2.4.3 使用类库文件 34
2.5 将类添加到表单中 34
2.6 调用父类的方法程序 35
2.7 在容器分层结构中引用对象 36
2.7.1 相对引用 36
2.7.2 设置属性 37
2.7.3 设置多个属性 37
2.7.4 调用方法程序 38
2.7.5 响应事件 38
2.8 以编程方式定义类和对象 38
2.8.1 保护和隐藏类成员 39
2.8.2 由类创建对象 39
2.8.3 在容器类中添加对象 40
2.8.4 使用方法程序代码添加类和创建类 40
2.8.5 指派方法程序代码和事件代码 40
2.8.6 按类层次调用事件代码 41
2.8.7 防止基类代码被执行 41
2.8.8 创建表定位按钮集合 42
2.8.9 定义表格控件 46
2.9 创建对象的引用 48
2.9.1 返回对象的引用 49
2.9.2 从内存中释放对象和引用 49
2.9.3 检查对象是否存在 49
2.10 创建成员数组 50
2.11 创建对象数组 50
2.12 使用对象存储数据 51
2.13 事件模型 53
2.13.1 Visual FoxPro中的事件 53
2.13.2 追踪事件序列 55
2.13.3 监视事件发生 56
2.13.4 为事件指定代码 59
第三章 新版本的主要改进 60
3.1 新的和改进的语言元素 60
3.2 性能、坚固性和实用性 67
3.2.1 Visual FoxPro性能的提高 67
3.2.2 Visual FoxPro坚固性的提高 68
3.2.3 Visual FoxPro实用性的提高 68
3.3 新增和改进了的向导及生成器 68
3.4 改进的应用程序框架 69
3.4.1 启动“应用程序生成器” 70
3.4.2 文件 70
3.4.3 创建框架 71
3.5 对2000年的支持 71
3.5.1 严格的日期格式 72
3.5.2 SET STRICTDATE 72
3.5.3 严格日期格式错误 73
3.5.4 ”选项”对话框 74
3.5.5 DATE()和DATETIME()函数 74
3.5.6 FDATE()函数 74
3.5.7 Century属性 74
3.6 Access和Assign方法程序 74
3.6.1 Access和Assign方法程序的优点 75
3.6.2 创建Access和Assign方法程序 75
3.6.3 表单和类设计器 76
3.6.4 THIS-ACCESS方法程序 77
3.7 对GIF和JPEG图形的支持 79
3.7.1 Visual FoxPro语言 79
3.7.2 Visual FoxPro控件和对象 80
3.7.3 Visual FoxPro界面 81
第四章 访问Visual FoxPro API 82
4.1 创建ActiveX控件或FLL库 82
4.1.1 创建一个基本的ActiveX对象 82
4.1.2 创建一个基本的FLL库 83
4.2 调用Visual FoxPro API 87
4.3 参数的传递与接收 88
4.4 向Visual FoxPro返回值 92
4.4.1 从ActiveX控件返回值 92
4.4.2 从一个FLL库中返回值 93
4.5 向Visual FoxPro API传参数 94
4.5.1 Visual FoxPro API数据类型 95
4.5.2 Visual FoxPro API数据结构 95
4.6 访问Visual FoxPro变量和字段 96
4.6.1 管理内存 97
4.6.2 使用句柄 97
4.6.3 理解堆栈 99
4.6.4 遵守句柄规则 99
4.7 FLL库和ActiveX控件的连编与调试 99
4.7.1 连编项目 99
4.7.2 调试一个ActiveX控件或FLL库 100
第五章 扩充Visual FoxPro的功能 102
5.1 关于外部库 102
5.2 使用ActiveX控件和对象 103
5.3 使用动态链接库 103
5.3.1 调用DLL函数 104
5.3.2 向DLL传递参数 104
5.4 使用Visual FoxPro库 105
第六章 升迁Visual FoxPro数据库 107
6.1 构造应用程序的本地原型 107
6.1.1 减少开发时间 107
6.1.2 降低开发费用的同时满足用户要求 107
6.1.3 有助于成功地完成任务 107
6.1.4 构造应用程序的本地原型 108
6.1.5 使用升迁向导 108
6.2 升迁到SQL Server上 108
6.2.1 准备SQL Server端 109
6.2.2 准备客户端 110
6.2.3 备份数据库 110
6.2.4 关闭表 111
6.2.5 启动升迁向导 111
6.2.6 升迁向导如何工作 111
6.2.7 完成SQL Server升迁过程 118
6.2.8 对SQL Server采取的步骤 118
6.2.9 Visual FoxPro对客户端采取的步骤 120
6.3 升迁到Oracle上 121
第七章 构造客户/服务器应用程序 122
7.1 设计客户/服务器应用程序 122
7.1.1 性能方面的考虑 122
7.1.2 确保数据完整性和开发准确性 128
7.2 实现方法:远程视图和SQLpass-through技术 129
7.3 使用SQL pass-through技术 130
7.3.1 使用SQL pass-through函数 130
7.3.2 向数据源传递SQL语句 132
7.3.3 建立参数化查询 132
7.3.4 使用SQL Server的输入/输出参数 133
7.3.5 建立与远程数据的外部连接 134
7.3.6 对SQL实施ODBC扩展 135
7.3.7 用SQL pass-througn管理连接 135
7.3.8 用SQL pass-through处理远程数据 141
7.3.9 设置远程数据的临时表属性 141
7.3.10 选择有效的SQL pass-through处理方式 146
7.3.11 处理多个结果集合 147
7.3.12 控制数据类型的转换 148
7.4 处理SQL pass-through错误 150
7.5 客户/服务器性能优化 150
7.5.1 优化连接的使用 151
7.5.2 加速数据检索 152
7.5.3 加速查询和视图的运行 154
7.5.4 加速表单的运行 155
7.5.5 提高更新和删除的性能 156
第八章 群体开发和企业级开发 159
8.1 什么是源代码管理 159
8.1.1 源代码管理工具的特性 159
8.1.2 源代码管理软件 160
8.1.3 集成源代码管理系统和VisualFoxPro项目 160
8.1.4 启用源代码管理系统 161
8.2 在源代码管理系统下管理VisualFoxPro项目 162
8.2.1 处理项目文件和项目列表文件 162
8.2.2 将项目置于源代码管理之下 163
8.2.3 向源代码管理项目添加文件 163
8.2.4 加入一个现有的源代码管理项目 164
8.2.5 更新项目列表 164
8.2.6 解除一个项目的源代码管理 165
8.2.7 从源代码管理项目中移去文件 165
8.2.8 在多个源代码管理项目之间共享文件 166
8.3 在源代码管理项目中管理文件 166
8.3.1 处理多文件组件 166
8.3.2 签出文件 167
8.3.3 签入文件 167
8.3.4 比较文件或项目 169
8.3.5 检查表单、报表和其他表文件的区别 169
8.3.6 显示文件和项目信息 170
8.4 群体开发和修改数据库 171
8.5 群体开发类库 171
8.6 企业级开发 172
8.6.1 使用Visual FoxPro作为应用程序的前台 173
8.6.2 扩展Visual FoxPro中可视化设计工具的功能 173
8.6.3 建立子类 173
8.6.4 使用ActiveX控件 174
8.6.5 集成其他程序的功能 174
8.6.6 使用向导 175
8.6.7 使用自动服务 175
8.6.8 扩展Visual FoxPro的数据存储能力 176
8.6.9 使用Visual FoxPro作为数据源 177
8.6.10 在其他应用程序中使用VisualFoxPro的数据 177
8.6.11 在其他应用程序中使用VisualFoxPro对象和命令 178
8.6.12 使用Visual FoxPro建立数据库 178
8.6.13 使用Visual FoxPro作为一个WWW搜索引擎 179
8.6.14 如何将Visual FoxPro作为Web网的搜索引擎 180
第九章 开发国际化应用程序 181
9.1 准备工作 181
9.1.1 准备国际化数据 181
9.1.2 如何编写代码 182
9.1.3 如何设计用户界面 182
9.1.4 测试应用程序 182
9.2 设计界面 182
9.2.1 创建应用程序信息 182
9.2.2 设计菜单和表单 183
9.2.3 使用图标和位图 183
9.3 输入国际化数据 184
9.3.1 输入国际化字符 184
9.3.2 追加和复制国际化数据 185
9.4 处理代码页 185
9.4.1 深入理解Visual FoxPro中的代码页 185
9.4.2 指定dbf文件的代码页 186
9.4.3 指定文本文件的代码页 188
9.4.4 确定项目文件的代码页 189
9.4.5 指定变量的代码页 189
9.4.6 禁止对字符型或备注型字段中的数据进行转换 189
9.5 Visual FoxPro所支持的代码页 190
9.6 在国际化应用程序中排序数据 191
9.6.1 深入了解排序次序 191
9.6.2 排序次序准则 191
9.6.3 指定排序次序 192
9.6.4 检查排序次序 192
9.6.5 认识排序次序的影响 193
9.6.6 使用索引 194
9.7 处理双字节字符集 194
9.7.1 使用DBCS字符命名对象 194
9.7.2 排序DBCS数据 194
9.8 创建或修改程序 195
9.8.1 测试国际化版本 195
9.8.2 使用字符串 195
9.8.3 处理日期、时间和货币的格式 196
9.8.4 使用预处理指令 197
9.9 在国际化应用程序中管理文件 197
第十章 添加OLE 199
10.1 设计OLE应用程序 199
10.1.1 链接或嵌入OLE对象 199
10.1.2 添加绑定型或非绑定型OLE对象 201
10.2 在应用程序中添加OLE对象 201
10.2.1 在表中添加OLE对象 201
10.2.2 在表中追加OLE对象 202
10.2.3 刷新Microsoft Graph 203
10.2.4 在表单中添加OLE对象 204
10.2.5 与OLE对象交互作用 205
10.3 使用ActiveX控件 206
10.3.1 向表单添加ActiveX控件 206
10.3.2 管理绑定型ActiveX控件 207
10.4 应用自动服务管理对象 207
10.4.1 管理外部对象的属性 207
10.4.2 设置时间期限 208
10.4.3 访问对象集合 209
10.4.4 使用对象数组 209
10.4.5 释放外部对象 210
10.5 派生对象的子类 210
10.6 从其他应用程序中控制Visual FoxPro 211
10.6.1 Visual FoxPro的Application对象模型 212
10.6.2 通过集合属性访问对象 212
10.7 创建Automation服务程序 213
10.7.1 创建服务程序 213
10.7.2 编译服务程序 214
10.7.3 注册一个Automation服务程序 216
10.7.4 使用Automation服务程序 217
10.7.5 从Automation服务程序引起错误或返回错误 217
10.8 使用远程自动服务 217
10.8.1 远程自动服务 218
10.8.2 系统安全策略选项 219
10.8.3 在远程自动服务中使用权限 219
10.8.4 远程自动服务疑难解答 220
第十一章 共享访问 221
11.1 控制对数据的访问 221
11.1.1 访问数据 221
11.1.2 锁定数据 222
11.1.3 解锁数据 225
11.1.4 使用数据工作期 225
11.1.5 缓冲访问数据 227
11.2 更新数据 231
11.2.1 使用缓冲进行数据更新 231
11.2.2 使用事务处理管理进行数据更新 232
11.2.3 使用视图管理进行数据更新 238
11.3 管理冲突 241
11.3.1 管理缓冲冲突 241
11.3.2 检测并解决冲突 243
11.3.3 使用备注字段检查冲突 244
11.3.4 管理冲突的规则 244
第十二章 互操作性和Internet应用 245
12.1 OLE拖放 245
12.1.1 拖放数据 245
12.1.2 拖动源 245
12.1.3 放落目标 246
12.1.4 移动数据 246
12.1.5 复制数据 246
12.1.6 放落目标和拖动源不支持OLE拖放 247
12.1.7 取消操作 247
12.2 对设计时刻的OLE拖放的支持 247
12.3 对运行时刻的OLE拖放的支持 248
12.3.1 早期版本Visual FoxPro中的拖放 249
12.3.2 DataObject对象 249
12.3.3 固有和人工OLE拖放模式 249
12.4 Active Document 250
12.4.1 创建Active Document 251
12.4.2 对表单对象的更改 253
12.4.3 Active Document中的菜单 253
12.4.4 运行Active Document 255
12.4.5 Active Document安全性 256
12.4.6 Internet Explorer注意事项 257
12.4.7 Active Document示例 257
12.5 Automation服务程序的改进 257
12.5.1 Visual FoxPro6.0 Automation服务程序的改进 258
12.5.2 Automation服务程序编程的注意事项 261
12.6 在Web页面上发布信息 261
12.6.1 Web发布 261
12.6.2 使用Active文档 266
12.7 在WWW上搜索信息 269
第十三章 创建帮助文件 272
13.1 HTML帮助 272
13.1.1 计划对联机帮助的访问 273
13.1.2 添加帮助上下文的相关性 273
13.1.3 实现“这是什么?”帮助 274
13.1.4 编程实现帮助特性 275
13.1.5 发布已编译的HTML帮助系统 275
13.2 用WinHelp4.0创建图形方式的帮助 276
13.2.1 选择帮助特性 276
13.2.2 计划对联机帮助的访问 276
13.2.3 帮助菜单 277
13.2.4 添加帮助的上下文相关性 277
13.2.5 实现“这是什么?”帮助 278
13.2.6 编程实现帮助特性 279
13.2.7 使用WinHelp函数 279
13.2.8 指定WinHelp参数 280
13.3 创建dbf样式帮助 282
13.3.1 设计dbf样式帮助 283
13.3.2 查看dbf样式帮助文件示例 283
13.3.3 使用dbf样式帮助 285
13.3.4 定制dbf样式帮助 286
第十四章 快速开发工具 288
14.1 组件管理库 288
14.1.1 使用“组件管理库”管理项目 288
14.1.2 定制“组件管理库” 291
14.1.3 “组件管理库”的对象成员 292
14.1.4 “组件管理库”的类库 295
14.1.5 “组件管理库”的表结构 296
14.2 代码范围分析器 297
14.2.1 代码范围分析器日志文件 297
14.2.2 检查应用程序的代码范围并进行分析 298
14.2.3 确保“代码范围分析器”的正确运行 300
14.2.4 代码范围分析器加载项 300
14.3 项目管理器挂接程序 303
14.3.1 Project对象的分层结构 303
14.3.2 Proiect对象的结构 307
14.3.3 语言的改进 307
14.3.4 项目事件 307
第十五章 程序编译与调试 312
15.1 构造应用程序框架 312
15.1.1 设置起始点 313
15.1.2 初始化环境 313
15.1.3 显示初始的用户界面 314
15.1.4 控制事件循环 315
15.1.5 恢复初始的开发环境 315
15.1.6 将程序组织为一个主文件 315
15.2 将文件加入到项目中 316
15.2.1 人工添加文件到某一项目 317
15.2.2 引用或排除可修改的文件 317
15.3 为一个项目创建应用程序 318
15.3.1 测试项目 318
15.3.2 从项目中绑定应用程序 319
15.4 测试程序 320
15.4.1 建立测试环境 321
15.4.2 设置验证信息 321
15.4.3 查看事件发生的序列 321
15.5 逐步发现错误 322
15.5.1 启动调试工作期 322
15.5.2 跟踪代码 323
15.5.3 挂起程序的执行 323
15.5.4 查看存储的值 327
15.5.5 显示输出结果 328
15.6 记录代码的覆盖范围 329
15.7 处理“运行时刻错误” 330
15.7.1 预防错误 330
15.7.2 处理过程的错误 331
15.7.3 处理类和对象中的错误 332
15.7.4 从错误处理代码中返回 334
第十六章 应用程序的优化 335
16.1 优化表和索引 335
16.1.1 使用索引 335
16.1.2 优化连接 335
16.1.3 使用项目管理器 336
16.1.4 优化表和索引的一般提示 336
16.2 加速数据访问 337
16.2.1 掌握Rushmore技术 337
16.2.2 在表中使用Rushmore 338
16.2.3 关闭Rushmore 339
16.2.4 优化Rushmore表达式 340
16.3 优化表单和控件 342
16.3.1 使用数据环境 343
16.3.2 在表单集里限制表单数目 343
16.3.3 在页框中动态加载页面控件 343
16.3.4 动态绑定控件与数据 343
16.3.5 延迟屏幕刷新 344
16.3.6 在经常使用的方法程序中减少代码 344
16.4 优化应用程序 344
16.4.1 提高性能的一般技巧 345
16.4.2 使用名称表达式代替宏替换 345
16.4.3 有效地引用对象属性 345
16.5 优化ActiveX控件 346
16.6 优化自动操作 347
16.7 在多用户环境中优化应用程序 347
16.7.1 调整锁定重试的间隔 348
16.7.2 有效地使用事务处理 348
16.8 优化对远程数据的访问 348
16.8.1 只检索需要的数据 349
16.8.2 有效地更新远程表 349
16.8.3 批处理方式发送语句 350
16.8.4 设置数据包大小 351
16.8.5 延迟对备注和二进制数据的检索 351
16.8.6 将待查阅数据保存在本地机上 351
16.8.7 创建本地规则 352
16.9 优化国际化应用程序 352
16.9.1 有效地使用排序序列 352
16.9.2 用多个排序序列发送SQL SELECT命令 352
第十七章 建立可发布的应用程序 354
17.1 发布过程 354
17.2 准备工作 354
17.2.1 选择连编类型 354
17.2.2 考虑硬件、内存和网络问题 355
17.2.3 确保正确运行 355
17.2.4 在应用程序中包含资源 356
17.2.5 删除受限制的Visual FoxPro功能和文件 358
17.3 定制要发布的应用程序 360
17.3.1 保护源代码并将其存档 360
17.3.2 调用错误处理例程和终止系统运行例程 361
17.3.3 给应用程序添加帮助信息 361
17.3.4 修改应用程序的外观 362
17.3.5 备份源代码 362
17.3.6 生成应用程序 363
17.4 准备制作发布磁盘 363
17.4.1 创建发布目录 363
17.4.2 创建发布磁盘 364
第十八章 创建发布磁盘 365
18.1 发布目录树和安装向导 365
18.1.1 发布目录树 365
18.1.2 安装向导 366
18.2 如何用安装向导创建发布磁盘 367
18.2.1 指定发布目录树 367
18.2.2 选择可选组件 367
18.2.3 指定磁盘映像 367
18.2.4 定制要发布的安装对话框 368
18.2.5 指定默认文件的安装目的地 368
18.2.6 查看文件总结报告 368
18.2.7 完成安装向导过程 368
附录A 常用Visual FoxPro的属性 369
附录B 常用系统内存变量 378
附录C 常见错误代码 380
附录D 常用术语 384