第1部分 Delphi预备知识 2
第1章 Delphi 6概述 2
1.1 概述 2
1.1.1 Delphi的特点 2
1.1.2 Delphi 6的不同版本 4
1.1.3 Delphi 6的新特性 4
1.2 安装Delphi 6 6
1.2.1 Delphi 6的系统需求 6
1.2.2 安装Delphi 6 7
1.2.3 卸载Delphi 6 9
1.3 启动Delphi 6 11
1.3.1 启动Delphi 6 11
1.3.2 Delphi 6界面介绍 11
1.4 用Delphi 6开发控制台程序 13
1.5 Delphi 6的可视化编程 15
1.5.1 Delphi 6可视化编程的基本概念 16
1.5.2 简单的编程实例 17
1.6 本章小结 21
第2章 Delphi 6的集成开发环境 22
2.1 认识Delphi 6的集成开发环境 22
2.1.1 对象查看器 23
2.1.2 对象树状浏览器 28
2.1.3 代码编辑器 29
2.1.4 Code Insight工具 30
2.1.5 工程管理器(The Project Manager) 32
2.2 从一个小程序开始 34
2.2.1 新建一个应用程序(Application) 34
2.2.2 在窗体上添加组件(components) 35
2.2.3 为菜单和工具栏添加功能 35
2.2.4 为动作管理器添加动作 36
2.2.5 为动作管理器添加标准动作 38
2.2.6 为图像列表添加图片 39
2.2.8 添加工具栏 41
2.2.7 添加菜单 41
2.2.9 编写一个事件句柄 43
2.2.10 为New命令创建事件句柄 43
2.2.11 为Open命令创建事件句柄 44
2.2.12 为Save命令编写事件句柄 45
2.2.13 为SaveAs命令创建事件句柄 46
2.2.14 创建帮助文件 47
2.2.15 为Help Content命令创建事件句柄 47
2.2.17 创建About窗口 48
2.2.16 为Help Index命令创建事件句柄 48
2.2.18 完成程序 49
2.3 本章小结 54
第2部分 面向对象和Object Pascal语法 56
第3章 从Pascal到Object Pascal 56
3.1 程序的组织结构 56
3.2 注释 58
3.3 简单数据类型 58
3.3.1 类型的比较 59
3.3.2 字符 61
3.3.3 字符串 62
3.3.4 变体类型 63
3.4 自定义数据类型 65
3.4.1 集合类型 65
3.4.2 动态数组 66
3.4.3 函数类型(function types) 67
3.5.1 真实常量 70
3.5 常量声明 70
3.5.2 类型常量 71
3.6 类型别名 73
3.7 类型转换和强制类型转换 74
3.8 新的过程和函数特征 76
3.8.1 圆括号 77
3.8.2 重载(Overloading) 77
3.8.3 默认值参数 79
3.9 嵌入式汇编指令 80
3.10 位运算 81
3.11 本章小结 82
第4章 面向对象的基础知识 83
4.1 从结构化到面向对象 83
4.2 类 84
4.3 对象 86
4.3.1 声明和实例化 86
4.3.2 析构 87
4.3.3 类与对象的关系 88
4.4 方法 89
4.4.1 方法和普通函数的比较 89
4.4.2 Self变量 90
4.4.3 类方法 90
4.4.4 函数型类型 91
4.5 封装性 92
4.5.1 类的成员 92
4.5.2 类的属性 93
4.5.3 可见性指示符 95
4.6 继承性 96
4.6.1 继承的概念 96
4.6.2 基类 97
4.6.3 继承的可见性 98
4.6.4 属性的继承 99
4.6.5 方法的继承 99
4.7 多态性 104
4.8 as、is运算符 112
4.9 异常 112
4.9.1 Delphi是如何处理错误的 112
4.9.2 处理异常 113
4.9.3 异常的嵌套 115
4.9.4 触发异常 116
4.9.5 异常的调试 118
4.9.6 使用异常对象 118
4.10 类引用(class-reference) 118
4.11 Delphi 6的类库介绍 119
4.11.1 VCL——可视化组件库 120
4.11.2 CLX——跨平台组件库 124
4.12 Delphi标准开发文档 124
4.12.1 文件命名规则 124
4.12.2 源代码书写规则 124
4.12.3 类及变量命名规则 125
4.13 本章小结 126
第3部分 Windows程序开发初步 128
第5章 过渡到Delphi 6 128
5.1 DOS程序过渡到Windows程序 128
5.1.1 DOS平台和Windows平台的差异 128
5.1.2 DOS程序和Windows程序的差异 129
5.1.3 从结构化走向面向对象 131
5.2 C/C++过渡到面向对象的Pascal 132
5.2.1 语法区别 132
5.2.2 函数的区别 133
5.2.3 类型的转换 134
5.3 从VB到Delphi 136
5.3.1 Delphi的武器——双平台开发 136
5.3.2 Delphi与VB相比的优点 138
5.3.3 Delphi与VB的语法对比 139
5.4 本章小结 161
第6章 组件的使用 162
6.1 什么是组件 162
6.2.2 组件的实质——类 163
6.2.1 VCL与CLX 163
6.2 理解组件库 163
6.2.3 组件的Object Pascal语言描述 164
6.2.4 属性、方法和事件 164
6.3 控件的常用属性和事件 166
6.3.1 控件的基本属性 166
6.3.2 控件的标准事件 170
6.4 组件的使用 171
6.4.1 解释Delphi的组件面板 171
6.4.2 组件的一般使用方法 173
6.4.3 对组件进行操作 174
6.4.4 修改组件属性的一般方法 176
6.4.5 方法的调用 178
6.4.6 事件的处理 178
6.4.7 解析一个Delphi程序 180
6.5 Windows应用程序的基础——窗体 183
6.5.1 程序的主窗体 184
6.5.2 向工程中添加新的窗体 184
6.5.3 隐藏主窗体 186
6.5.4 模态窗体与非模态窗体 187
6.5.5 窗体的常用属性、方法和事件 187
6.5.6 一个窗体使用的例子 190
6.6 文本输入组件 194
6.6.1 TEdit与TmaskEdit控件 194
6.6.2 TMemo与TRichEdit控件的常用属性 195
6.6.4 TLabeledEdit控件 196
6.6.3 RichEdit(控件只适用于VCL) 196
6.7 特殊输入组件 197
6.7.1 滚动条组件(Scroll bars) 197
6.7.2 Trackbar组件 198
6.7.3 Up-Down控件(仅适用于VCL) 199
6.7.4 SpinEdit控件(仅适用于CLX) 200
6.7.5 Hotkey组件(仅适用于VCL) 200
6.7.6 Splitter组件 200
6.7.7 特殊输入组件应用实例 201
6.8 按钮类组件 206
6.8.1 TButton组件 207
6.8.2 位图按钮(TBitBtn) 207
6.8.3 加速按钮组件(Speed buttons) 208
6.8.4 复选框按钮(TCheckBox) 208
6.8.5 单选按钮(TRadioButton) 209
6.9 列表组件 209
6.9.1 列表框及复选按钮列表框组件(TListBox与TCheckListBox) 210
6.9.2 组合框组件(TComboBox) 211
6.9.3 ImageList组件 212
6.9.4 扩展组合框组件(TComboBoxEx) 213
6.9.5 颜色选择组合框(TColorBox) 213
6.9.6 TreeView组件(TTreeView) 214
6.9.7 ListView组件 215
6.9.8 日期/时间选取组件以及日历组件(仅适用于VCL) 217
6.10 分组组件 217
6.10.1 普通分组组件 217
6.10.2 TScrollBox组件 218
6.10.3 标签组件(TTabControl) 218
6.10.4 分页组件(TPageControl) 219
6.10.5 标题栏组件(THeaderControl) 219
6.10.6 应用举例:TPageControl组件的使用 220
6.11 信息反馈组件 223
6.11.1 标签及静态文本组件(TLabel and TStaticText) 224
6.11.2 状态栏组件 224
6.11.3 进度条组件 225
6.11.4 信息反馈组件应用实例 226
6.12 表格显示组件 230
6.12.1 DrawGrid组件 230
6.12.2 字符表格组件StringGrid 231
6.12.3 ValueListEditor组件(仅用于VCL) 232
6.13 图形显示组件 233
6.13.1 Image组件 233
6.13.2 几何图形组件(TShapes) 234
6.13.5 动画组件(TAnimate) 235
6.13.3 Bevel组件 235
6.13.4 PaintBox组件(TPaintBox) 235
6.14 菜单的创建与管理 237
6.14.1 向窗体中添加菜单组件 237
6.14.2 菜单编辑器(Menu Designer) 237
6.14.3 定制菜单 238
6.14.4 使用菜单编辑器的上下文关联菜单 242
6.14.5 在窗体中使用菜单 243
6.14.6 在窗体中动态创建菜单 244
6.14.7 菜单的应用实例 245
6.15 工具栏的使用 251
6.15.1 使用工具栏组件ToolBar 251
6.15.2 CoolBar组件 255
6.16 对话框组件 256
6.16.1 打开标准对话框 257
6.16.2 对话框的属性和使用 257
6.16.3 调用MessageBox函数实现对话框 262
6.17.1 操作控件中的文本。 263
6.17 组件的其他应用 263
6.17.2 使用ActionList管理菜单和工具栏 270
6.18 本章小结 271
第7章 常见编程方法与技巧 273
7.1 字符串的操作 273
7.2 文件的操作 286
7.2.1 文件的类型及声明 286
7.2.2 类型文件的操作 288
7.2.3 文本文件的操作 296
7.2.4 无类型文件的操作 297
7.2.5 使用文件流 298
7.2.6 有关文件名和路径的操作 299
7.3 目录和驱动器的操作 299
7.4 多媒体技术 302
7.4.1 操作位图 302
7.4.2 操作JPEG文件 307
7.4.3 操作画布 312
7.4.4 特殊显示效果 316
7.4.5 音频、视频 323
7.5 打印 326
7.5.1 简单打印 326
7.5.2 常规打印 327
7.5.3 打印相关API函数 328
7.6 注册表操作 330
7.7 板与数据交换 333
7.8.1 启动一个拖动操作 336
7.8 拖放(Drag&Drop)操作 336
7.8.2 接受被拖动的项目 337
7.8.3 放置项目 337
7.8.4 结束一个拖动操作 338
7.8.5 用拖动对象自定义拖放操作 338
7.8.6 改变拖动鼠标指针 339
7.9 拖放与融合(Drag&Dock)操作 339
7.9.1 使窗口化控件作为泊点 339
7.9.2 使控件作为可泊入子控件 340
7.9.3 控制子控件如何泊入 340
7.9.4 控制子控件如何移出 341
7.9.5 控制子控件如何响应drag-and-dock操作 341
7.10 程序启动参数 342
7.11 组件的安装与卸载 343
7.12 本章小结 348
8.1.2 线程 349
8.1.1 进程 349
8.1 进程与线程 349
第8章 多线程应用程序 349
8.2 多线程程序的预备知识 350
8.3 Tthread类 351
8.3.1 创建线程对象 351
8.3.2 TThread的属性和方法 353
8.4 线程的优先级 356
8.5 线程中的变量存储 357
8.6 Synchronize同步函数 359
8.7 多线程程序的调试 360
8.8 一个演示程序 360
8.9 本章小结 367
第9章 动态链接库 368
9.1 动态链接库简介 368
9.2 编写动态链接库 369
9.2.1 创建一个动态链接库 369
9.2.2 动态链接库的结构 370
9.2.3 Exports语句 372
9.2.4 动态链接库初始化和退出 373
9.3 调用DLL 375
9.3.1 静态加载 375
9.3.2 动态加载 375
9.4 Windows下的共享内存管理 378
9.5 DLL中的异常 379
9.6 调用约定 379
9.7 本章小结 380
第10章 调试程序 381
10.1 常见的编程错误 382
10.1.1 语法错误 382
10.1.2 指针错误 384
10.1.3 面向对象编程中的错误 385
10.2 使用集成调试器 386
10.3 本章小结 389
11.2.1 数据库相关组件简介 392
11.2 Delphi与数据库特性 392
第4部分 数据库开发 392
11.1 关系型数据库简介 392
第11章 数据库程序入门 392
11.2.2 数据库类型 393
11.2.3 数据库安全 394
11.2.4 事务 394
11.2.5 参照完整性、存储过程和触发器 395
11.3 Delphi的数据库架构 396
11.3.1 数据库架构 396
11.3.2 直接连接数据库服务器 397
11.3.3 使用磁盘上的专用文件 398
11.3.4 连接其他数据集 399
11.4 数据控件 400
11.4.1 使用数据控件 400
11.4.2 普通数据控件特性 401
11.4.4 运行期改变相连数据集 402
11.4.3 连接数据控件和数据集 402
11.4.5 连接数据源 403
11.4.6 响应数据源发生的变化 403
11.4.7 编辑和更新数据 404
11.4.8 使用户能够在控件中编辑数据 404
11.4.9 使用控件编辑数据 405
11.4.10 控制数据显示 405
11.4.11 刷新数据 406
11.4.12 允许键盘、鼠标和Timer事件 406
11.4.13 选择如何组织数据 406
11.4.14 显示一个记录 406
11.4.15 将数据以标签方式显示 407
11.4.16 在编辑框中显示和编辑字段 407
11.4.17 在memo控件中显示和编辑文本 407
11.4.18 在富文本编辑框显示和编辑文本数据 408
11.4.19 在image控件中显示和编辑图形字段 408
11.5 TDataSource组件介绍 409
11.4.20 在列表框和组合框中显示和编辑数据 409
11.5.1 TDataSource的继承关系 410
11.5.2 TDataSource组件的重要属性 410
11.5.3 TDataSource组件的重要方法 412
11.5.4 TDataSource组件的重要事件 412
11.5.5 应用程序中建立TDataSource组件的基本步骤 413
11.6.4 连接数据库 414
11.6.3 在Form上添加对象 414
11.6.2 设置属性值 414
11.6.1 建立一个新应用程序 414
11.6 一个简单的数据库程序 414
11.7 本章小结 421
第12章 BDE的使用 422
12.1 BDE 422
12.2 BDE结构框架 422
12.2.1 基于BDE的架构 422
12.2.2 使用BDE支持的数据集组件 423
12.2.3 用数据库和会晤与数据集建立关联 423
12.2.4 缓存存储BLOB类型数据 424
12.2.5 使用BDE句柄属性 425
12.3 BDE组件及其使用 425
12.3.1 BDE组件简介 425
12.3.2 使用TTable 426
12.3.3 使用TQuery 451
12.3.4 使用TStoredProc控件 458
12.3.5 使用TDatabase组件 463
12.3.6 TSession组件 470
12.3.7 TBatchMove组件 482
12.3.8 TUpdateSQL组件介绍 491
12.3.9 TNestedTable组件 496
12.3.10 TBDEClientDataSet组件介绍 501
12.4 本章小结 501
第13章 ADO的使用 502
13.1 认识ADO 502
13.2 ADOExpress 504
13.2.1 TADOConnection 506
13.2.2 TADOCommand组件 510
13.2.3 TADODataSet组件 512
13.2.4 TADOTable 514
13.2.5 通过ADO连接 515
13.2.6 应用ADO开发Master/Detail应用程序 516
13.3 本章小结 519
第14章 开发跨平台数据库 520
14.1 单向数据集简介 520
14.2 单向数据集的种类 521
14.3 连接数据库服务器 522
14.4 指定显示何种数据 525
14.4.1 显示查询结果 525
14.4.2 显示表中记录 525
14.4.3 显示存储过程的结果 526
14.5 取得数据 526
14.5.2 获取多个数据集 527
14.5.1 准备数据集 527
14.6 执行不返回记录的命令 528
14.6.1 指定要执行的命令 528
14.6.2 执行命令 528
14.6.3 创建和修改服务器的元数据 529
14.7 建立主从关联游标 530
14.8 调用模式信息 530
14.8.1 将元数据装入单向数据集 530
14.8.2 元数据数据集的结构 531
14.9 本章小结 534
第5部分 网络和服务器开发 536
第15章 开发丰富多彩的网络程序 536
15.1 网络程序开发简介 536
15.2 Internet页控件 537
15.3 FastNet页控件简介 538
15.4 Indy控件群简介 540
15.4.1 Indy Clients 541
15.4.2 Indy Servers 543
15.4.3 Indy Misc 546
15.5 做一个简单的浏览器 551
15.6 写自己的E-mail客户端程序 561
15.7 创建一个FTP客户端程序 568
15.8 Ping和Tracert命令 570
15.9 本章小结 579
第16章 开发基于套接字的网络程序 580
16.1 Socket简介 580
16.3 有关套接字的组件 581
16.2 套接字连接种类 581
16.4 服务器和客户端 582
16.5 一个TCP协议的聊天程序 583
16.6 本章小结 595
第17章 开发Web服务器应用程序 596
17.1 网络编程的挑战 596
17.2 使用Web Broker技术 597
17.2.1 用Web Broker创建Web服务器应用程序的方法 598
17.2.2 Web服务器应用程序的结构 599
17.2.3 Web分派器 600
17.2.4 请求消息分派 601
17.2.5 动作项 601
17.2.6 生成响应信息 602
17.2.7 利用组件生成响应信息内容 603
17.3 使用WebSnap技术 605
17.3.1 WebSnap的新特性 605
17.3.2 WebSnap基础组件 607
17.3.3 创建一个新的应用程序 609
17.3.4 创建一个CountryTable页面 611
17.3.5 在CountryTable模块中增加数据组件 613
17.3.6 创建表格显示数据 614
17.3.7 增加一个编辑窗体 616
17.3.8 运行完整的程序 619
17.3.9 错误报告 619
17.4 本章小结 621
18.1.1 XML文档简介 622
第18章 高级网络编程技术 622
18.1 使用XML文档 622
18.1.2 使用文档对象模型 623
18.1.3 使用XML组件 624
18.1.4 使用TXMLDocument控件 624
18.1.5 使用XML节点 624
18.1.6 使用数据绑定向导(Data Binding wizard)提炼XML文档 626
18.1.7 数据绑定向导(Data Binding wizard)的使用 627
18.1.8 使用XML数据绑定向导产生的代码 630
18.2 使用Web服务 631
18.2.1 Web服务简介 631
18.2.2 编写支持Web服务的服务器程序 631
18.2.3 定义可调用接口 632
18.2.4 在可调用接口中使用复杂类型 634
18.2.5 创建并注册实现 635
18.2.6 为Web服务建立自定义异常处理类 636
18.2.8 编写SOAP客户端 637
18.2.7 为一个Web服务程序产生WSDL文档 637
18.3 本章小结 639
第6部分 高级开发 642
第19章 深入Windows编程 642
19.1 调用Windows API 642
19.1.1 API函数的分类 643
19.1.2 参数类型的转换 645
19.1.3 调用API 646
19.2 Windows中的消息 648
19.2.1 理解消息 648
19.2.2 消息的类型 648
19.2.3 Windows消息系统是如何工作的 649
19.2.4 Delphi的消息系统 649
19.2.5 消息处理 650
19.2.6 发送自己的消息 651
19.2.8 用户自定义的消息 652
19.2.7 VCL内部的消息 652
19.2.9 消息与事件之间的关系 653
19.3 使用挂钩(Hook) 654
19.3.1 什么是挂钩 654
19.3.2 设置挂钩 654
19.3.3 使用挂钩函数 656
19.3.4 使用脱钩函数 656
19.3.5 记录键盘鼠标动作与回放:一个挂钩实例 656
19.4.2 Delphi中的汇编 660
19.4.3 简易的参数访问 660
19.4 程序中使用汇编语言 660
19.4.1 嵌入汇编的两种形式 660
19.4.4 var声明的参数 661
19.4.5 Register调用约定 661
19.4.6 全汇编过程 662
19.4.7 汇编语言访问记录 662
19.4.8 简单的例子 663
19.5.1 API 665
19.5 使用托盘图标 665
19.5.2 第一步:使用TrayIcon 667
19.5.3 第二步:在TrayIcon上打开弹出式菜单 670
19.5.4 再进一层:维护多个TrayIcon 675
19.6 COM、COM+与MTS的简单知识 681
19.7 本章小结 682
第20章 组件开发技术 683
20.1 组件创建简介 683
20.1.1 组件创建概述 683
20.1.2 可视化组件库(VCL) 683
20.1.3 组件和类 683
20.1.4 怎样创建组件 684
20.1.5 组件有什么要求 685
20.1.6 创建新组件 687
20.1.7 测试未安装的组件 690
20.2.1 组件开发人员的面向对象编程概述 692
20.2 组件开发人员的面向对象编程 692
20.1.8 测试已安装的组件 692
20.2.2 定义新类 693
20.2.3 派生新类 693
20.2.4 声明新的组件类 694
20.2.5 祖先和子孙 694
20.2.6 控制访问 695
20.2.7 分派方法 698
20.3.1 创建属性概述 700
20.3.2 为什么创建属性 700
20.3 创建属性 700
20.2.8 类和指针 700
20.3.3 属性类型 701
20.3.4 公开继承属性 701
20.3.5 定义组件属性 702
20.3.6 创建数组属性 706
20.3.7 为子组件创建属性 707
20.3.8 为接口创建属性 708
20.3.9 存储和加载属性 709
20.4.1 创建事件概述 713
20.4 创建事件 713
20.4.2 什么是事件 714
20.4.3 实现标准事件 716
20.4.4 定义自己的事件 718
20.5 创建方法 720
20.5.1 创建方法概述 720
20.5.2 消除依赖性 720
20.5.4 保护方法 721
20.5.3 命名方法 721
20.5.5 使方法成为虚方法 722
20.5.6 声明方法 722
20.6 处理消息 723
20.6.1 处理消息概述 723
20.6.2 理解消息处理系统 723
20.6.3 改变消息处理 724
20.6.4 创建新的消息句柄 726
20.7.2 注册组件 728
20.7 使组件在设计阶段可用 728
20.7.1 概述 728
20.7.3 添加面板位图 730
20.7.4 为组件提供帮助 730
20.7.5 添加属性编辑器 732
20.7.6 属性分类 737
20.7.7 添加组件编辑器 739
20.7.8 编译组件并打包 742
20.8 修改现有组件 743
20.8.1 修改现有组件概述 743
20.8.2 创建并且注册组件 743
20.8.3 修改组件类 744
20.9 本章小结 745
附录A Delphi附带工具的介绍 746
附录B Delphi函数、属性速查表 761
附录C 错误信息与异常 770
附录D 配书光盘说明 793