标题：Delphi开发人员指南
图书信息
题 名： Delphi开发人员指南 
题名拼音： Delphi kai fa ren yuan zhi nan 
I S B N： 7-111-08040-8 
责 任 者： (美)Steve Teixeira，(美)Xavier Pacheco著 
出 版 社： 机械工业出版社 
出版地点： 北京 
出版时间： 2000 
载体形态： 18,1263页 
从 编 项： Borland/Inprise核心技术丛书 
主 题 词： 软件工具 程序设计 
中图分类号： TP311.56 
附注说明： 北京宝兰—英博思信息技术有限公司推荐用书[1]
摘要信息
本书由快速开发的基础、高级技术、基于组件的开发、开发数据库、快速开发数据库应用程序五个部分组成，主要介绍了Delphi 5各方面的编程技巧。[1]
图书目录
译者序 
序 
前言 
第一部分 快速开发的基础 
第1章 Delphi 5下的Windows编程 
1.1 Delphi产品家族 
1.2 Delphi是什么 
1.2.1 可视化开发环境 
1.2.2 编译器的速度和已编译代码的效率 
1.2.3 编程语言的功能及其复杂性 
1.2.4 数据库结构的灵活性和可扩展性 
1.2.5 框架对设计和使用模式的扩充 
1.3 历史回顾 
1.3.1 Delphi 1 
1.3.2 Delphi 2 
1.3.3 Delphi 3 
1.3.4 Delphi 4 
1.3.5 Delphi 5 
1.3.6 未来 
1.4 Delphi 5的IDE 
1.4.1 主窗口 
1.4.2 窗体设计器 
1.4.3 Object Inspector 
1.4.4 代码编辑器 
1.4.5 代码浏览器 
1.4.6 源代码生成器 
1.5 创建一个简单的应用程序 
1.6 事件机制的优势在哪里 
1.7 加速原型化 
1.8 可扩展的组件和环境 
1.9 IDE最重要的十点功能 
1.10 总结 
第2章 Object Pascal语言 
2.1 注解 
2.2 新的过程和函数特征 
2.2.1 圆括号 
2.2.2 重载 
2.2.3 缺省值参数 
2.3 变量 
2.4 常量 
2.5 运算符 
2.5.1 赋值运算符 
2.5.2 比较运算符 
2.5.3 逻辑表达式 
2.5.4 算术运算符 
2.5.5 按位运算符 
2.5.6 加减运算过程 
2.6 Object Pascal类型 
2.6.1 类型的比较 
2.6.2 字符 
2.6.3 字符串 
2.6.4 变体类型 
2.6.5 Currency 
2.7 用户自定义类型 
2.7.1 数组 
2.7.2 动态数组 
2.7.3 记录 
2.7.4 集合 
2.7.5 对象 
2.7.6 指针 
2.7.7 类型别名 
2.8 强制类型转换和类型约定 
2.9 字符串资源 
2.10 测试条件 
2.10.1 if语句 
2.10.2 case语句 
2.11 循环 
2.11.1 for循环 
2.11.2 while循环 
2.11.3 repeat...until 
2.11.4 Break()过程 
2.11.5 Continue()过程 
2.12 过程和函数 
2.13 作用域 
2.14 单元 
2.14.1 uses子句 
2.14.2 循环单元引用 
2.15 包 
2.15.1 使用Delphi的包 
2.15.2 包的语法 
2.16 面向对象编程 
2.17 使用Delphi对象 
2.17.1 声明和实例化 
2.17.2 析构 
2.18 方法 
2.18.1 方法的类型 
2.18.2 属性 
2.18.3 可见性表示符 
2.18.4 友类 
2.18.5 对象的秘密 
2.18.6 TObject:所有对象的祖先 
2.18.7 接口 
2.19 结构化异常处理 
2.19.1 异常类 
2.19.2 执行的流程 
2.19.3 重新触发异常 
2.20 运行期类型信息 
2.21 总结 
第3章 Win32 API 
3.1 对象：以前和现在 
3.1.1 内核对象 
3.1.2 GDI和用户对象 
3.2 多任务和多线程 
3.3 Win32内存管理 
3.3.1 什么是线性内存模式 
3.3.2 Win32系统是怎样管理内存的 
3.4 Win32的错误处理 
3.5 总结 
第4章 应用程序框架和设计 
4.1 理解Delphi环境和项目的体系结构 
4.2 构成Delphi5项目的文件 
4.2.1 项目文件 
4.2.2 单元文件 
4.2.3 窗体文件 
4.2.4 资源文件 
4.2.5 项目选项及桌面设置文件 
4.2.6 备份文件 
4.2.7 包文件 
4.3 项目管理提示 
4.3.1 一个项目一个目录 
4.3.2 共享代码的单元 
4.3.3 多项目管理 
4.4 Delphi5项目的框架类 
4.4.1 TForm类 
4.4.2 TApplication类 
4.4.3 TApplication的方法 
4.4.4 TApplication的事件 
4.4.5 TScreen类 
4.5 定义公共体系结构：使用对象库 
4.5.1 考虑应用程序的体系结构 
4.5.2 Delphi固有的体系结构 
4.5.3 体系结构的例子 
4.5.4 子窗体TChildForm 
4.5.5 数据库基础模式窗体TDBModeForm 
4.5.6 数据库导航/状态窗体TDBNavstatForm 
4.5.7 使用框架进行应用程序结构设计 
4.6 一些项目管理的功能 
4.6.1 在项目中添加资源 
4.6.2 改变屏幕光标 
4.6.3 避免创建一个窗体的多个实例 
4.6.4 在DPR文件中增加代码 
4.6.5 覆盖应用程序的异常处理 
4.6.6 显示一个封面 
4.6.7 使窗体尺寸最小 
4.6.8 运行没有窗体的项目 
4.6.9 退出Windows 
4.6.10 防止关闭Windows 
4.7 总结 
第5章 理解Windows消息 
5.1 什么是消息 
5.2 消息的类型 
5.3 Windows消息系统是如何工作的 
5.4 Delphi的消息系统 
5.5 消息处理 
5.5.1 消息处理：不是无约定的 
5.5.2 对Result域赋值 
5.5.3 TApplication的OnMessage事件 
5.6 发送自己的消息 
5.6.1 Perform() 
5.6.2 sendMessage()和PostMessage() 
5.7 非标准的消息 
5.7.1 通知消息 
5.7.2 VCL内部的消息 
5.7.3 用户自定义的消息 
5.8 一个消息系统的剖析：VCL 
5.9 消息与事件之间的关系 
5.10 总结 
第6章 代码标准文档 
6.1 一般的源代码格式规则 
6.1.1 缩进 
6.1.2 边距 
6.1.3 begin...end 
6.2 Object Pascal 
6.2.1 括号 
6.2.2 保留字和关键字 
6.2.3 过程和函数 
6.2.4 变量 
6.2.5 类型 
6.2.6 构造类型 
6.2.7 语句 
6.2.8 结构化异常处理 
6.2.9 类 
6.3 文件 
6.3.1 项目文件 
6.3.2 窗体文件 
6.3.3 数据模块文件 
6.3.4 远程数据模块文件 
6.3.5 单元文件 
6.3.6 文件头 
6.4 窗体与数据模块 
6.4.1 窗体 
6.4.2 数据模块 
6.5 包 
6.5.1 运行期包与设计期包 
6.5.2 文件命名标准 
6.6 组件 
6.6.1 自定义组件 
6.6.2 组件实例的命名规则 
6.7 代码标准文档升级 
第7章 使用ActiveX控件 
7.1 什么是ActiveX控件 
7.2 何时使用ActiveX控件 
7.3 把ActiveX控件加到组件面板上 
7.4 Delphi组件外套 
7.4.1 外套文件是从哪来的 
7.4.2 枚举 
7.4.3 控件接口 
7.4.4 TOleControl的派生类 
7.4.5 方法 
7.4.6 属性 
7.5 在应用程序中使用ActiveX控件 
7.6 发布带有ActiveX控件的应用程序 
7.7 注册ActiveX控件 
7.8 BlackJack：一个OCX示范程序 
7.8.1 纸牌 
7.8.2 游戏 
7.8.3 调用ActiveX控件的方法 
7.9 总结 
第二部分 高级技术 
第8章 使用GDI和字体的图像编程 
8.1 Tlmage:Delphi的图像显示 
8.2 存储图像 
8.3 使用TCanvas的属性 
8.3.1 画笔 
8.3.2 使用TCanvas.Pixels属性 
8.3.3 使用刷子 
8.3.4 使用字体 
8.3.5 使用CopyMode属性 
8.3.6 其他属性 
8.4 使用TCanvas的方法 
8.4.1 用TCanvas画线 
8.4.2 用TCanvas画几何形状 
8.4.3 画图的示范程序 
8.4.4 用TCanvas输出文字 
8.5 坐标系统和映射模式 
8.5.1 设备坐标系 
8.5.2 逻辑坐标系 
8.5.3 屏幕坐标系 
8.5.4 窗体坐标系 
8.5.5 坐标映射 
8.5.6 设置映射模式 
8.5.7 设置窗口/视区范围 
8.5.8 关于映射模式的示范程序 
8.6 创建一个绘画程序 
8.7 编写动画程序 
8.8 高级字体 
8.8.1 Win32字体类型 
8.8.2 基本字体元素 
8.8.3 GDI字体分类 
8.8.4 显示不同字体 
8.9 实际创建一种字体 
8.9.1 这个程序是如何工作的 
8.9.2 显示字体的有关信息 
8.10 总结 
第9章 动态链接库 
9.1 究竟什么是DLL 
9.2 静态链接与动态链接 
9.3 为什么要使用DLL 
9.3.1 共享代码、资源和数据 
9.3.2 隐藏实现的细节 
9.3.3 自定义控件 
9.4 创建和使用DLL 
9.4.1 数美分：一个简单的DLL 
9.4.2 显示DLL中的模式窗体 
9.5 显示DLL中的无模式窗体 
9.6 在Delphi应用程序中使用DLL 
9.7 DLL的入口函数和出口函数 
9.7.1 进程/线程初始化和终止例程 
9.7.2 DLL入口/出口示例 
9.8 DLL中的异常 
9.8.1 在16位Delphi中捕捉异常 
9.8.2 异常和Safecall指示符 
9.9 回调函数 
9.9.1 使用回调函数 
9.9.2 拥有者绘制的列表框 
9.10 从DLL中调用回调函数 
9.11 在不同的进程间共享DLL数据 
9.11.1 一个可以被共享数据的DLL 
9.11.2 访问DLL中的共享数据 
9.12 引出DLL中的对象 
9.13 总结 
第10章 Delphi 5的打印 
10.1 TPrinter对象 
10.2 TPrinter.Canvas 
10.3 简单打印 
10.3.1 打印TMemo组件中的内容 
10.3.2 打印位图 
10.3.3 打印RTF格式的文本 
10.4 打印窗体 
10.5 高级打印 
10.5.1 打印分栏报表 
10.5.2 放弃打印进程 
10.5.3 打印信封 
10.5.4 抽象打印 
10.5.5 一个简单的打印预览程序 
10.6 其他打印任务 
10.6.1 TDeviceMode结构 
10.6.2 设置打印份数 
10.6.3 设置打印方向 
10.6.4 设置纸张尺寸 
10.6.5 设置纸张的长度 
10.6.6 设置页的宽度 
10.6.7 设置打印比例 
10.6.8 设置打印颜色 
10.6.9 设置打印质量 
10.6.10 设置双面打印 
10.6.11 指定默认打印机 
10.7 获取打印机信息 
10.7.1 GetDeviceCaps()和DeviceCapabilities() 
10.7.2 获取打印机信息的示范程序 
10.8 总结 
第11章 编写多线程应用程序 
11.1 对线程的解释 
11.1.1 一种新型的多任务 
11.1.2 在Delphi程序中使用多线程 
11.1.3 关于线程的滥用 
11.2 TThread对象 
11.2.1 TThread基础 
11.2.2 TThread实例 
11.2.3 线程的终止 
11.2.4 与VCL同步 
11.2.5 一个演示程序 
11.2.6 优先级和时序安排 
11.2.7 挂起和唤醒线程 
11.2.8 测试线程的时间 
11.3 管理多线程 
11.3.1 线程局部存储 
11.3.2 线程同步 
11.4 一个多线程的示范程序 
11.4.1 用户界面 
11.4.2 搜索线程 
11.4.3 调整优先级 
11.5 多线程与数据库 
11.6 多线程与图形处理 
11.7 总结 
第12章 文件处理 
12.1 处理文件的输入/输出 
12.1.1 文本文件的处理 
12.1.2 类型文件的处理 
12.1.3 无类型文件的处理 
12.2 TTextRec和TFileRec结构 
12.3 内存映射文件 
12.3.1 内存映射文件的应用 
12.3.2 使用映射文件 
12.3.3 内存映射文件的一致性 
12.3.4 文本搜索实用程序 
12.4 目录和驱动器 
12.4.1 获得有效驱动器和驱动器类型列表 
12.4.2 获取驱动器信息 
12.4.3 获取Windows目录位置 
12.4.4 获取系统目录的位置 
12.4.5 获取当前目录 
12.4.6 在目录中查找文件 
12.4.7 复制和删除目录树 
12.4.8 获取文件的版本信息 
12.4.9 获取版本号 
12.4.10 获得操作系统信息 
12.4.11 使用TVerInfoRes类 
12.5 使用SHFileOperation()函数 
12.6 总结 
第13章 核心技术 
13.1 高级消息处理 
13.1.1 子类化 
13.1.2 HookMainWindow() 
13.2 防止同时出现多个应用程序实例 
13.3 使用Delphi的BASM 
13.3.1 BASM是如何工作的 
13.3.2 简易的参数访问 
13.3.3 var声明的参数 
13.3.4 Register调用约定 
13.3.5 全汇编过程 
13.3.6 记录 
13.4 使用挂钩 
13.4.1 设置挂钩 
13.4.2 使用挂钩函数 
13.4.3 使用脱钩函数 
13.4.4 使用SendKeys:一个JournalPlayback类型的挂钩 
13.5 使用C/C++的OBJ文件 
13.5.1 调用一个函数 
13.5.2 命名问题 
13.5.3 共享数据 
13.5.4 使用Delphi RTL 
13.6 使用C++类 
13.7 替换 
13.7.1 generic替换 
13.7.2 WM_COPYDATA 
13.8 获取包的信息 
13.9 总结 
第14章 获取系统信息 
14.1 InfoForm:获取一般信息 
14.1.1 格式化字符串 
14.1.2 获取内存状态 
14.1.3 获取操作系统版本信息 
14.1.4 获取目录信息 
14.1.5 获取系统信息 
14.1.6 检查环境 
14.2 平台无关性 
14.3 Windows95/98:使用ToolHelp32 
14.3.1 快照 
14.3.2 列举进程 
14.3.3 列举线程 
14.3.4 列举模块 
14.3.5 列举堆 
14.3.6 堆的视图 
14.3.7 程序源码 
14.4 Windows NT/2000:PSAPI 
14.5 总结 
第15章 称植到Delphi 5 
15.1 Delphi 5的新功能 
15.1.1 哪个版本 
15.1.2 单元、组件和包 
15.2 从Delphi 4移植到Delphi 5 
15.2.1 IDE问题 
15.2.2 RTL问题 
15.2.3 VCL问题 
15.2.4 Internet开发问题 
15.2.5 数据库问题 
15.3 从Delphi 3移植到Delphi 5 
15.3.1 无符号的32位整数 
15.3.2 64位整数 
15.3.3 Real类型 
15.4 从Delphi 2移植到Delphi 5 
15.4.1 改变为Boolean类型 
15.4.2 ResourceString 
15.4.3 RTL的改变 
15.4.4 TCustomForm 
15.4.5 GetChildren() 
15.4.6 自动化服务器 
15.5 从Delphi 1移植到Delphi 5 
15.5.1 字符串和字符 
15.5.2 变量长度和范围 
15.5.3 记录的排列 
15.5.4 32位的数学运算 
15.5.5 TDateTime类 
15.5.6 单元结束代码 
15.5.7 汇编语言 
15.5.8 调用约定 
15.5.9 动态链接库 
15.5.10 Windows操作系统的变化 
15.5.11 32位的地址空间 
15.5.12 32位资源 
15.5.13 VBX控件 
15.5.14 Windows API函数的变化 
15.5.15 16位和32位并存 
15.6 总结 
第16章 MDI应用程序 
16.1 创建MDI应用程序 
16.1.1 理解MDI基础 
16.1.2 子窗体 
16.1.3 主窗体 
16.2 菜单 
16.2.1 用MDI程序合并菜单 
16.2.2 在菜单中列出打开的文档 
16.3 杂类MDI技术 
16.3.1 在MDI客户区输出一幅位图 
16.3.2 创建一个隐藏的子窗体 
16.3.3 最小化、最大化、还原所有MDI子窗体 
16.4 总结 
第17章 用剪贴板共享信息 
17.1 剪贴板基础 
17.1.1 剪贴板对文本操作 
17.1.2 剪贴板对位图操作 
17.2 创建你自己的剪贴板格式 
17.2.1 创建一个感知剪贴板的对象 
17.2.2 使用自定义的剪贴板格式 
17.3 总结 
第18章 多媒体编程 
18.1 创建一个简单的媒体播放器 
18.2 播放WAV文件 
18.3 播放视频 
18.3.1 显示第一帧 
18.3.2 使用Display属性 
18.3.3 使用DisplayRect属性 
18.3.4 理解TMediaPlayer事件 
18.3.5 DDGMPlay的源代码 
18.4 设备支持 
18.5 创建音频CD播放器 
18.5.1 显示闪屏 
18.5.2 开始编写CD播放器 
18.5.3 更新CD播放器的信息 
18.5.4 刷新CD播放器的方法 
18.5.5 CD播放器的源代码 
18.6 总结 
第19章 测试与调试 
19.1 常见的编程错误 
19.1.1 在类的实例创建之前使用了它 
19.1.2 确保类的实例被释放 
19.1.3 掌握指针 
19.1.4 使用未初始化的PChar类变量 
19.1.5 释放空指针 
19.2 使用内部集成调试器 
19.2.1 使用命令行参数 
19.2.2 断点 
19.2.3 逐行执行代码 
19.2.4 使用Watch窗口 
19.2.5 Debug Inspector 
19.2.6 计算和修改 
19.2.7 访问调用栈 
19.2.8 查看线程 
19.2.9 事件日志 
19.2.10 模块视图 
19.2.11 调试DLL 
19.2.12 CPU视图 
19.3 总结 
第三部分 基于组件的开发 
第20章 VCL元素和运行期类型信息 
20.1 什么是组件 
20.2 组件的类型 
20.2.1 标准控件 
20.2.2 自定义控件 
20.2.3 图形控件 
20.2.4 非可视组件 
20.3 组件的结构 
20.3.1 属性 
20.3.2 属性的类型 
20.3.3 方法 
20.3.4 事件 
20.3.5 流属性 
20.3.6 拥有关系 
20.3.7 父子关系 
20.4 可视组件的层次关系 
20.4.1 TPersistent类 
20.4.2 TComponent类 
20.4.3 TControl类 
20.4.4 TWinControl类 
20.4.5 TGraphicControl类 
20.4.6 TCustomControl类 
20.4.7 其他类 
20.5 运行期类型信息 
20.5.1 TypInfo.pas单元：定义运行类型信息 
20.5.2 获取类型信息 
20.5.3 获取方法指针的类型信息 
20.5.4 获取有序类型的类型信息 
20.5.5 通过RTTI给属性赋值 
20.6 总结 
第21章 编写自定义组件 
21.1 组件设计基础 
21.1.1 确定是否需要编写组件 
21.1.2 编写组件的一般步骤 
21.1.3 确定一个祖先类 
21.1.4 创建一个组件单元 
21.1.5 添加属性 
21.1.6 加入事件 
21.1.7 创建自定义的方法 
21.1.8 构造器和析构器 
21.1.9 注册组件 
21.1.10 测试组件 
21.1.11 提供组件图标 
21.2 一个组件的示例 
21.2.1 扩展Win32组件外套功能 
21.2.2 TddgRunButton：创建属性 
21.3 TddgButtonEdit：一个容器组件 
21.3.1 设计 
21.3.2 显现属性 
21.3.3 显现事件 
21.3.4 TddgDigitalClock：创建组件事件 
21.3.5 把窗体加到组件面板上 
21.4 组件包 
21.4.1 为什么使用包 
21.4.2 什么情况下不使用包 
21.4.3 包的类型 
21.4.4 包文件 
21.4.5 在Delphi 5应用程序中使用包 
21.4.6 把包安装到IDE中 
21.4.7 设计自己的包 
21.4.8 包的版本 
21.4.9 包的编译指令 
21.4.10 关于{$WEAKPACKAGEUNIT}指令 
21.4.11 包的命名约定 
21.5 附加包 
21.6 总结 
第22章 高级组件技术 
22.1 伪可视组件 
22.1.1 扩展提示功能 
22.1.2 创建一个THintWindow的派生类 
22.1.3 椭圆型的窗口 
22.1.4 使派生的提示窗口有效 
22.1.5 放置TDDGHintWindow 
22.2 动态组件 
22.2.1 走马灯组件 
22.2.2 编写这个组件 
22.2.3 在内存中的位图上输出 
22.2.4 输出组件 
22.2.5 使组件动起来 
22.2.6 测试TddgMarquee组件 
22.3 编写属性编辑器 
22.3.1 派生出一个属性编辑器对象 
22.3.2 把属性当作文本来编辑 
22.3.3 注册新的属性编辑器 
22.3.4 用对话框来编辑属性 
22.4 组件编辑器 
22.4.1 TComponentEditor 
22.4.2 一个简单的组件 
22.4.3 一个简单的组件编辑器 
22.4.4 注册组件编辑器 
22.5 对非公开的组件数据进行流操作 
22.5.1 声明属性 
22.5.2 DefineProperty()的例子 
22.5.3 TddgWaveFile：调用DefineBinaryProperty()的例子 
22.6 属性类别 
22.6.1 类别的类 
22.6.2 自定义类别 
22.7 组件列表：TCollection和TCollectionItem 
22.7.1 声明TCollectionItem类：TRunBtnItem 
22.7.2 声明TCollection类：TRunButtons 
22.7.3 实现TddgLaunchPad、TRunBtnItem和TRunButtons 
22.7.4 用对话框属性编辑器编辑TCollectionItem组件的列表 
22.8 总结 
第23章 COM和ActiveX 
23.1 COM基础 
23.1.1 COM：组件对象模型 
23.1.2 COM、ActiveX、OLE的异同 
23.1.3 术语 
23.1.4 ActiveX的伟大之处 
23.1.5 OLE1和OLE2 
23.1.6 结构化存储 
23.1.7 统一数据传输 
23.1.8 线程模式 
23.1.9 COM+ 
23.2 COM与Object Pascal 
23.2.1 接口 
23.2.2 使用接口 
23.2.3 HResult返回类型 
23.3 COM对象和类工厂 
23.3.1 TComObject和TComObjectFactory 
23.3.2 in-process COM服务器 
23.3.3 创建一个in-proc COM服务器实例 
23.3.4 out-of-process COM服务器 
23.4 聚合 
23.5 分布式COM 
23.6 自动化 
23.6.1 IDispatch接口 
23.6.2 类型信息 
23.6.3 后期捆绑与前期捆绑 
23.6.4 注册 
23.6.5 创建自动化服务器 
23.6.6 创建自动化控制器 
23.7 高级自动化技术 
23.7.1 自动化事件 
23.7.2 自动化集合 
23.7.3 类型库中新的接口类型 
23.7.4 交换二进制数据 
23.7.5 COM的语言支持 
23.8 MTS 
23.8.1 为什么会出现MTS 
23.8.2 什么是MTS 
23.8.3 Delphi中的MTS 
23.9 TOleContainer 
23.9.1 一个简单的范例程序 
23.9.2 一个稍复杂的范例程序 
23.10 总结 
第24章 扩展Windows外壳 
24.1 托盘图标组件 
24.1.1 API 
24.1.2 处理消息 
24.1.3 图标及提示 
24.1.4 鼠标点击 
24.1.5 隐藏应用程序 
24.1.6 托盘图标应用程序举例 
24.2 应用程序桌面工具栏 
24.2.1 API 
24.2.2 TAppBar:AppBar的窗体 
24.2.3 使用TAppBar 
24.3 外壳链接 
24.3.1 获取一个IShellLink实例 
24.3.2 使用IShellLink 
24.3.3 创建一个外壳链接 
24.3.4 获取及设置链接信息 
24.3.5 一个例子程序 
24.4 外壳扩展 
24.4.1 COM对象向导 
24.4.2 复制钩子处理器 
24.4.3 上下文菜单处理器 
24.4.4 图标处理器 
24.5 总结 
第25章 创建ActiveX控件 
25.1 为什么要创建ActiveX控件 
25.2 创建一个ActiveX控件 
25.2.1 ActiveX控件向导 
25.2.2 ActiveX框架 
25.2.3 属性页 
25.3 ActiveForm 
25.4 在Web上的ActiveX 
25.4.1 与Web浏览器通信 
25.4.2 Web发布 
25.5 总结 
第26章 使用Delphi Open Tools API 
26.1 Open Tools API接口 
26.2 使用Open Tools API 
26.2.1 Dumb向导 
26.2.2 Wizard向导 
26.2.3 DDG Search 
26.3 窗体向导 
26.4 总结 
第27章 使用Delphi开发CORBA 
27.1 ORB 
27.2 接口 
27.3 Stub和Skeleton 
27.4 VisiBroker的ORB 
27.4.1 VisiBroker的运行时支持服务 
27.4.2 VisiBroker管理工具 
27.5 Delphi的CORBA支持 
27.5.1 CORBA的类支持 
27.5.2 CORBA对象向导 
27.5.3 Delphi的类型库编辑器 
27.6 在Delphi 5中创建CORBA解决方案 
27.6.1 建立一个CORBA服务器 
27.6.2 实现IQueryServer的方法 
27.6.3 编译一个静态绑定的CORBA客户 
27.6.4 编译一个动态绑定的CORBA客户 
27.6.5 跨语言的CORBA 
27.7 使用VisiBroker ORB 
27.8 总结 
第四部分 开发数据库 
第28章 编写桌面数据库应用程序 
28.1 使用数据集 
28.1.1 VCL的数据库体系结构 
28.1.2 BDE数据访问组件 
28.1.3 打开一个数据集 
28.1.4 浏览数据集 
28.1.5 对字段操作 
28.1.6 刷新数据集 
28.1.7 变化的状态 
28.1.8 过滤器 
28.2 使用TTable组件 
28.2.1 查找记录 
28.2.2 主/细表 
28.2.3 TTable的事件 
28.2.4 通过代码创建一个数据库表 
28.3 数据模块 
28.4 搜索、设置范围和过滤的示例 
28.4.1 数据模块 
28.4.2 主窗体 
28.4.3 Range窗体 
28.4.4 Key Search窗体 
28.4.5 Filter窗体 
28.5 TQuery和TStoredProc:其他数据集 
28.6 文本文件数据库表 
28.6.1 概要文件 
28.6.2 数据文件 
28.6.3 使用文本数据库表 
28.6.4 限制 
28.6.5 从文本数据库表中引入数据 
28.7 用ODBC连接 
28.7.1 到哪儿找ODBC驱动程序 
28.7.2 ODBC实例：连接MS Access 
28.8 ActiveX Data Object 
28.8.1 Microsoft数据访问简介 
28.8.2 ADOExpress组件 
28.8.3 连接一个ADO数据存储 
28.8.4 示例：通过ADO连接 
28.8.5 ADO开发 
28.9 总结 
第29章 开发客户/服务器应用程序 
29.1 为什么要采用客户/服务器结构 
29.2 客户/服务器体系结构 
29.2.1 客户 
29.2.2 服务器 
29.2.3 业务规则 
29.2.4 胖客户、胖服务器、中间层：业务规则属于哪一端 
29.3 客户/服务器模型 
29.3.1 两层模型 
29.3.2 三层模型 
29.4 客户/服务器与桌面数据库开发的比较 
29.4.1 面向集合与面向记录 
29.4.2 数据安全 
29.4.3 记录锁定方法 
29.4.4 数据完整性 
29.4.5 面向事务 
29.5 SQL在客户/服务器开发中的角色 
29.6 Delphi客户/服务器开发 
29.7 服务器：后端设计 
29.7.1 数据库对象 
29.7.2 定义数据库表 
29.7.3 使用域 
29.7.4 用视图、存储过程和触发器定义业务规则 
29.7.5 数据库对象的访问权限 
29.8 客户：前端开发 
29.8.1 使用TDatabase组件 
29.8.2 TTable还是TQuery 
29.8.3 使用TQuery组件 
29.8.4 执行存储过程 
29.9 总结 
第30章 扩展数据库VCL 
30.1 使用BDE 
30.1.1 BDE单元 
30.1.2 Check() 
30.1.3 指针和句柄 
30.1.4 使指针同步 
30.2 dBASE表 
30.2.1 物理记录编号 
30.2.2 显示被删除的记录 
30.2.3 测试被软删除的记录 
30.2.4 恢复被软删除的记录 
30.2.5 紧缩表 
30.3 Paradox表 
30.3.1 记录序号 
30.3.2 紧缩 
30.3.3 限制查询结果 
30.3.4 BDE杂项 
30.3.5 编写数据感知VCL控件 
30.4 扩展TDataSet 
30.4.1 过去 
30.4.2 现在 
30.4.3 创建一个TDataSet派生类 
30.5 总结 
第31章 用WebBroker使应用程序具有Internet功能 
31.1 ISAPI、NSAPI和CGI——Web服务器扩展 
31.1.1 公共网关接口 
31.1.2 ISAPI和NSAPI 
31.2 用Delphi创建Web应用程序 
31.2.1 TWebModule和TWebDispatcher 
31.2.2 TWebRequest和TWebResponse 
31.3 用HTML内容生成器建立动态网页 
31.3.1 TPageProducer 
31.3.2 TDatasetTableProducer和TQueryTableProducer 
31.4 使用cookie保存状态 
31.5 重定向到另一个Web站点 
31.6 从HTML表单中获取信息 
31.7 数据流 
31.8 总结 
第32章 MIDAS开发 
32.1 多层应用程序的结构 
32.2 多层体系结构的优点 
32.3 典型的MIDAS体系结构 
32.3.1 服务器 
32.3.2 客户 
32.4 用MIDAS建立应用程序 
32.4.1 设置服务器 
32.4.2 创建客户 
32.5 增强应用程序的更多选择 
32.5.1 客户优化技巧 
32.5.2 服务器端的技巧 
32.6 几个实例 
32.6.1 连接 
32.6.2 MIDAS的Web功能 
32.7 客户数据集的更多功能 
32.7.1 嵌套的数据集 
32.7.2 客户主/细连接 
32.7.3 两层应用程序 
32.8 部署MIDAS应用程序 
32.9 总结 
第五部分 快速开发数据库应用程序 
第33章 货物管理程序：客户/服务器开发 
33.1 设计后端 
33.1.1 定义域 
33.1.2 定义表 
33.1.3 定义生成器 
33.1.4 定义触发器 
33.1.5 定义存储过程 
33.1.6 授权 
33.2 集中数据库访问：业务规则 
33.2.1 登录和退出方法 
33.2.2 Customer表的方法 
33.2.3 Part表的方法 
33.2.4 Sales表的方法 
33.2.5 临时表的方法 
33.2.6 TDataModule操纵数据访问组件的事件 
33.3 设计用户界面 
33.3.1 TMainForm:应用程序的主窗体 
33.3.2 TCustomerForm：客户输入 
33.3.3 TPartsForm：货物输入 
33.3.4 TSalesForm：销售浏览 
33.3.5 TNewSalesForm：销售输入 
33.3.6 CustomerSearch对话框 
33.4 总结 
第34章 客户跟踪系统：MIDAS开发 
34.1 设计服务器应用程序 
34.2 设计客户应用程序 
34.2.1 客户数据模块 
34.2.2 客户主窗体 
34.3 总结 
第35章 错误报告工具：桌面数据库开发 
35.1 通用应用程序的需求 
35.1.1 为WWW做准备 
35.1.2 用户的数据输入和登录 
35.1.3 错误处理、浏览和过滤 
35.1.4 错误注解 
35.1.5 用户界面的功能 
35.2 数据模型 
35.3 开发数据模块 
35.3.1 应用程序初始化和登录 
35.3.2 生成Paradox关键值 
35.3.3 错误处理例程 
35.3.4 浏览/过滤错误 
35.3.5 增加用户 
35.3.6 加入注解 
35.4 开发用户界面 
35.4.1 主窗体 
35.4.2 用户界面的其他问题 
35.5 使应用程序具有Web功能 
35.6 总结 
第36章 错误报告工具：使用WebBroker 
36.1 网页布局 
36.2 修改数据模块 
36.3 配置TDataSetTableProducer组件：dstpBugs 
36.4 配置TWebDispatcher组件：wbdpBugs 
36.5 配置TPageProducer组件：pprdBugs 
36.6 编写DDGWebBugs ISAPI服务器：增加TActionItem实例 
36.6.1 辅助例程 
36.6.2 介绍网页 
36.6.3 获取并校验用户登录名字 
36.7 浏览错误信息 
36.7.1 浏览所有错误信息 
36.7.2 浏览用户自己的错误信息 
36.7.3 格式化表格单元并显示错误细节 
36.8 增加新的错误信息 
36.8.1 获取错误信息 
36.8.2 校验插入的错误信息 
36.9 总结 
第六部分 附录 
附录A 错误信息与异常 
附录B BDE错误代码 
附录C 参考文献 [1]