第1篇 Delphi基础篇
第1章 认识Delphi 3
1.1 Delphi概述 4
1.1.1 Delphi简介 4
1.1.2 Delphi的发展历程 4
1.1.3 Delphi 7.0的新特性 4
1.2 Delphi 7.0集成开发环境 4
1.2.1 Delphi集成开发环境概述 4
1.2.2 Delphi集成开发环境 5
1.2.3 Delphi主菜单 5
1.2.4 Delphi工具栏 9
1.2.5 Delphi组件面板 10
1.2.6 对象树状视图 11
1.2.7 对象查看器 12
1.2.8 代码编辑器 12
1.2.9 代码浏览器 13
1.2.10 项目管理器 13
1.3 定制集成开发环境 14
1.3.1 定制编程环境 14
1.3.2 定制工具栏 15
1.3.3 定制Delphi的组件面板 16
1.3.4 定制代码编辑器 16
1.3.5 保存定制的开发环境 17
1.4 安装其他开发组件 18
1.4.1 安装ActiveX组件 18
1.4.2 安装第三方组件 18
1.5 安装其他开发工具 20
1.5.1 安装打包工具 20
1.5.2 安装InterBase数据库 24
1.6 有效使用光盘资源 27
1.6.1 通过Delphi自带的示例学习使用Delphi 27
1.6.2 在Delphi中加载QReport报表组件 27
1.7 有效利用帮助资源 27
1.7.1 Delphi帮助文档的使用 27
1.7.2 Delphi附属开发环境的帮助 29
1.7.3 Delphi中API帮助的使用 29
第2章 Delphi语言基础 31
2.1 Object Pascal语言 32
2.2 程序设计规范 32
2.2.1 注释的使用 32
2.2.2 Delphi中的命名规则 33
2.2.3 使用空白增强代码的可读性 33
2.2.4 有效地利用代码缩进 33
2.3 程序设计基础 34
2.3.1 Delphi中的保留字 34
2.3.2 Delphi中的关键字 34
2.3.3 标识符 35
2.3.4 常量的声明与使用 35
2.3.5 变量的声明与使用 36
2.3.6 运算符 37
2.4 基本数据类型 39
2.4.1 整数类型 39
2.4.2 字符类型与字符串类型 41
2.4.3 日期类型 44
2.4.4 数组类型 45
2.4.5 集合类型 45
2.4.6 集合类型的典型应用 47
2.4.7 指针类型 48
2.4.8 文件类型 49
2.4.9 变体类型 51
2.4.10 过程与函数类型 52
第1篇 Delphi基础篇
第1章 认识Delphi 3
1.1 Delphi概述 4
1.1.1 Delphi简介 4
1.1.2 Delphi的发展历程 4
1.1.3 Delphi 7.0的新特性 4
1.2 Delphi 7.0集成开发环境 4
1.2.1 Delphi集成开发环境概述 4
1.2.2 Delphi集成开发环境 5
1.2.3 Delphi主菜单 5
1.2.4 Delphi工具栏 9
1.2.5 Delphi组件面板 10
1.2.6 对象树状视图 11
1.2.7 对象查看器 12
1.2.8 代码编辑器 12
1.2.9 代码浏览器 13
1.2.10 项目管理器 13
1.3 定制集成开发环境 14
1.3.1 定制编程环境 14
1.3.2 定制工具栏 15
1.3.3 定制Delphi的组件面板 16
1.3.4 定制代码编辑器 16
1.3.5 保存定制的开发环境 17
1.4 安装其他开发组件 18
1.4.1 安装ActiveX组件 18
1.4.2 安装第三方组件 18
1.5 安装其他开发工具 20
1.5.1 安装打包工具 20
1.5.2 安装InterBase数据库 24
1.6 有效使用光盘资源 27
1.6.1 通过Delphi自带的示例学习使用Delphi 27
1.6.2 在Delphi中加载QReport报表组件 27
1.7 有效利用帮助资源 27
1.7.1 Delphi帮助文档的使用 27
1.7.2 Delphi附属开发环境的帮助 29
1.7.3 Delphi中API帮助的使用 29
第2章 Delphi语言基础 31
2.1 Object Pascal语言 32
2.2 程序设计规范 32
2.2.1 注释的使用 32
2.2.2 Delphi中的命名规则 33
2.2.3 使用空白增强代码的可读性 33
2.2.4 有效地利用代码缩进 33
2.3 程序设计基础 34
2.3.1 Delphi中的保留字 34
2.3.2 Delphi中的关键字 34
2.3.3 标识符 35
2.3.4 常量的声明与使用 35
2.3.5 变量的声明与使用 36
2.3.6 运算符 37
2.4 基本数据类型 39
2.4.1 整数类型 39
2.4.2 字符类型与字符串类型 41
2.4.3 日期类型 44
2.4.4 数组类型 45
2.4.5 集合类型 45
2.4.6 集合类型的典型应用 47
2.4.7 指针类型 48
2.4.8 文件类型 49
2.4.9 变体类型 51
2.4.10 过程与函数类型 52
第3章 Delphi控制语句 55
3.1 顺序语句 56
3.1.1 赋值语句 56
3.1.2 输入语句 56
3.1.3 输出语句 58
3.2 条件判断语句 59
3.2.1 使用if…then语句 59
3.2.2 if…then…else语句 60
3.2.3 if…then…else if语句 61
3.2.4 case…of条件分支语句 61
3.3 循环结构 63
3.3.1 Repeat…until语句 63
3.3.2 while…do语句 65
3.3.3 for…do语句 65
3.4 其他控制语句 67
3.4.1 Break语句 67
3.4.2 Continue语句 68
3.4.3 Exit语句 68
3.4.4 Halt语句 69
3.4.5 RunError语句 69
3.4.6 Abort语句 70
3.4.7 goto语句 70
第4章 数组与算法 71
4.1 数组的概念 72
4.2 一维数组 72
4.2.1 一维数组的声明 72
4.2.2 一维数组的引用 72
4.2.3 数组下标的上下边界 73
4.3 二维数组及多维数组 74
4.3.1 二维数组的声明和引用 74
4.3.2 多维数组的声明 76
4.4 动态数组 76
4.4.1 动态数组的声明 76
4.4.2 动态数组的引用 77
4.5 控件数组 78
4.5.1 控件数组的概念 78
4.5.2 建立件数组 78
4.5.3 使用控件数组 79
4.6 算法 80
4.6.1 数组冒泡排序法 80
4.6.2 顺序查找与有序数组折半查找 82
4.6.3 杨辉三角形 85
4.6.4 程序中的进制转换 86
第5章 过程与函数 91
5.1 过程与函数简介 92
5.2 过程、函数的定义与调用 92
5.2.1 Procedure过程的声明、定义与调用 92
5.2.2 Function函数的声明、定义与调用 93
5.3 过程之间参数传递 94
5.3.1 形参与实参 94
5.3.2 按值传递和按址传递 95
5.3.3 参数类型 96
5.4 嵌套调用和递归调用 102
5.4.1 嵌套调用 102
5.4.2 递归调用 103
5.5 过程和函数中变量的作用域 106
5.6 函数的重载 106
5.7 常用函数的使用 107
5.7.1 数学函数 107
5.7.2 字符串函数 109
5.7.3 转换函数 112
5.7.4 随机数函数 113
5.7.5 日期函数 115
5.7.6 其他函数 118
第2篇 用户界面设计篇
第6章 面向对象的程序设计 123
6.1 类 124
6.1.1 类的概念 124
6.1.2 类的定义 124
6.2 对象 125
6.2.1 对象的声明和实例化 125
6.2.2 对象的构造与析构 126
6.2.3 类与对象的关系 128
6.3 属性 128
6.3.1 属性的概念 128
6.3.2 属性的访问 128
6.3.3 属性的存储 129
6.3.4 属性的索引 130
6.3.5 如何使用数组属性 130
6.4 方法 131
6.4.1 方法的概念 131
6.4.2 方法的类型 131
6.5 封装 132
6.5.1 封装的概念 132
6.5.2 成员的可见性 133
6.5.3 逻辑封装 133
6.5.4 物理封装 134
6.6 继承 134
6.6.1 继承的概念 134
6.6.2 基类 135
6.6.3 继承的可见性 135
6.6.4 属性、方法的继承 135
6.7 多态 139
6.7.1 认识多态 139
6.7.2 多态的实现 139
6.7.3 抽象类与多态 142
6.8 类运算符as、is 142
6.9 异常处理 142
6.9.1 处理异常 142
6.9.2 嵌套使用异常 144
6.9.3 使用异常对象 145
第7章 用户界面设计 147
7.1 窗体分类 148
7.1.1 数据模块窗体 148
7.1.2 MDI窗体 148
7.1.3 工具窗体 149
7.1.4 LOGO窗体 149
7.2 窗体的主要属性 151
7.2.1 窗体透明属性的设置 151
7.2.2 窗体滚动条的设置 152
7.2.3 系统按钮的设置 153
7.2.4 窗体图标的设置 154
7.2.5 窗体标题的设置 156
7.2.6 统一处理窗体的按键 156
7.2.7 在窗体上添加主菜单和右键菜单 157
7.3 窗体的主要方法 158
7.3.1 窗体的显示与隐藏 158
7.3.2 窗体中子组件焦点的设置 159
7.3.3 对窗体中组件的查找 159
7.3.4 窗体坐标的转换 161
7.4 窗体的主要事件 161
7.4.1 窗体创建事件的应用 161
7.4.2 窗体显示事件的应用 162
7.4.3 窗体释放事件的应用 162
7.4.4 窗体重画事件的应用 163
7.5 窗体控制的应用 163
7.5.1 限制窗体的大小 163
7.5.2 窗体的动态创建 163
7.5.3 使窗体显示在屏幕中央 164
7.5.4 在窗体关闭时显示提示窗体 164
7.5.5 多窗体间的调用 165
7.5.6 多窗体间的数据传递 165
7.5.7 将窗体显示在最前端 165
7.6 调整组件布局 166
7.6.1 调整组件尺寸 166
7.6.2 组件的锁定 167
7.6.3 组件的对齐 167
7.7 多文档窗体的应用 168
7.7.1 MDI窗体的建立 168
7.7.2 关闭MDI子窗体 169
7.7.3 为MDI窗体添加背景图 169
第8章 菜单、工具栏和状态栏设计 171
8.1 菜单在窗体上的应用 172
8.1.1 创建菜单及菜单项 172
8.1.2 在菜单中添加分隔条 173
8.1.3 级联菜单的设计 173
8.1.4 单选功能菜单的设计 173
8.1.5 复选功能菜单的设计 174
8.1.6 动态创建菜单 174
8.1.7 为菜单添加图标 175
8.2 工具栏在窗体上的应用 175
8.2.1 解决TToolBar无法显示全部按钮的问题 176
8.2.2 在TToolBar上实现翻页箭头 176
8.2.3 为工具栏设置响应代码 177
8.2.4 设置TToolBar组件按钮的样式 178
8.2.5 为工具栏按钮添加图标 179
8.2.6 为工具栏设置背景图 179
8.2.7 为工具栏设置提示信息 179
8.2.8 使工具栏按钮显示标题名称 180
8.3 状态栏在窗体上的应用 180
8.3.1 状态栏的使用 180
8.3.2 在状态栏上显示图标 181
8.3.3 在状态栏上添加进度条 182
8.3.4 在状态栏上显示时钟及日期 183
第9章 对话框在程序中的应用 185
9.1 “打开”对话框在程序中的应用 186
9.1.1 “打开”对话框简介 186
9.1.2 设置文件类型过滤器 186
9.1.3 设置“打开”对话框打开时的初始文件路径 187
9.1.4 在“打开”对话框中选择多个文件 187
9.1.5 设置“打开”对话框不显示位置栏 189
9.1.6 在“打开”对话框中显示自定义标题 189
9.2 “另存为”对话框在程序中的应用 189
9.2.1 “另存为”对话框简介 189
9.2.2 为保存的文件指定默认扩展名 190
9.2.3 设置文件类型列表 190
9.2.4 保存时文件名称相同弹出的提示框 190
9.3 “字体”对话框在程序中的应用 191
9.3.1 “字体”对话框简介 191
9.3.2 打开“字体”对话框中设置Memo中的字体 191
9.3.3 在“字体”对话框中显示“应用”按钮 192
9.4 “颜色”对话框在程序中的应用 193
9.4.1 “颜色”对话框简介 193
9.4.2 使用Create方法动态创建“颜色”对话框 193
9.4.3 打开“颜色”对话框改变组件前景颜色 193
9.5 “查找”对话框在程序中的应用 194
9.5.1 “查找”对话框简介 194
9.5.2 设置“查找”对话框显示时的位置 194
9.5.3 对文本中的内容进行查找 194
9.6 “替换”对话框在程序中的应用 196
9.6.1 “替换”对话框简介 196
9.6.2 对文本中的内容进行替换 196
第10章 组件的使用 199
10.1 常用组件的使用 200
10.1.1 TLabel组件的使用 200
10.1.2 TEdit组件的使用 202
10.1.3 控制TEdit中输入的数据 206
10.1.4 TMemo组件的使用 207
10.1.5 TRichEdit组件的使用 209
10.1.6 在TRichEdit中添加文件内容 210
10.1.7 去掉TRichEdit组件中每行的硬回车 211
10.1.8 TMaskEdit组件的属性 211
10.2 分组组件的使用 212
10.2.1 TPageControl组件的使用 212
10.2.2 TNotebook组件的使用 214
10.3 图形组件的使用 215
10.3.1 图像组件的使用 215
10.3.2 位图组件的使用 217
10.4 表格组件的使用 218
10.4.1 自绘表格组件的使用 218
10.4.2 字符串表格组件的使用 220
10.5 列表组件的使用 225
10.5.1 TListBox组件的使用 225
10.5.2 在TListBox中加入水平滚动条 230
10.5.3 在TListBox中查找文字 231
10.5.4 在TListBox中实现拖放操作 231
10.5.5 TComboBox组件的使用 232
10.5.6 TActionList组件的使用 235
10.5.7 TTreeView组件的使用 235
10.5.8 在TtreeView组件上加上CheckBox组件 240
10.5.9 将数据库中的信息加载到TTreeView组件中 241
10.5.10 TListView组件的使用 242
10.5.11 TListView组件以表格的形式显示数据 247
第11章 自制VCL组件 249
11.1 自制VCL组件的创建 250
11.1.1 VCL组件的基类 250
11.1.2 组件的创建 251
11.1.3 测试未安装的组件 253
11.1.4 测试已安装的组件 253
11.2 面向对象的组件编程 253
11.2.1 面向对象的编程概述 253
11.2.2 新类的定义 254
11.2.3 类的派生 254
11.2.4 组件类的声明 254
11.2.5 控制访问权限 254
11.2.6 类和指针 255
11.3 组件属性 255
11.3.1 属性的类型 255
11.3.2 公开继承属性 255
11.3.3 定义组件属性 256
11.3.4 创建组件属性 257
11.3.5 存储和加载属性 258
11.4 组件方法 260
11.4.1 方法命名 260
11.4.2 方法的保护 260
11.4.3 虚方法 260
11.4.4 方法的声明 260
11.5 组件事件 261
11.5.1 实现标准事件 261
11.5.2 自定义事件 262
11.6 自制VCL组件 263
11.6.1 自制组合组件 263
11.6.2 自制可改变背景颜色的按钮 264
11.6.3 为组件添加面板位图 266
11.6.4 自定义托盘图标组件 266
第12章 鼠标、键盘相关技术的应用 271
12.1 鼠标的应用 272
12.1.1 对鼠标的认识 272
12.1.2 鼠标按下时的事件操作 272
12.1.3 鼠标移动时的事件操作 272
12.1.4 鼠标抬起时的事件操作 273
12.1.5 用鼠标拖曳图像 274
12.1.6 限制鼠标的移动范围 275
12.1.7 显示动画鼠标 276
12.2 键盘的应用 277
12.2.1 对键盘的认识 277
12.2.2 按任意键的事件操作 277
12.2.3 键盘上的键按下时的事件操作 278
12.2.4 键盘上的键抬起时的事件操作 278
12.2.5 用Enter键代替Tab键实现光标焦点的转换 279
12.2.6 显示按下的组合键 279
第3篇 文件、图形与多媒体篇
第13章 图形图像处理技术 283
13.1 图形对象 284
13.1.1 Tcanvas(画布)对象 284
13.1.2 TPen对象 284
13.1.3 TBrush对象 287
13.1.4 TGraphic对象 288
13.1.5 TPicture对象 288
13.1.6 TBitmap对象 290
13.2 绘图方面的应用 291
13.2.1 在窗体上绘制直线 291
13.2.2 在窗体上绘制矩形 292
13.2.3 在窗体上绘制圆或椭圆 293
13.2.4 在窗体上绘制三角形 294
13.2.5 在窗体上绘制弧 294
13.2.6 在窗体上绘制弦 295
13.2.7 在窗体上绘制扇形 295
13.2.8 在窗体上绘制字符串 296
13.2.9 在窗体上绘制图片 297
13.3 图案绘制的应用 298
13.3.1 在窗体上绘制曲线 298
13.3.2 在窗体上绘制多边形 298
13.3.3 在窗体上用画刷填充图形 299
13.3.4 绘制立体模型 300
13.3.5 曲线的典型应用 301
13.4 利用鼠标绘图 302
13.4.1 直线的绘制 302
13.4.2 圆的绘制 303
13.4.3 矩形的绘制 303
13.4.4 多边形的绘制 303
13.4.5 在窗体上绘图的典型应用 304
13.5 图像格式的转换 306
13.5.1 将JPG格式转换成位图BMP 306
13.5.2 将位图BMP转换成JPG格式 307
13.5.3 将WMF格式转换成位图BMP 308
13.5.4 将位图BMP转换成WMF格式 309
13.5.5 将ICO格式转换成位图BMP 310
13.6 图像颜色的转换 311
13.6.1 将TColor换算成RGB 311
13.6.2 将RGB换算成TColor 311
13.6.3 将TColor换算成HTML 312
13.6.4 将HTML换算成TColor 313
13.6.5 将RGB换算成CMYK 314
13.6.6 将CMYK换算成RGB 315
13.6.7 将颜色值转换成灰度值 316
13.6.8 提高图像的亮度 317
13.7 在组件中绘制图片 318
13.7.1 在标题栏中绘制按钮 318
13.7.2 在TMainMenu组件上绘制图片 321
13.8 图像处理方面的应用 323
13.8.1 百叶窗效果 323
13.8.2 图片的剪切 324
13.8.3 图片的局部放大 326
13.8.4 图片的旋转 328
13.8.5 图像浮雕效果 329
13.8.6 在图片中写入文字 330
第14章 多媒体技术 333
14.1 多媒体技术的基本概念 334
14.1.1 多媒体的概念及特点 334
14.1.2 多媒体技术的分类 334
14.2 文字特效技术 335
14.2.1 立体字效果 335
14.2.2 文字滚动效果 336
14.2.3 文字旋转效果 338
14.3 动画制作 340
14.3.1 动画实现原理 340
14.3.2 单帧动画的实现 341
14.3.3 多帧动画的实现 342
14.3.4 模拟石英钟 344
14.4 音频控制技术 347
14.4.1 TMediaPlayer组件的属性 347
14.4.2 TMediaPlayer组件的方法 349
14.4.3 TMediaPlayer组件的事件 351
14.4.4 MIDI、WAV、MP3文件的播放 352
14.4.5 获取和设置左右声道 353
14.4.6 声道的静音与恢复 354
14.4.7 循环播放MP3文件 356
14.4.8 计算MP3的播放时间 357
14.4.9 播放CD 358
14.5 视频控制技术 360
14.5.1 指定视频的输出窗口 360
14.5.2 跟踪显示文件的播放进度 361
14.5.3 播放VCD 362
14.5.4 检测AVI文件是否播放结束 364
14.5.5 用TAnimate组件播放AVI文件 365
14.6 API函数在多媒体中的应用 369
14.6.1 多媒体相关的API函数 369
14.6.2 利用mciSendString函数播放AVI 369
14.6.3 利用sndPlaySound函数播放WAV文件 371
14.7 游戏制作 372
14.7.1 游戏制作概述 372
14.7.2 射击游戏的制作 372
第15章 文件操作技术 379
15.1 文件的概念与分类 380
15.1.1 文件的概念 380
15.1.2 文件的分类 380
15.1.3 文件处理的一般步骤 380
15.2 文本文件的操作 380
15.2.1 打开和关闭文本文件 381
15.2.2 读取文本文件 382
15.2.3 写入文本文件 383
15.3 类型文件的操作 384
15.3.1 类型文件的定义与说明 384
15.3.2 判断文件是否结束 384
15.4 无类型文件的操作 387
15.4.1 向无类型文件读取数据 387
15.4.2 向无类型文件写入数据 387
15.5 对文本文件的处理 389
15.5.1 判断文件是否为文本文件 389
15.5.2 修改文件属性 390
15.5.3 获取文本文件的修改时间 392
15.5.4 获取文件的访问时间 394
15.5.5 打印文本文件 397
15.5.6 将目录下的所有文本文件显示在TlistBox组件中 398
15.5.7 获取文件夹的剩余空间 400
15.6 文件目录的应用 401
15.6.1 获取System目录 401
15.6.2 获取Windows目录 402
15.6.3 获取当前目录 402
15.6.4 判断目录是否存在 403
15.6.5 获取目录中的文件名和扩展名 403
15.6.6 创建文件 405
15.7 INI文件 406
15.7.1 了解INI文件 406
15.7.2 打开INI文件 406
15.7.3 读/写INI文件的基础 407
15.7.4 读取和写入INI文件 408
15.7.5 用INI文件创建菜单 409
第16章 系统控制技术 411
16.1 操作系统简介 412
16.1.1 操作系统的概念 412
16.1.2 操作系统的分类 412
16.1.3 操作系统的功能 413
16.1.4 实施系统控制的原因 413
16.2 重新启动和关闭计算机 413
16.3 修改系统颜色 415
16.4 设置系统时间 417
16.5 设置墙纸 417
16.6 获取各盘符中的文件信息 420
16.7 获取本机名称 423
16.8 用Delphi调用DOS窗体 424
第4篇 数据库技术篇
第17章 ADO数据库开发技术 429
17.1 TADOConnection组件 430
17.1.1 TADOConnection组件的主要属性 430
17.1.2 TADOConnection组件的方法 434
17.1.3 TADOConnection组件的事件 436
17.2 TADOTable组件 436
17.2.1 TADOTable组件的主要属性 436
17.2.2 TADOTable组件的方法 439
17.3 TADOQuery组件 442
17.3.1 TADOQuery组件的属性 442
17.3.2 TADOQuery组件的方法 445
17.3.3 使用TADOQuery组件操作数据库 446
17.3.4 在TADOQuery组件中赋值和运行SQL 448
17.3.5 如何在ADOQuery1中赋值变量 448
17.3.6 在ADOQuery1组件中组装SQL实现动态查询 449
17.4 TADOCommand组件 449
17.4.1 TADOCommand组件的属性 450
17.4.2 TADOCommand组件的方法 451
17.5 TADODataSet组件 452
17.5.1 TADODataSet组件的主要属性 452
17.5.2 TADODataSet组件的主要方法 453
17.6 数据表、字段的相关应用 454
17.6.1 与数据库、数据表相关的应用 454
17.6.2 与字段相关应用 459
17.7 使用存储过程和视图 463
第18章 常用数据组件 465
18.1 数据组件的介绍 466
18.2 TDBEdit组件 466
18.2.1 TDBEdit组件的常用属性 466
18.2.2 TDBEdit组件的常用方法 467
18.2.3 TDBEdit组件的常用事件 468
18.2.4 TDBEdit组件的应用 469
18.3 TDBNavigator组件 470
18.3.1 TDBNavigator组件的常用属性 470
18.3.2 TDBNavigator组件的常用方法 472
18.3.3 TDBNavigator组件的常用事件 473
18.3.4 TDBNavigator组件的应用 473
18.4 TDBImage组件 474
18.4.1 TDBImage组件的常用属性 474
18.4.2 TDBImage组件的常用方法 476
18.4.3 TDBImage组件的常用事件 477
18.4.4 TDBImage组件的应用 477
18.5 TDBListBox组件的介绍 478
18.5.1 TDBListBox组件的常用属性 478
18.5.2 TDBListBox组件的常用方法 480
18.5.3 TDBListBox组件的常用事件 481
18.5.4 TDBListBox组件的应用 482
18.6 TDBLookupListBox组件 483
18.6.1 TDBLookupListBox组件的常用属性 483
18.6.2 TDBLookupListBox组件的常用方法 484
18.6.3 TDBLookupListBox组件的常用事件 484
18.6.4 TDBLookupListBox 组件的应用 486
18.7 TDBComboBox组件 487
18.7.1 TDBComboBox组件的常用属性 487
18.7.2 TDBComboBox组件的常用方法 488
18.7.3 TDBComboBox组件的常用事件 488
18.7.4 TDBComboBox组件的应用 488
18.8 TDBGrid组件 489
18.8.1 TDBGrid组件的常用属性 490
18.8.2 TDBGrid组件的常用方法 491
18.8.3 TDBGrid组件的常用事件 491
18.8.4 TDBGrid组件的应用 493
第19章 添加、删除和修改数据 495
19.1 添加数据 496
19.1.1 数据内容检验 496
19.1.2 直接添加数据 496
19.1.3 添加图片、声音文件 499
19.1.4 从其他表添加数据 501
19.1.5 从其他类型的数据库中添加数据 501
19.1.6 添加文本文件内容 503
19.1.7 添加Word文件内容 504
19.1.8 添加电子表格内容 507
19.1.9 利用存储过程添加数据 508
19.2 删除数据 509
19.2.1 删除数据的几种方法 509
19.2.2 删除指定的记录 511
19.2.3 删除符合条件的记录 512
19.2.4 删除所有记录 513
19.2.5 利用存储过程删除记录 513
19.3 更新数据 514
19.3.1 更新数据的几种方法 514
19.3.2 更新特定记录 515
19.3.3 更新符合条件的记录 516
19.3.4 更新所有记录 518
19.3.5 利用存储过程更新记录 518
第20章 浏览与查询数据 521
20.1 对数据表进行浏览 522
20.1.1 通过TADOTable浏览数据表 522
20.1.2 通过TADOQuery组件浏览数据表 523
20.2 数据的简单查询 524
20.2.1 数据查询 525
20.2.2 数据排序 526
20.2.3 数据过滤 527
20.2.4 数据统计 528
20.3 数据的复合查询 530
20.3.1 使用子查询 530
20.3.2 使用连接查询 531
20.3.3 使用内连接查询 532
20.3.4 使用外连接查询 532
20.3.5 使用交叉连接查询 534
20.4 数据的时间及时间段查询 535
20.5 数据模糊查询 536
第21章 图表组件的设计 539
21.1 TDBChart图表组件简介 540
21.1.1 TDBChart图表组件的属性 540
21.1.2 TDBChart图表组件的方法 542
21.1.3 TDBChart图表组件的事件 543
21.2 TDBChart图表的类型与应用 545
21.2.1 柱形图表(Bar) 545
21.2.2 折线图表(Line) 548
21.2.3 饼形图表(Pie) 550
21.2.4 箭形图表(Arrows) 552
21.2.5 点形图表(Point) 554
21.2.6 预览和打印TDBChart图表 557
第22章 多层数据库程序 559
22.1 多层数据库程序设计原理 560
22.2 多层数据库服务 560
22.3 远程数据连接组件 561
22.3.1 TDCOMConnection组件 561
22.3.2 TSocketConnection组件 563
22.4 多层数据库中的数据集 564
22.4.1 TDataSetProvider组件 564
22.4.2 TClientDataSet组件 565
22.5 多层数据库编程实现 565
22.5.1 建立多层数据库的连接 565
22.5.2 远程数据查询 568
22.5.3 远程数据操作 570
22.5.4 在客户端控制显示的数据表 573
第23章 报表与打印程序设计 575
23.1 QuickReport报表 576
23.2 QuickReport报表向导 577
23.3 使用QuickReport组件设计报表 579
23.3.1 常用的QuickReport组件 579
23.3.2 基本数据报表 583
23.3.3 卡片式数据报表 584
23.3.4 子查询报表 585
23.4 特色报表设计 586
23.4.1 不规则报表 587
23.4.2 报表合并 587
23.5 Rave报表介绍 588
23.6 利用Rave向导创建报表 589
23.7 利用Rave组件设计报表 593
23.7.1 常用的Rave组件 593
23.7.2 设计主从式报表 595
23.7.3 设计汇总报表 596
23.7.4 利用报表打印图形 597
23.8 特色报表设计 598
23.8.1 设计页眉和页脚 599
23.8.2 打印分栏文本 600
第24章 数据库安全技术 601
24.1 数据库的备份 602
24.1.1 备份数据库的概念 602
24.1.2 使用Delphi备份Access数据库 602
24.1.3 在企业管理器中备份SQL Server数据库 603
24.1.4 使用Delphi备份SQL Server数据库 604
24.2 数据库的还原 606
24.2.1 还原数据库的概念 606
24.2.2 还原Access数据库 606
24.2.3 在企业管理器中还原SQL Server数据库 606
24.2.4 使用Delphi还原SQL Server数据库 607
24.3 数据库的分离 609
24.3.1 在企业管理器中分离数据库 609
24.3.2 使用Delphi分离数据库 610
24.4 数据库的附加 612
24.4.1 在企业管理器中附加数据库 612
24.4.2 使用Delphi附加数据库 613
第5篇 网络通信篇
第25章 网络编程 617
25.1 网络基本知识 618
25.1.1 网络分层 618
25.1.2 点对点网络 619
25.1.3 通信协议 619
25.1.4 网络地址 620
25.2 常用的网络组件编程简介 620
25.3 常用的网络组件 620
25.3.1 TIdSMTP组件 620
25.3.2 TIdMessage组件 623
25.3.3 TTcpClient组件 625
25.3.4 TTcpServer组件 628
25.3.5 TIdUDPClient组件 629
25.3.6 TIdUDPServer组件 631
25.3.7 TIdTCPClient组件 632
25.3.8 TIdTCPServer组件 636
25.3.9 POP3组件 637
25.4 基于组件的网络编程 639
25.4.1 利用TTcpClient、TTcpServer组件进行网络连接 639
25.4.2 通过局域网控制其他计算机 640
25.4.3 锁定局域网中指定计算机的鼠标 642
25.5 对局域网的编程操作 644
25.5.1 获取工作组上的计算机的名称 644
25.5.2 获取局域网中的工作组 646
25.5.3 局域网聊天 648
25.5.4 修改本地计算机的IP地址 652
25.5.5 通过计算机名获取IP地址 654
25.5.6 通过IP地址获取主机名称 655
25.5.7 发送电子邮件 656
25.5.8 接收电子邮件 657
第26章 Internet编程 661
26.1 Windows Socket应用 662
26.1.1 Windows Socket介绍 662
26.1.2 WinSock API函数介绍 662
26.1.3 通过WinSock进行文件传输 666
26.1.4 通过WinSock开发HTTP代理程序 669
26.2 Web浏览器的定制 671
26.2.1 TWebBrowser组件的介绍 671
26.2.2 浏览器的实现 680
第27章 数据通信 685
27.1 串口通信基础 686
27.1.1 RS-232C标准 686
27.1.2 RS-485/422标准 686
27.1.3 RS-422与RS-485网络安装注意要点 686
27.1.4 同步与异步通信 687
27.1.5 单工、半双工和全双工通信 688
27.2 用TMSComm进行串口通信编程 688
27.2.1 TMSComm组件介绍 688
27.2.2 TMSComm组件的安装 688
27.2.3 TMSComm组件的属性、事件 690
27.2.4 利用TMSComm组件初始化和打开串口 696
27.2.5 对串口事件的应用 697
27.2.6 串口的读、写操作 697
27.2.7 串口的关闭 698
27.2.8 串口的简单应用 698
27.3 用API函数实现串口编程 699
27.3.1 Windows API 串口编程 699
27.3.2 利用API函数进行串口的打开与关闭 699
27.3.3 串口的属性与配置 701
27.3.4 串口的读、写 706
27.3.5 串口的通信事件 708
27.3.6 用API函数实现文本文件的传输 708
第6篇 Windows编程篇
第28章 Windows API函数的应用 715
28.1 Windows API基础知识 716
28.2 窗口相关函数 717
28.2.1 创建窗口 717
28.2.2 显示窗口 719
28.3 利用API函数绘制图形 721
28.3.1 绘制一个弧形图像 721
28.3.2 绘制焦点矩形 722
28.3.3 绘制椭圆形 723
28.3.4 画刷的使用 724
28.4 利用API对文件进行操作 727
28.4.1 文件的打开与创建 727
28.4.2 文件的删除 728
28.4.3 文件的复制 728
28.4.4 获取文件大小 729
28.4.5 文件的查找 729
第29章 DLL动态链接库的使用 731
29.1 认识动态链接库(DLL) 732
29.1.1 动态链接库的介绍 732
29.1.2 动态链接库与可执行文件 732
29.2 编写动态链接库 733
29.2.1 创建一个动态链接库 733
29.2.2 动态链接库的结构 734
29.2.3 在动态链接库中使用窗体 736
29.3 调用动态链接库 738
29.3.1 静态调用DLL 738
29.3.2 动态调用DLL 739
第30章 多线程的应用 741
30.1 线程的基础知识 742
30.1.1 线程与进程的关系 742
30.1.2 何时使用多线程 742
30.1.3 线程调度 742
30.2 VCL线程的使用 743
30.2.1 TThread类 743
30.2.2 线程类的创建 745
30.2.3 线程函数 746
30.2.4 线程终止和异常 747
30.3 Windows线程的使用 748
30.3.1 线程的构造与创建 748
30.3.2 线程终止 749
30.3.3 线程调度与优先级 749
30.3.4 消息队列 751
30.4 在Delphi中使用线程同步 752
30.4.1 Synchronize函数 752
30.4.2 Lock与UnLock方法 754
30.4.3 TCriticalSection类 755
30.4.4 TEvent类 757
30.4.5 WaitFor方法 759
30.5 利用API实现线程同步 759
30.5.1 互斥对象 759
30.5.2 信号量对象 761
第31章 消息处理技术 763
31.1 消息的介绍 764
31.1.1 消息的基本概念 764
31.1.2 消息是如何工作的 764
31.2 消息机制原理 765
31.2.1 消息的构成 765
31.2.2 消息的处理过程 766
31.2.3 消息的返回值 766
31.3 消息的分类 766
31.3.1 标准消息 766
31.3.2 通知消息 767
31.3.3 用户自定义消息 767
31.4 消息与事件 767
31.4.1 消息的发送 768
31.4.2 VCL消息处理 769
31.4.3 消息与事件的关系 770
第32章 注册表的应用 773
32.1 注册表简介 774
32.1.1 注册表 774
32.1.2 注册表的功能和作用 774
32.2 注册表结构划分 774
32.2.1 注册表编辑器 774
32.2.2 注册表的视窗结构 775
32.2.3 注册表的根键说明 776
32.3 注册表的操作 777
32.3.1 注册表的数据类型 777
32.3.2 TRegistry类的属性和方法 777
32.3.3 打开和创建注册表项 778
32.3.4 删除注册表项 779
32.3.5 向注册表中写入数据 780
32.3.6 读取注册表中的数据 781
32.4 注册表在控制面板中的典型应用 782
32.4.1 禁止使用控制面板 782
32.4.2 隐藏“添加/删除Windows组件” 783
32.5 通过注册表提高系统的安全性 784
32.5.1 禁止使用注册表编辑器 784
32.5.2 隐藏计算机中的盘符 785
32.6 注册表在桌面中的典型应用 788
32.6.1 修改桌面特性 788
32.6.2 在任务栏中显示自定义信息 789
32.7 通过注册表提高系统性能 790
32.7.1 优化二级缓存提高系统速度 790
32.7.2 自动登录系统 791
32.7.3 使窗口快速显示 792
第7篇 可靠性编程篇
第33章 程序优化 797
33.1 程序基本优化 798
33.1.1 选择优化对象 798
33.1.2 优化程序速度 798
33.1.3 优化Delphi的启动速度 798
33.2 Delphi语言优化 798
33.2.1 多使用32位变量 798
33.2.2 少使用子域类型 798
33.2.3 简化表达式 798
33.2.4 const参数 799
33.2.5 with语句 799
33.2.6 位宽 799
33.2.7 紧缩 799
33.2.8 浮点 799
33.2.9 语句优化 799
33.2.10 局部变量 800
33.2.11 动态数组 800
33.3 程序中的代码优化 801
33.3.1 充分利用代码共享 801
33.3.2 利用Delphi的强制转换 801
33.4 释放资源的优化 801
第34章 程序调试 803
34.1 程序的调试 804
34.1.1 Delphi调试工具选项 804
34.1.2 Delphi中断点的使用 805
34.1.3 在Delphi中控制程序运行 807
34.1.4 查看局部变量 809
34.1.5 查看CPU的状态 810
34.1.6 如何查看FPU状态 811
34.2 Delphi程序中的错误类型 811
34.2.1 编译错误 811
34.2.2 运行错误 813
第35章 自定义帮助 815
35.1 自定义帮助简介 816
35.2 编辑Word文档 816
35.3 制作帮助文件 821
35.4 建立主题索引帮助文件 825
35.5 用Delphi程序调用自定义帮助 829
第36章 程序打包及安装 833
36.1 程序打包 834
36.2 程序安装 848