第一部分 环境篇 1
第1章 事件与面向对象 1
1.1 人与计算机 1
1.2 我要控制你,而不是你来控制我 2
1.3 对象与类的基本特征 3
1.3.1 何谓对象 3
1.3.2 Windows 95/NT中的对象 4
1.3.3 对象的属性 4
1.4 小结 6
1.3.4 对象的行为 6
第2章 C++ Builder可视化开发概念 7
2.1 安装C++ Builder 7
2.2 C++ Builder可视化编程环境 8
2.2.1 加速条 9
2.2.2 对象观察器 11
2.2.3 窗体设计器 12
2.2.4 代码编辑器 13
2.2.5 使用C++ Builder的代码编辑器 14
2.3 一个简单的用户界面 18
2.3.2 部件的调整与对齐 19
2.3.1 选取部件加入到窗体中 19
2.3.4 运行工程 22
2.4 改变对象的属性 22
2.4.1 用Properties页改变部件的属性值 22
2.3.3 保存所做的工作 22
2.4.2 设置窗体的缺省按钮 23
2.4.3 汉化界面及字体选取 23
2.4.4 使用图像编辑对话框 24
2.5.1 为用户操作建立“事件” 25
2.5.2 使用颜色编辑对话框 25
2.5 添加事件处理过程 25
2.6 使用联机帮助Help 26
2.7 小结 26
第3章 C++ Builder基本部件 27
3.1 使用C++ Builder常用部件 27
3.1.1 常用文本部件 27
3.1.2 按钮和检查框部件 28
3.1.3 滚动部件 29
3.1.4 分组和分界部件 29
3.1.6 图形和图像部件 30
3.1.5 网格和表格部件 30
3.1.7 关系图和文件列表部件 31
3.1.8 多媒体部件和OLE部件 32
3.2 使用C++ Builder不可见部件 32
3.2.1 菜单部件 32
3.2.2 计时器部件 34
3.2.3 对话框部件 35
3.3 小结 36
4.1 创建多窗体工程工程 37
4.1.1 创建一个含有About框的例程 37
第4章 使用C++ Builder的工程管理和设计工具 37
4.1.2 指定自动创建窗体 38
4.2 使用工程管理器 39
4.2.1 工程文件的组成 39
4.2.2 使用Project Manager进行工程管理 40
4.3 使用窗体模板和对话框向导 41
4.3.1 使用窗体模板创建窗体 41
4.3.2 存储自己的窗体模板 41
4.3.3 使用对话框向导Dialog Wizard 42
4.4 使用工程模板和应用程序向导 42
4.4.2 使用应用程序向导Application Wizard 43
4.4.1 使用工程模板 43
4.5 小结 44
第二部分 语言篇 45
第5章 使用C++ Builder语言 45
5.1 C++ Builder语句与语句块 45
5.1.1 空白与语句 45
5.1.2 表达式语句和空语句 46
5.2 C++ Builder的标识符与保留字 47
5.2.1 标识符 47
5.1.3 块与复合语句 47
5.2.2 保留字 48
5.2.3 操作符与表达式 49
5.2.4 定义标识符的良好习惯 56
5.3 常量与变量 57
5.3.1 对变量名的限制 57
5.3.2 有关常量和变量的一些问题 58
5.3.3 变量的声明与作用域 59
5.3.4 使用变量 60
5.4.1 基本类型 61
5.4 C++ Builder中的类型 61
5.4.2 字符串类型 63
5.4.3 数组类型 64
5.4.4 结构类型与联合类型 64
5.4.5 枚举类型 66
5.4.6 指针类型 66
5.5 类与对象 69
5.5.1 面向对象的程序设计 69
5.5.2 C++ Builder中的部件类与类类型 70
5.5.3 类与对象的属性与行为 73
5.5.4 使用类 74
5.5.5 创建非可视化类 76
5.6 注释你的代码 79
5.7 小结 80
5.8 问题与练习 80
第6章 字符串与数字 82
6.1 字符串类型与操作 82
6.1.1 字符串类型 82
6.1.2 字符串操作 83
6.1.3 AnsiString类 86
6.1.4 TLabel部件与字换行 89
6.2 数字类型与操作 89
6.2.1 使用整数时会遇到的问题 89
6.2.2 类型转换 90
6.3 计算器——字符串与数的实例 92
6.3.1 我们要干什么 92
6.3.2 设计思路 93
6.3.3 最终实现 94
6.4 小结 98
6.5 问题与练习 99
第7章 条件分支与循环 100
7.1 条件分支语句 100
7.1.1 布尔类型 100
7.1.2 if语句 101
7.1.3 switch语句 103
7.1.4 嵌套的if语句与switch语句 104
7.2 循环语句 105
7.2.1 跳转与无跳转编程 106
7.2.2 for循环语句 106
7.2.3 while和do......while循环语句 107
7.2.4 break和continue语句 108
7.2.5 几种循环的比较 109
7.3 使用TCanvas类的实例 109
7.3.1 TCanvas类 109
7.3.2 设计应用程序的界面 112
7.3.3 最终实现 114
7.4 数组 119
7.4.1 一维数组的定义与引用 119
7.4.2 二维数组的定义与引用 121
7.4.3 TStringGrid部件 122
7.4.4 TStrings类 124
7.5 小结 127
7.6 问题与练习 127
第8章 函数和编译指令 129
8.1 函数类方法的定义 129
8.1.1 函数和类方法的定义 129
8.1.2 内联函数 131
8.2 函数和类方法的参数 132
8.2.1 形式参数和实际参数 132
8.2.2 函数和类方法的返回值 133
8.2.3 数组作为函数和类方法的参数 134
8.3 函数和类方法的调用 135
8.3.1 调用C++ Builder方法和函数的简单例程 135
8.3.2 调用C++ Builder的含参过程 137
8.3.3 函数和类方法的递归调用 139
8.4 编译指令 139
8.4.1 嵌入指令 140
8.4.2 宏定义 140
8.4.3 条件编译指令 142
8.6 问题与练习 144
8.5 小结 144
第9章 指针与引用 145
9.1 指针的概念 145
9.2 指针运算 146
9.2.1 指针的算术运算 146
9.2.2 指针的关系运算 146
9.2.3 指针的赋值运算 146
9.2.4 指针和数组的关系 147
9.3 多级指针 148
9.4.1 指针数组 149
9.4 指针和数组 149
9.4.2 指向数组的指针 151
9.5 指针和动态内存分配 152
9.6 引用 154
9.6.1 引用说明 154
9.6.2 引用参数 156
9.6.3 返回引用的函数 156
9.7 类型定义 157
9.8.1 指针作为函数的参数 158
9.8 指针和函数 158
9.8.2 返回指针的函数 160
9.8.3 指向函数的指针 161
9.9 特殊的指针与复杂说明 162
9.9.1 void类型的指针 163
9.9.2 指针和const关键字 163
9.9.3 复杂说明 164
9.10 小结 165
9.11 问题与练习 166
10.1 结构说明 167
第10章 结构 167
10.2 结构和指针 168
10.3 结构与函数 169
10.4 复杂结构与链表 171
10.4.1 结构作为另一个结构的成员 171
10.4.2 链表 172
10.5 时间表应用程序 172
10.6 小结 180
10.7 问题与练习 181
11.1 构造函数和析构函数 182
第11章 面向对象的程序设计基础 182
11.2 数据成员的初始化 187
11.3 赋值 190
11.4 const修饰的成员函数 191
11.5 重载 192
11.5.1 类中函数名的重载 192
11.5.2 运算符重载 194
11.6 继承 196
11.6.1 父类和子类 197
11.6.2 访问控制 200
11.6.3 支配规则 205
11.6.4 再谈类的构造函数和析构函数 207
11.7 完整的快算24代码 208
11.8 小结 225
11.9 问题与练习 226
第三部分 应用篇 227
第12章 创建MDI应用程序——文本编辑器实例 227
12.1 多文档界面 227
12.1.1 创建父窗体 228
12.1.2 创建子窗体 229
12.1.3 窗体菜单的融合 232
12.2 文本编辑部件及应用 234
12.2.1 TEdit部件 234
12.2.2 TMemo部件 235
12.2.3 TRichEdit部件 235
12.3 添加属性与方法 236
12.3.1 添加父窗体的事件处理代码 236
12.3.2 添加子窗体的事件处理代码 238
12.4 通用对话框的使用 244
12.4.1 文件打开对话框部件和文件保存对话框部件 244
12.4.2 查找对话框部件 247
12.4.3 替换对话框部件 249
12.4.4 字体对话框部件 249
12.5 文件打印 251
12.5.1 TPrinter对象 251
12.5.2 打印对话框部件 253
12.5.3 打印机设置对话框部件 255
12.6 对文本编辑器的改进 255
12.6.1 添加工具栏 255
12.6.2 跟踪子窗体 257
12.6.3 使用Tag属性 259
12.6.4 再谈GroupIndex属性 261
12.6.5 菜单的动态控制 262
12.7 小结 264
12.8 问题与练习 264
第13章 图形图像处理方法 266
13.1 常用图形对象 266
13.1.1 TPen类 266
13.1.2 TBrush类 268
13.1.3 TColor类型 269
13.2.1 响应鼠标事件 270
13.2 画图程序 270
13.2.2 在窗体中加入工具栏 273
13.2.3 绘图功能的实现 274
13.3 剪贴板 286
13.3.1 使用剪贴板传输文本 286
13.3.2 剪贴板类 287
13.3.3 利用剪贴板传输图像 289
13.4.1 TGraphic类 290
13.4.2 TPicture类 290
13.4 常用图像类 290
13.4.3 TImage部件 291
13.4.4 TBitmap类 291
13.5 图像类的应用 291
13.6 小结 297
13.7 问题与练习 297
第14章 文件 298
14.1 标准文件类型和文件的打开与关闭 298
14.2 文件的读写 299
14.3 文件的定位 301
14.4 非缓冲文件 302
14.5 C++ Builder封装的Windows文件管理标准函数 303
14.6 文件控件的应用 305
14.7 小结 305
14.8 问题与练习 305
第15章 使用C++ Builder开发数据库应用程序 306
15.1 数据库系统概述 306
15.2 C++ Builder的数据库特性及功能简介 307
15.2.1 C++ Builder的数据库特性 307
15.3 C++ Builder数据库的体系结构 309
15.2.2 C++ Builder可以访问的数据源(DataSource) 309
15.3.1 数据访问部件 310
15.3.2 数据控制部件 312
15.3.3 数据库窗体向导 314
15.4 C++ Builder数据库应用程序的开发方法和步骤 314
15.5 简单的基于单表的数据库应用 316
15.5.1 选择相关部件 316
15.5.2 设置部件的属性 316
15.5.3 运行程序 317
15.6 利用TDBNavigator部件创建存取程序 318
15.6.2 使用TDBNavigator部件移动记录指针 319
15.6.1 创建应用程序窗体 319
15.6.3 定制TDBNavigator部件 320
15.7 创建主要/明细型数据库应用 321
15.8 字段类的使用 323
15.8.1 字段类的类型 323
15.8.2 创建永久性的字段类 323
15.8.3 设置字段类的属性 324
15.8.4 字段类的访问 327
15.9 数据库的查询 329
15.9.1 使用GotoKey方法查找数据记录 329
15.9.2 使用FindKey方法查找数据库中的记录 330
15.9.3 使用GotoNearest和FindNearest执行不精确查找 331
15.10 修改数据库中的记录 333
15.10.1 Edit方法和Post方法 333
15.10.2 插入和删除记录 333
15.11 输入数据的有效性验证 334
15.12 小结 336
15.13 问题与练习 336
第16章 数据的访问 337
16.1 C++ Builder数据访问部件的层次结构 337
16.2.2 TSession部件的方法 338
16.2 TSession部件 338
16.2.1 TSession部件的重要属性 338
16.3 数据集部件TDataSet 339
16.3.1 数据集部件的几种状态 339
16.3.2 数据集的打开与关闭 340
16.3.3 数据集的导航 340
16.3.4 数据集中的数据维护 341
16.3.5 数据集部件与数据浏览部件的连接 343
16.3.6 数据集部件的相关事件 344
16.4 TTable部件 344
16.4.1 TTable部件的主要属性 345
16.4.2 TTable部件的方法及应用 346
16.5 TDataSource部件 348
16.5.1 TDataSource部件的属性 348
16.5.2 TDataSource部件的事件 348
16.6 小结 350
16.7 问题与练习 350
第17章 数据库应用程序实例 351
第四部分 附录 419
A C++ Builder 3环境 419