第1章 多线程技术及其应用 1
1.1 进程与线程 1
1.1.1 进程 2
1.1.2 线程 2
1.1.3 进程与线程的区别 3
1.1.4 线程的优先级 4
1.1.5 与进程有关的函数 8
1.2 TThread类 10
1.2.1 线程对象的状态 10
1.2.2 TThread类 16
1.2.3 在应用程序中使用多线程 17
1.2.4 线程的控制 18
1.2.5 使用Synchronize方法 25
1.2.6 线程优先级的控制 26
1.2.7 测试线程代码的执行时间 27
1.3 多线程的管理 28
1.3.1 线程的局部存储 28
1.3.2 多线程的同步机制 30
1.4 多线程技术的综合使用 43
1.5 多线程与数据库操作 50
练习题 54
第2章 组件和包 57
2.1 创建组件的一般概念 57
2.1.1 组件库 57
2.1.2 组件的属性 58
2.1.4 组件的事件 59
2.1.5 组件的拥有关系 59
2.1.3 组件的方法 59
2.1.6 组件的父子关系 60
2.2 组件设计基础 60
2.2.1 确定是否有必要编写组件 60
2.2.2 编写组件的一般步骤 60
2.2.3 确定一个祖先类 61
2.2.4 创建一个组件单元 61
2.2.5 添加属性 63
2.2.6 加入事件 69
2.2.7 创建自定义的方法 75
2.2.8 构造器和析构器 75
2.2.9 测试组件 76
2.2.10 提供组件图标 77
2.2.11 注册组件 78
2.3.1 创建和注册组件 79
2.3 从现有的组件中派生出新组件 79
2.3.2 修改组件类 80
2.4 创建一个图形组件 81
2.4.1 创建和注册组件 81
2.4.2 发布继承的属性 82
2.4.3 添加图形功能 83
2.5 在设计期间使组件有效 89
2.5.1 注册组件 90
2.5.2 添加属性编辑器 92
2.5.3 属性类别 98
2.5.4 添加组件编辑器 100
2.6 组件包的使用 103
2.6.1 包与DLL的比较 104
2.6.2 包的建立 105
2.7 综合实例 106
2.7.1 预备知识 107
2.7.2 定义枚举属性和构造函数 107
2.7.3 定义组件缺省的大小 108
2.7.4 在protected部分覆盖定义paint过程 108
2.7.5 添加箭头高度和填充属性 110
2.7.6 添加类类型的属性TPen和TBrush 111
2.7.7 定义新定制的事件 112
2.7.8 组件的测试 114
2.7.9 创建组件包发布组件 115
2.7.10 为组件添加位图图标 115
练习题 117
第3章 接口 120
3.1 接口的基本概念 120
3.1.1 接口的协议意义 122
3.1.2 接口和类的不同 123
3.1.3 接口的不变性 124
3.2 接口的声明和GUID 124
3.2.1 接口的声明 124
3.2.2 GUID 125
3.2.3 接口的前向声明 127
3.3 接口的实现 128
3.3.1 接口变量的建立、使用及其引用对象实例的销毁 129
3.3.2 IInterface的实现 134
3.3.3 接口指针的获取 137
3.4 高级接口问题 143
3.4.1 在一个类中实现多个接口 143
3.4.2 接口的委托实现 147
3.4.4 接口在多态方面的应用 153
3.4.3 接口中的属性 153
3.5 接口应用举例 157
练习题 165
第4章 COM技术概述 168
4.1 COM技术背景 169
4.1.1 COM技术的发展 169
4.1.2 COM规范和COM实现 170
4.1.3 软件组件、组件软件与COM 170
4.1.4 COM的技术特性 175
4.2 COM应用的体系结构 176
4.2.1 COM接口 177
4.2.2 COM服务器 179
4.2.3 COM客户端 182
4.2.4 建立和使用提供加法服务的COM服务器 183
4.3 COM扩展 187
4.3.1 自动化服务器 188
4.3.2 活动服务器页面 189
4.3.3 ActiveX控件 189
4.3.4 活动文档 189
4.3.5 类型库 190
4.4 Delphi对COM技术的支持 190
4.4.1 向导所支持的接口 190
4.4.2 向导所生成的实现类 191
4.5 创建并使用简单COM对象的范例 192
练习题 206
第5章 类型库与类型信息 208
5.1 类型库编辑器 209
5.1.1 类型库编辑器的组成 209
5.1.2 类型库元素 213
5.2.1 类型库所使用的数据类型和语言 215
5.2 类型库的建立、修改和发布 215
5.2.2 类型库的建立和修改 224
5.2.3 保存和注册类型库信息 228
5.2.4 类型库的发布 230
5.3 类型库使用举例 230
练习题 236
第6章 创建COM客户端应用程序 238
6.1 导入类型库信息 239
6.1.1 使用“导入类型库”对话框 240
6.1.2 使用“导入ActiveX”对话框 241
6.1.3 导入类型库信息时所生成的代码 242
6.2 控制导入的对象 243
6.2.1 使用组件封套 243
6.2.2 使用数据感知的ActiveX控件 254
6.2.3 编写基于类型库定义的客户代码 256
6.3 创建无类型库服务器的客户端应用程序 260
6.4 OLE数据类型 275
6.4.1 OLE的基本数据类型 275
6.4.2 OleVariant类型 276
练习题 280
第7章 创建自动化服务器 283
7.1 创建自动化对象概述 283
7.1.1 自动化对象的设计 284
7.1.2 使用自动化对象向导 284
7.2 定义自动化对象的接口 287
7.2.1 为对象接口添加属性 288
7.2.2 为对象接口添加方法 288
7.2.3 向客户端发布事件 289
7.3 自动化接口 290
7.3.1 双重接口 291
7.3.2 调度接口 292
7.3.3 定制接口 293
7.4 编组数据 294
7.4.1 自动化兼容的类型 294
7.4.2 自动编组的类型限制 294
7.4.3 定制数据编组 295
7.5 进程内自动化服务器应用范例 295
7.5.1 创建一个执行长度单位换算的自动化服务器 295
7.5.2 长度单位换算的客户端应用程序 298
7.5.3 CreateOleObject和GetActiveOleObject 302
7.6 进程外自动化服务器应用范例 302
练习题 311
第8章 创建活动服务器页面 314
8.1 创建活动服务器对象 315
8.1.1 使用ASP内建对象 316
8.1.2 为ASP创建进程内和进程外服务器 319
8.2 注册活动服务器对象 320
8.2.1 注册进程内服务器 320
8.2.2 注册进程外服务器 320
8.3 调试活动服务器页面应用程序 320
8.4 ASP创建和使用范例 321
练习题 328
第9章 ActiveX控件的开发和使用 331
9.1 创建ActiveX控件概述 332
9.1.1 创建ActiveX控件和ActiveForm的步骤 332
9.1.2 ActiveX控件的组成元素 333
9.2 设计ActiveX控件 334
9.3 基于VCL控件创建ActiveX控件 334
9.4 基于VCL窗体创建ActiveForm 336
9.5 ActiveX控件许可 337
9.6 定制ActiveX控件的接口 338
9.6.1 添加新的属性、方法和事件 339
9.6.2 使用类型库建立简单的数据绑定 341
9.7 为ActiveX控件创建属性页面 345
9.7.1 创建新的属性页面 345
9.7.2 在属性页面窗体中添加控件 346
9.7.3 在属性页面中的控件与ActiveX控件的属性之间建立关联 346
9.7.4 将属性页面连接到ActiveX控件 348
9.8 ActiveX控件的注册和测试 348
9.8.1 ActiveX控件的注册 348
9.8.2 ActiveX控件的测试 349
9.8.3 一个ActiveX控件的开发和使用范例 349
9.9.1 发布ActiveX控件的步骤 359
9.9 在Web上发布ActiveX控件 359
9.9.2 设置发布选项 360
练习题 366
第10章 多层数据库应用程序开发 369
10.1 DataSnap系统基础 369
10.1.1 Datasnap技术 369
10.1.2 三层应用程序的工作步骤 370
10.2 支持DataSnap技术的组件 371
10.2.1 远程数据模块 371
10.2.2 数据集提供器 372
10.3 开发DataSnap客户/服务器应用程序 375
10.3.1 建立DataSnap应用程序服务器 376
10.3.2 建立DataSnap客户端程序 377
10.3.3 与应用程序服务器的连接 379
10.3.4 调用服务器上的接口 381
10.3.5 在客户端纠错 382
10.3.6 更新数据 382
10.3.7 从应用程序服务器获取参数 384
10.4 DataSnap的简单开发实例 384
10.5 公文包模式及应用范例 390
10.6 DataSnap应用综合范例 394
练习题 416
第11章 ModelMaker入门 419
11.1 ModelMaker概述 419
11.1.1 ModelMaker模型 420
11.1.2 ModelMaker工具 420
11.1.3 UML模式图 420
11.2 使用ModelMaker 424
11.2.1 创建模型和添加类模式图 425
11.2.2 定义类 426
11.2.3 定义类的成员 429
11.2.4 使用模型 434
11.2.5 维护模型 439
11.3 使用ModelMaker创建一个组件 440
11.3.1 创建一个新的ModelMaker工程 440
11.3.2 创建新的类 441
11.3.3 为TIntegerLabel类添加属性和方法 442
11.3.4 完成方法的实现 442
11.3.5 创建和生成单元源代码文件 443
11.3.6 调试和安装组件 446
11.3.7 在ModelMaker中对组件进行改进 446
11.3.8 组件文档 448
11.3.9 模式图文档 450
练习题 453