《C++ Builder 5开发人员指南》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)Borland/Inprise公司著;梁志刚等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2000
  • ISBN:7111081153
  • 页数:645 页
图书介绍:

第1章 引言 1

1.1 本书内容 1

第一部分 使用C++Builder编程 1

1.2 本书约定 2

1.3 开发支持 2

第2章 C++Builder编程 3

2.1 集成开发环境概述 3

2.2 设计应用程序 3

2.3 理解VCL 3

2.3.1 属性 3

2.3.2 方法 4

2.3.3 事件 4

2.4 VCL中的对象、组件与控件 4

2.4.2 TPersistent分支 5

2.4.3 TComponent分支 5

2.4.1 TObject分支 5

2.4.4 TControl分支 6

2.4.5 TWinControl分支 6

2.4.6 TControl的共同属性 7

2.4.7 TControl通用标准事件 8

2.4.8 TWinControl的共同属性 8

2.4.9 TWinControl的通用标准事件 9

2.4.11 使用组件 10

2.4.10 创建应用程序用户界面 10

2.4.12 VCL标准组件 11

2.5 使用帮助对象 19

2.5.1 使用列表 19

2.5.2 使用串列表 19

2.5.3 Windows注册表和INI文件 23

2.6 开发应用程序 25

2.6.1 编辑代码 25

2.6.3 发布应用程序 26

2.6.2 调试应用程序 26

第3章 创建应用程序、组件和程序库 27

3.1 创建应用程序 27

3.1.1 Windows应用程序 27

3.1.2 程序设计模板 28

3.1.3 控制台应用程序 28

3.1.4 服务应用程序 28

3.2 创建程序包和DLL 32

3.3 在C++Builder中使用DLL 33

3.4 在C++Builder中创建DLL 33

3.5 创建包含VCL组件的DLL 34

3.6 链接DLL 36

3.7 编写数据库应用程序 36

3.8 创建分布式应用程序 36

3.8.1 使用TCP/IP的分布式应用程序 36

3.8.2 使用COM和DCOM的分布式应用程序 37

3.8.3 使用CORBA的分布式应用程序 38

3.8.4 分布式数据库应用程序 38

3.9 使用数据模块和远程数据模块 38

3.9.1 创建及编辑数据模块 38

3.9.2 存取窗体的数据模块 39

3.9.3 向应用程序服务器工程中加入远程数据模块 39

3.10 使用对象仓库 39

3.10.1 在工程中共享对象 39

3.10.2 在对象仓库中加入对象 39

3.10.3 在小组环境中共享对象 39

3.10.4 在工程中使用对象仓库的对象 40

3.10.5 使用工程模板 40

3.10.6 修改共享对象 40

3.10.7 指定一个缺省工程、新窗体以及主窗体 41

4.1.3 隐藏主窗体 42

4.1.2 加入其他窗体 42

第4章 开发应用程序用户界面 42

4.1 理解TApplication、TScreen和TForm 42

4.1.1 使用主窗体 42

4.1.4 工作在应用程序层 43

4.1.5 处理屏幕 43

4.1.6 管理布局 43

4.2 处理消息 44

4.3 窗体的更多细节 44

4.3.1 控制窗体何时驻留内存 44

4.3.2 给窗体传递其他参数 46

4.3.3 从窗体获取数据 46

4.4 重用组件和组件组 49

4.5 创建并使用组件模板 49

4.6 使用框架 50

4.6.1 创建框架 50

4.6.2 使用并修改框架 50

4.7 创建并管理菜单 51

4.6.3 共享框架 51

4.7.1 打开菜单设计器 52

4.7.2 创建菜单 53

4.7.3 在对象观察器中编辑菜单项 55

4.7.4 使用菜单设计器上下文菜单 56

4.7.5 使用菜单模板 57

4.7.6 将菜单保存为菜单模板 57

4.7.7 在运行时控制菜单项 58

4.7.8 合并菜单 58

4.7.9 引入资源文件 59

4.8 设计工具栏和酷栏 59

4.8.1 使用面板组件增加工具栏 59

4.8.2 使用工具栏组件增加工具栏 61

4.8.3 增加酷栏组件 62

4.8.6 隐藏和显示工具栏 63

4.8.4 响应点击 63

4.8.5 增加隐藏的工具栏 63

4.9 使用动作列表 64

4.9.1 动作对象 64

4.9.2 使用动作 65

4.9.3 预定义动作类 67

4.9.4 编写动作组件 68

第5章 应用控件 71

5.1 实现控件拖放操作 71

5.1.1 开始拖动操作 71

5.1.2 接受拖动项 71

5.1.3 放下项 72

5.1.4 终止拖动操作 72

5.1.5 通过拖动对象定制拖放操作 72

5.2.2 使控件成为一个可停靠子控件 73

5.2.3 控制子控件如何被停放 73

5.2 实现控件的拖动-停靠操作 73

5.2.1 使窗口控件成为一个停靠点 73

5.1.6 改变拖动鼠标指针 73

5.2.4 控制子控件如何取消停靠 74

5.2.5 控制子控件如何响应拖动-停靠操作 74

5.3 处理控件中的文本 74

5.3.1 设置文本对齐方式 75

5.3.2 在运行时增加滚动条 75

5.3.3 增加剪贴板对象 75

5.3.4 选择文本 76

5.3.5 选定全部文本 76

5.3.6 剪切、拷贝及粘贴文本 76

5.3.7 删除选定文本 76

5.3.10 处理OnPopup事件 77

5.3.8 禁用菜单项 77

5.3.9 提供弹出式菜单 77

5.4 在控件中加入图形 78

5.4.1 指定控件为属主绘制控件 78

5.4.2 给串列表增加图形对象 79

5.4.3 调整属主绘制项的大小 80

5.4.4 绘制各属主绘制项 81

第6章 使用图形和多媒体 82

6.1 图形编程概述 82

6.1.1 刷新屏幕 82

6.1.2 图形对象的样式 83

6.1.3 画布的通用属性和方法 83

6.1.4 使用Canvas对象的属性 84

6.1.5 使用Canvas的方法来绘制图形对象 87

6.1.6 在应用程序中处理多个绘图对象 89

6.1.7 在图形中绘制 93

6.1.8 加载和保存图形文件 95

6.1.9 使用剪贴板处理图形 96

6.1.10 拖引线示例 97

6.2 使用多媒体 101

6.2.1 将无声的视频剪辑加入应用程序 102

6.2.2 将声音和/或视频剪辑加入应用程序 103

第7章 编写多线程应用程序 105

7.1 定义线程对象 105

7.1.1 初始化线程 106

7.1.2 编写线程函数 106

7.1.3 编写清理代码 108

7.2 协调线程 108

7.2.1 避免同时访问 108

7.2.2 等待其他线程 110

7.4 调试多线程应用程序 111

7.3.2 开始和停止线程 111

7.3.1 重载缺省优先级 111

7.3 执行线程对象 111

第8章 异常处理 113

8.1 C++异常处理 113

8.1.1 异常处理的ANSI规定 113

8.1.2 异常处理语法 113

8.1.3 声明异常 114

8.1.4 发送异常 114

8.1.5 处理异常 117

8.1.6 异常规范 119

8.1.7 异常处理的构造和析构 120

8.1.8 未处理的异常 120

8.1.9 设置异常处理选项 120

8.2 Win32下的结构异常 121

8.2.1 结构异常的语法 121

8.2.3 异常过滤器 122

8.2.2 处理结构异常 122

8.2.4 在C++中混用结构异常 124

8.2.5 定义异常 125

8.2.6 引发异常 125

8.2.7 终止块 126

8.3 VCL异常处理 127

8.3.1 C++和VCL异常处理之间的差别 127

8.3.2 处理操作系统异常 128

8.3.3 处理VCL异常 128

8.3.4 VCL异常类 128

8.3.5 可移植性考虑 130

第9章 VCL的C++语言支持 131

9.1 C++和Object Pascal对象模型 131

9.1.1 对象本身和实例 131

9.1.2 C++Builder中VCL类的对象构造 132

9.1.3 在基类构造函数调用虚拟方法 134

9.1.4 对象析构 136

9.1.5 AfterConstruction和BeforeDestruction 137

9.1.6 类虚拟函数 137

9.2 Object Pascal数据类型和语言概念的支持 138

9.2.1 Typedefs 138

9.2.2 支持Object Pascal语言的类 138

9.2.3 Object Pascal语言的C++语言对应 138

9.2.4 动态数组 139

9.2.5 定义不同的类型 141

9.2.6 资源字符串 141

9.2.7 缺省参数 142

9.2.8 运行时类型信息 142

9.2.9 未映射的类型 143

9.2.10 关键字扩展 144

9.2.11 __declspec关键字扩展 145

第10章 使用包和组件 147

10.1 为什么使用包 147

10.2 运行时包 147

10.2.1 在应用程序中使用运行时包 147

10.2.2 动态装载包 148

10.2.3 决定使用哪个运行时包 148

10.2.4 定制包 148

10.3 设计时包 149

10.4 创建和编辑包 150

10.4.1 创建包 150

10.4.2 编辑现有的包 150

10.4.3 包源文件和工程选项文件 151

10.4.4 理解包的结构 152

10.4.5 编译包 152

10.5.3 包集文件 154

10.5.2 将包发布给其他开发者 154

10.5 发布包 154

10.5.1 发布使用包的应用程序 154

第11章 创建国际化的应用程序 156

11.1 国际化和本地化 156

11.1.1 国际化 156

11.1.2 本地化 156

11.2 国际化应用程序 156

11.2.1 应用程序代码 156

11.2.2 设计用户界面 160

11.2.3 分离资源 160

11.2.4 创建资源DLL 160

11.2.5 使用资源DLL 161

11.2.6 动态切换资源DLL 162

11.3 本地化应用程序 162

12.1 发布一般应用程序 163

第12章 发布应用程序 163

12.2 发布数据库应用程序 165

12.2.1 提供数据库引擎 165

12.2.1 多级分布式应用程序服务 166

12.3 发布Web应用程序 166

12.4 为各种主机环境编程 166

12.4.1 屏蔽分辨率和颜色浓度 167

12.4.2 字体 168

12.4.3 Windows版本 168

12.5 软件许可证要求 168

12.5.1 DEPLOY.TXT 168

12.5.2 README.TXT 169

12.5.3 No-nonsense许可协议 169

12.5.4 第三方的产品文档 169

13.1 使用数据库 171

13.1.1 数据库类型 171

第二部分 开发数据库应用程序 171

第13章 设计数据库应用程序 171

13.1.2 数据库安全 172

13.1.3 事务 173

13.1.4 数据字典 173

13.1.5 引用完整性、存储过程和触发器 174

13.2 数据库结构 174

13.2.1 可扩展性规划 175

13.2.2 一级数据库应用程序 176

13.2.3 二级数据库应用程序 176

13.2.4 多级数据库应用程序 177

13.3 设计用户接口 178

13.3.1 显示单条记录 178

13.3.2 显示多条记录 178

13.3.4 选择要显示的数据 179

13.3.3 分析数据 179

13.3.5 编写报表 180

第14章 开发一级与二级应用程序 181

14.1 基于BDE的应用程序 181

14.1.1 基于BDE(应用程序)结构 181

14.1.2 数据库连接 183

14.1.3 使用事务 183

14.1.4 缓存更新 186

14.1.5 创建及重组数据表 187

14.2 基于ADO的应用程序 187

14.2.1 基于ADO的应用程序结构 187

14.2.2 连接到ADO数据库 188

14.2.3 获取数据 188

14.2.4 创建并重组ADO数据库表 188

14.3.1 创建数据集 189

14.3 flat-file数据库应用程序 189

14.3.2 装载和存储数据 191

14.3.3 使用公文包模式 191

14.4 扩充为三级应用程序 192

第15章 创建多级应用程序 193

15.1 多级数据库模式优点 193

15.2 理解MIDAS技术 193

15.2.1 基于MIDAS的多级应用程序概述 194

15.2.2 客户端应用程序结构 194

15.2.3 应用程序服务器结构 195

15.2.4 选择连接协议 198

15.3 创建多级应用程序 199

15.4 创建应用程序服务器 199

15.4.1 设置远程数据模块 200

15.5 创建客户端应用程序 202

15.4.3 扩展应用程序服务器接口 202

15.4.2 为应用程序服务器创建一个数据提供者 202

15.5.1 连接应用程序服务器 203

15.5.2 管理服务器连接 205

15.5.3 调用服务器接口 205

15.6 在多级应用程序中管理事务 206

15.7 支持主/明细关系 206

15.8 支持远程数据模块的状态信息 207

15.9 编写MIDAS Web应用程序 208

15.9.1 将客户端应用程序以ActiveX控件形式分发 209

15.9.2 使用InternetExpress创建Web应用程序 209

15.9.3 使用XML代理 211

15.9.4 使用MIDAS页生成器创建Web页面 213

第16章 使用提供者组件 216

16.1 确定数据源 216

16.2 选择如何进行更新 216

16.3.1 指定出现在数据包里的字段 217

16.3.2 设置影响数据包的选项 217

16.3 控制包括在数据包里的信息 217

16.3.3 加入定制信息到数据包 218

16.4 响应客户端数据请求 219

16.5 响应客户端更新请求 219

16.5.1 在更新数据库前编辑delta包 220

16.5.2 影响更新如何被应用 220

16.5.3 屏显单独的更新 221

16.5.4 在提供者端解决更新错误 221

16.5.5 对不仅涉及单一数据表格的数据集应用更新 222

16.6 响应客户端产生的事件 222

16.7 处理服务器限制 222

第17章 管理数据库会话 224

17.1 使用一个session组件 224

17.1.1 使用缺省session 224

17.1.2 创建额外的session 225

17.1.3 为session命名 226

17.1.4 启动session 226

17.1.5 定制session的启动方式 227

17.1.6 指定缺省的数据库连接方式 227

17.1.7 创建、打开和关闭数据库连接 227

17.1.8 取消临时数据库连接 228

17.1.9 搜索数据库连接 228

17.1.10 取得有关session的信息 229

17.1.11 使用BDE别名 230

17.1.12 迭代一个session的数据库组件 231

17.1.13 指定Paradox目录位置 232

17.1.14 使用有口令保护Paradox和dBASE表 232

17.2 管理多个session 234

17.3 在数据模块中使用session组件 235

18.1.1 使用临时数据库组件 236

18.1.2 在设计时创建数据库组件 236

第18章 连接到数据库 236

18.1 理解永久和临时数据库组件 236

18.1.3 在运行时创建数据库组件 237

18.2 控制连接 237

18.2.1 关联数据库组件与session 238

18.2.2 指定一个BDE别名 238

18.2.3 设置BDE别名参数 239

18.2.4 控制服务器登录 239

18.2.5 连接到数据库服务器 240

18.2.6 连接到远程服务器时的特别考虑 240

18.2.7 关闭与数据库服务器的连接 241

18.2.8 关闭数据集但不关闭与服务器的连接 241

18.2.9 迭代数据库组件的数据集 241

18.5 从TDatabase组件中执行SQL语句 242

18.5.1 从TDatabase执行SQL语句 242

18.4 在数据模块中使用数据库组件 242

18.3 理解数据库与session组件的交互 242

18.5.2 执行参数化的SQL语句 243

第19章 理解数据集 245

19.1 什么是TDataSet 245

19.2 数据集类型 246

19.3 打开和关闭数据集 246

19.4 确定和设置数据集状态 247

19.4.2 浏览一个数据集 248

19.4.1 关闭数据集 248

19.4.3 允许编辑数据集 249

19.4.4 允许插入新的记录 250

19.4.5 允许对数据表做索引搜索和取范围 250

19.4.6 计算字段 250

19.4.7 过滤记录 251

19.4.8 更新记录 251

19.5 浏览数据集 251

19.5.1 使用First和Last方法 251

19.5.4 使用Eof和Bof属性 252

19.5.2 使用Next和Prior方法 252

19.5.3 使用MoveBy方法 252

19.5.5 标记并返回到记录位置 254

19.6 搜索数据集 255

19.6.1 使用Locate 255

19.6.2 使用Lookup 256

19.7 使用过滤器显示和编辑一个数据子集 256

19.7.1 打开和关闭过滤器 257

19.7.2 创建过滤器 257

19.7.3 设置过滤器属性 257

19.7.4 编写一个OnFilterRecord事件处理程序 258

19.7.5 设置过滤器选项 258

19.7.6 浏览过滤后的数据集记录 259

19.8 修改数据 260

19.8.1 编辑记录 260

19.8.3 删除记录 261

19.8.2 加入新的记录 261

19.8.4 把数据写入数据库 262

19.8.5 取消改动 262

19.8.6 修改整条记录 262

19.9 使用数据集事件 263

19.9.1 终止一个方法 263

19.9.2 使用OnCalcFields 264

19.10 使用基于BDE的数据集 264

19.10.1 基于BDE的功能概述 265

19.10.2 处理数据库和session连接 265

19.10.3 使用缓存更新 266

19.10.4 缓存BLOB 267

第20章 使用字段组件 268

20.1 理解字段组件 269

20.1.1 动态字段组件 269

20.2 创建永久字段 270

20.1.2 永久字段组件 270

20.4 定义新的永久字段 271

20.3 排列永久字段 271

20.4.1 定义一个数据字段 272

20.4.2 定义一个计算字段 272

20.4.3 编写计算字段的程序代码 273

20.4.4 定义一个查找字段 273

20.4.5 定义一个合计字段 274

20.4.6 删除永久字段组件 275

20.5 设置永久字段的属性和事件 275

20.5.1 在设计时设置显示和编辑属性 275

20.5.2 在运行时设置字段组件的属性 276

20.5.3 创建字段组件的属性集 276

20.5.5 删除关联属性 277

20.5.5 控制和屏蔽用户输入 277

20.5.4 关联数据集到字段组件 277

20.5.7 为数值、日期和时间字段使用缺省格式 278

20.5.8 处理事件 278

20.6 运行时使用字段组件的方法 279

20.7 显示、转换和存取字段值 279

20.7.1 在标准控件中显示字段组件值 279

20.7.2 转换字段值 280

20.7.3 使用缺省数据集属性存取字段值 281

20.7.4 使用数据集的Fields属性存取字段值 281

20.7.5 使用数据集的FieldByName方法存取方法 281

20.8 检查字段的当前值 282

20.9 设置字段的缺省值 282

20.10 使用限制 282

20.10.1 创建定制限制 282

20.10.2 使用服务器限制 282

20.11.1 显示ADT和数组字段 283

20.11 使用对象字段 283

20.11.2 使用ADT字段 284

20.11.3 使用数组字段 285

20.11.4 使用数据集字段 285

20.11.5 使用引用字段 286

第21章 使用数据表 287

21.1 使用数据表组件 287

21.2 设置数据表组件 287

21.2.1 指定数据库位置 287

21.2.2 指定数据表名 288

21.2.3 为本地数据表指定数据表类型 288

21.2.4 打开、关闭数据表 289

21.3 控制对数据表的读/写访问 289

21.4 搜索记录 290

21.5.2 使用IndexName指定索引 292

21.5.1 使用GetIndexNames方法取得可用的索引列表 292

21.5 排序记录 292

21.5.3 为SQL数据表指定排序顺序 293

21.5.4 检查索引的字段列表 294

21.6 使用数据子集 294

21.6.1 理解范围和过滤器的不同 294

21.6.2 创建和应用一个新的范围 295

21.6.3 修改范围 297

21.7 删除一个数据表中的所有记录 297

21.8 删除数据表 298

21.9 重命名数据表 298

21.10 创建数据表 298

21.11 从另一个数据表导入数据 299

21.12 使用TBatchMove 300

21.12.1 创建批移动组件 300

21.12.2 指定批移动模式 301

21.12.5 处理批移动错误 302

21.12.3 映射数据类型 302

21.12.4 执行批移动 302

21.13 链接到相同数据库表的同步数据表 303

21.14 创建主/明细表 303

21.15 使用嵌套数据表 304

第22章 使用查询 306

22.1 有效地使用查询 306

22.1.1 对桌面数据库开发者使用查询 306

22.1.2 对数据库服务器开发者使用查询 307

22.2 使用查询组件能够存取什么数据库 307

22.3 使用查询组件概述 307

22.4 指定要执行的SQL语句 308

22.4.1 在设计时指定SQL属性 309

22.4.2 在运行时指定SQL语句 309

22.5 设置参数 310

22.5.2 在运行时提供参数 311

22.5.1 在设计时提供参数 311

22.5.3 使用数据源绑定参数 312

22.6 执行查询 312

22.6.1 在设计时执行查询 313

22.6.2 在运行时执行查询 313

22.7 准备查询 314

22.8 取消查询准备以释放资源 314

22.9 创建异类查询 314

22.10 提高查询性能 315

22.11 使用结果集 315

22.11.1 允许编辑结果集 315

22.11.2 对可用结果集的本地SQL要求 316

22.11.3 对可用结果集的远程服务器SQL要求 316

22.11.4 更新可用结果集的限制 316

22.11.5 更新只读结果集 316

23.1 何时使用存储过程 317

第23章 使用存储过程 317

23.2 使用存储过程 318

23.2.1 创建存储过程组件 318

23.2.2 创建存储过程 318

23.2.3 准备和执行存储过程 319

23.2.4 使用返回结果集的存储过程 319

23.2.5 使用以参数返回数据的存储过程 320

23.2.6 使用在数据上执行操作的存储过程 321

23.3 理解存储过程的参数 323

23.3.1 使用输入参数 323

23.3.2 使用输出参数 323

23.3.3 使用输入/输出参数 324

23.3.4 使用结果参数 324

23.3.5 在设计时访问参数 324

23.3.7 在运行时创建参数 325

23.3.6 在设计时设置参数信息 325

23.3.8 绑定参数 326

23.4 在设计时查看参数信息 326

23.5 使用Oracle重载存储过程 327

第24章 使用ADO组件 328

24.1 ADO组件概况 328

24.2 连接到ADO数据仓库 329

24.2.1 使用TADOConnection连接到数据仓库 329

24.2.2 调整连接 331

24.2.3 列出数据表和存储过程 332

24.2.4 使用(连接)事务 334

24.3 使用ADO数据集 334

24.3.1 所有ADO数据集组件的共有特点 335

24.3.2 使用TADODataSet 339

24.3.3 使用TADOTable 340

24.3.4 使用TADOQuery 341

24.3.5 使用TADOStoredProc 342

24.4 执行命令 344

24.4.1 指定命令 344

24.4.2 使用Execute方法 345

24.4.3 取消命令 345

24.4.4 使用命令获取结果集 345

24.4.5 处理命令参数 346

第25章 创建和使用客户端数据集 347

25.1 使用客户端数据集处理数据 347

25.1.1 在客户端数据集中浏览数据 347

25.1.2 限制记录显示 347

25.1.3 描述主/明细关系 348

25.1.4 限制数据值 348

25.1.5 设置只读数据 348

25.1.6 编辑数据 349

25.1.7 排序和索引 350

25.1.8 表示计算值 351

25.1.9 使用被维护的合计 352

25.1.10 加入特定应用程序信息到数据 354

25.2 从另一个数据集复制数据 354

25.2.1 直接指定数据 354

25.2.2 复制一个客户端数据集指针 355

25.3 使用带有数据提供者的客户端数据集 355

25.3.1 指定数据提供者 355

25.3.2 从应用程序服务器得到参数 356

25.3.3 传送参数给应用程序服务器 356

25.3.4 重载应用程序服务器上的数据集 357

25.3.5 从应用程序服务器请求数据 357

25.3.6 处理限制 358

25.3.7 更新记录 359

25.3.9 使用定制事件与提供者通信 361

25.3.8 刷新记录 361

25.4 使用带有flat-file数据的客户端数据集 362

25.4.1 创建新的数据集 362

25.4.2 从文件或数据流中装载数据 362

25.4.3 合并更新到数据 363

25.4.4 存储数据到文件或数据流 363

第26章 使用缓存更新 364

26.1 决定何时使用缓存更新 364

26.2 使用缓存更新概述 364

26.2.1 允许和禁用缓存更新 365

26.2.2 提取记录 365

26.2.3 应用缓存更新 366

26.2.4 取消未定的缓存更新 368

26.2.5 撤消删除缓存记录 369

26.2.6 指定缓存中的可视记录 369

26.2.7 检查更新状态 370

26.3 使用更新对象来更新数据集 371

26.3.1 为数据集指定UpdateObject属性 371

26.3.2 为更新组件创建SQL语句 372

26.3.3 执行更新语句 375

26.3.4 使用数据集组件更新数据集 377

26.4 更新只读结果集 377

26.5 控制更新处理 378

26.5.1 决定是否需要控制更新处理 378

26.5.2 创建一个OnUpdateRecord事件处理程序 378

26.6 处理缓存更新错误 379

26.6.1 引用要应用更新的数据集 380

26.6.2 指明产生错误的更新类型 380

26.6.3 指定要执行的动作 380

26.6.4 使用错误消息文本 381

26.6.5 访问字段的OldValue、New Value和Cur Value属性 381

27.1 使用通用的数据控件特征 383

第27章 使用数据控件 383

27.1.2 编辑并更新数据 384

27.1.1 关联数据控件与数据集 384

27.1.3 禁止和允许数据显示 385

27.1.4 刷新数据显示 385

27.1.5 允许鼠标、键盘及定时器事件 386

27.2 使用数据源 386

27.2.1 使用TDataSource属性 386

27.2.2 使用TDataSource事件 387

27.3 显示单个字段的控件 388

27.3.1 以标签显示数据 388

27.3.2 在编辑框中显示和编辑字段 388

27.3.3 在备注控件中显示和编辑文本 388

27.3.5 显示并且编辑在图像控件中的图形 389

27.3.6 在列表框和组合框中显示和编辑数据 389

27.3.4 在rich edit备注控件中显示和编辑文本 389

27.3.7 在查找列表和组合框中显示和编辑数据 390

27.3.8 使用复选框处理布尔型字段值 392

27.3.9 使用单选组控件限制字段值 392

27.4 使用TDBGrid查看与编辑数据 393

27.4.1 使用缺省状态的网格控件 393

27.4.2 创建定制网格 394

27.4.3 显示ADT和数组字段 397

27.4.4 设置网格选项 398

27.4.5 在网格中编辑 399

27.4.6 在设计时对列重排序 400

27.4.7 在运行时对列重排序 400

27.4.8 在运行时响应用户动作 400

27.5 创建包含其他数据感知控件的网格 401

27.6 导航和操作记录 402

27.6.1 选择显示浏览器按钮 402

27.6.3 多个数据集使用一个浏览器 403

27.6.2 显示飞出式帮助 403

第28章 使用决策支持组件 405

28.1 概述 405

28.2 关于crosstabs 406

28.2.1 一维的crosstabs 406

28.2.2 多维的crosstabs 406

28.3 使用决策支持组件指南 406

28.4 使用决策支持组件的数据集 407

28.4.1 使用TQuery或TTable创建决策数据集 407

28.4.2 使用Decision Query编辑器创建决策数据集 408

28.4.3 决策查询的属性 408

28.5 使用决策立方 408

28.5.1 决策立方的属性和事件 408

28.6 使用决策源 409

28.5.2 使用Decision Cube编辑器 409

28.7 使用决策控制轴 410

28.8 创建和使用决策网络 410

28.8.1 创建决策网络 411

28.8.2 使用决策网格 411

28.8.3 决策网格属性 411

28.9 创建和使用决策图 412

28.9.1 创建决策图 412

28.9.2 使用决策图 412

28.9.3 决策图显示 413

28.9.4 定制决策图 413

28.10 运行时的决策支持组件 415

28.10.1 运行时的决策控制轴 415

28.11.2 设置维状态 416

28.11 决策支持组件和内存控制 416

28.11.1 设置最大维、合计及单元 416

28.10.3 运行时的决策图 416

28.10.2 运行时的决策网格 416

28.11.3 使用分页维 417

第三部分 编写分布式应用程序 419

第29章 编写CORBA应用程序 419

29.1 CORBA应用程序概述 419

29.1.1 了解存根和框架 420

29.1.2 使用聪明代理 420

29.1.3 激活服务器应用程序 421

29.1.4 动态绑定接口调用 421

29.2 编写CORBA服务程序 421

29.2.1 定义对象的接口 421

29.2.2 使用CORBA服务器向导 422

29.2.3 从IDL文件生成存根和框架 422

29.2.4 使用CORBA对象的实现向导 423

29.2.5 实现CORBA对象 424

29.2.6 改变CORBA接口 426

29.2.7 注册服务器接口 427

29.3 编写CORBA客户程序 427

29.3.1 使用存根 427

29.3.2 使用动态调用接口 428

29.4 测试CORBA服务器 429

29.4.1 建立测试工具 429

29.4.2 记录和运行测试的脚本 430

第30章 创建Internet服务器应用程序 431

30.1 术语和标准 431

30.1.1 统一资源定位符URL的构成 431

30.1.2 HTTP请求报文头信息 432

30.2 HTTP服务器的活动 432

30.2.1 构造客户请求 432

30.2.2 处理客户请求 432

30.3 Web服务器应用程序 433

30.3.1 Web服务器应用程序的分类 433

30.2.3 响应客户请求 433

30.3.2 创建Web服务器应用程序 434

30.3.3 Web模块 434

30.3.4 Web应用程序对象 435

30.4 Web服务器应用程序的结构 435

30.5 Web派发器 435

30.5.1 为派发器添加处理项 436

30.5.2 派发请求报文 436

30.6 处理项 436

30.6.1 确定处理项的触发时间 436

30.6.2 利用处理项响应客户请求 437

30.7 访问客户请求的信息 438

30.7.1 包含了请求报文头信息的属性 438

30.7.2 HTTP请求报文的内容 439

30.8 创建HTTP响应报文 439

30.8.2 设置报文的内容 440

30.8.1 填写响应报文的头 440

30.8.3 发送应答信息 441

30.9 生成响应报文的内容 441

30.10 在响应报文中使用数据库信息 444

30.10.1 给Web模块添加一个会话 444

30.10.2 用HTML表示数据库的信息 444

30.11 调试服务器应用程序 446

30.11.1 调试ISAPI和NSAPI应用程序 446

30.11.2 调试CGI和Win-CGI应用程序 448

第31章 使用套接字 450

31.1 实现服务 450

31.1.1 理解服务协议 450

31.1.2 服务和端口 450

31.3.1 说明主机 451

31.3 说明套接字 451

31.2.3 服务器连接 451

31.2.2 侦听连接 451

31.2 套接字连接的类型 451

31.2.1 客户连接 451

31.3.2 使用端口 452

31.4 使用套接字组件 452

31.4.1 使用客户套接字 452

31.4.2 使用服务器套接字 453

31.5 响应套接字的事件 454

31.5.1 出错事件 454

31.5.2 客户事件 454

31.5.3 服务器事件 455

31.6 通过套接字连接读写数据 455

31.6.1 非阻塞连接 455

31.6.2 阻塞连接 456

第四部分 开发基于COM的应用程序 459

第32章 COM技术概述 459

32.1.1 COM接口 460

32.1 COM应用程序的构成 460

32.1.2 COM服务器 461

32.1.3 COM客户 463

32.2 COM扩展 464

32.2.1 自动化服务器 465

32.2.2 活动服务器页 465

32.2.3 ActiveX控件 466

32.2.4 活动文档 466

32.2.5 事务对象 466

32.2.6 类型库 467

32.3 使用向导实现COM对象 469

第33章 使用类型库 473

33.1 类型库编辑器 473

33.1.1 类型库编辑器的部件 473

33.1.2 类型库元素 477

33.1.3 使用类型库编辑器 478

33.2 发布类型库 484

第34章 创建COM客户程序 486

34.1 引入类型库信息 486

34.1.1 使用Import Type Library对话框 487

34.1.2 使用Import ActiveX对话框 487

34.1.3 引入类型库信息后生成的代码 488

34.2 控制引入的对象 489

34.2.2 使用组件包装器 489

34.2.2 使用数据感知的Active X控件 490

34.2.3 使用Microsoft Word打印文档的例子 491

34.2.4 编写基于类型库定义的客户代码 493

34.3 为没有类型库的服务器创建客户程序 495

35.1 创建COM对象概述 496

35.2 设计COM对象 496

第35章 创建简单的COM服务器程序 496

35.3 使用COM对象向导 497

35.4 使用自动化对象向导 497

35.5 指定ATL选项 500

35.6 定义COM对象接口 500

35.6.1 为对象接口添加属性 501

35.6.2 给对象接口添加方法 501

35.6.3 提供客户事件 501

35.7 自动化接口 502

35.7.1 双向接口 502

35.7.2 派发接口 503

35.7.3 自定义接口 503

35.8 调度数据 503

35.8.1 自动化兼容的类型 503

35.9.1 注册进程内服务器 504

35.9 注册COM对象 504

35.8.3 自定义调度 504

35.8.2 自动化调度的类型限制 504

35.9.2 注册进程外服务器 505

35.10 调试应用程序 505

第36章 创建活动服务器页 506

36.1 创建活动服务器对象 506

36.1.1 使用ASP本征 507

36.1.2 为进程内或进程外服务器创建ASP 510

36.2 注册活动服务器对象 510

36.2.1 注册一个进程内服务器 510

36.2.2 注册一个进程外服务器 510

36.3 测试和调试活动服务器页应用程序 510

第37章 创建ActiveX控件 512

37.1 创建ActiveX控件概述 512

37.2 设计ActiveX控件 513

37.3 从VCL控件生成ActiveX控件 514

37.4 创建基于VCL窗体的ActiveX控件 515

37.5 ActiveX控件的许可证控制 515

37.6 自定义ActiveX控件接口 516

37.6.1 添加附加的属性、方法和事件 517

37.6.2 使简单数据与类型库的绑定 518

37.7 为ActiveX控件创建属性页 520

37.7.1 创建属性页 520

37.7.2 向属性页添加控件 520

37.7.3 把属性页与ActiveX控件的属性关联 521

37.7.4 把属性页与ActiveX控件关联 521

37.8 注册ActiveX控件 522

37.9 测试ActiveX控件 522

37.10 在网络上发布ActiveX控件 522

第38章 创建MTS或COM+对象 524

38.1 理解事务对象 524

38.2.1 访问对象的前后关系 525

38.2 管理资源 525

38.2.2 及时激活 526

38.2.3 资源共享 526

38.2.4 对象共享 529

38.3 MTS和COM+的事务支持 530

38.3.1 事务的特性 530

38.3.2 状态相关和状态无关对象 531

38.3.3 影响事务如何结束 531

38.3.4 初始化事务 532

38.3.5 事务超时 534

38.4 基于角色的安全性 534

38.5 创建事务对象概述 535

38.6 使用事务对象向导 535

38.7 生成COM+事件 537

38.7.1 使用事件对象向导 537

38.8 传递对象指针 538

38.7.2 使用COM+事件对象激发事件 538

38.9 调试和测试事务对象 539

38.10 安装事务对象 539

38.11 管理事务对象 540

第五部分 创建定制组件 541

第39章 组件创建概述 541

39.1 可视组件库 541

39.2 组件和类 542

39.3 如何创建组件 542

39.3.1 修改已有的控件 542

39.3.2 创建窗口控件 543

39.3.3 创建图形控件 543

39.3.4 子类Windows控件 543

39.3.5 创建不可视组件 543

39.4 组件内部有什么 543

39.4.2 属性、方法和事件 544

39.4.1 消除相关性 544

39.4.3 图形封装 545

39.4.4 注册 545

39.5 创建新组件 545

39.5.1 使用组件向导 546

39.5.2 手工创建组件 547

39.6 测试未安装的组件 549

39.7 测试已安装的组件 551

39.8 安装组件到组件面板 551

39.8.1 定位组件文件 552

39.8.2 添加组件 552

第40章 组件开发员的面向对象编程 553

40.1 定义新类 553

40.1.1 派生新类 553

40.3 控制访问 554

40.2 祖先、后代和类层次结构 554

40.1.2 声明新组件类 554

40.3.1 隐藏实现细节 555

40.3.2 定义组件开发员接口 557

40.3.3 定义运行时接口 557

40.3.4 定义设计时接口 557

40.4 派发方法 557

40.4.1 常规方法 558

40.4.2 虚拟方法 558

40.5 抽象类成员 559

40.6 类与指针 559

第41章 创建属性 560

41.1 为什么要创建属性 560

41.2 属性的类型 560

41.4 定义属性 561

41.4.1 属性声明 561

41.3 发布继承的属性 561

41.4.2 内部数据存储 562

41.4.3 直接访问 562

41.4.4 访问方法 562

41.4.5 缺省属性值 564

41.5 创建数组属性 565

41.6 存储和载入属性 565

41.6.1 使用存储-载入机制 566

41.6.2 指定缺省值 566

41.6.3 决定存储内容 567

41.6.4 载入后的初始化 567

41.6.5 存储和载入未发布的属性 567

42.1.1 事件是closure 569

42.1.2 事件是属性 569

第42章 创建事件 569

42.1 什么是事件 569

42.1.3 事件类型是closure类型 570

42.1.4 事件处理程序是可选的 570

42.2 实现标准事件 571

42.2.1 标识标准事件 571

42.2.2 使事件可见 571

42.3.1 触发事件 572

42.3.2 定义处理程序类型 572

42.3 定义你自己的事件 572

42.2.3 改变标准的事件处理 572

42.3.3 声明事件 573

42.3.4 调用事件 573

第43章 创建方法 575

43.1 避免相关性 575

43.2 命名方法 575

43.5 声明方法 576

43.4 虚拟方法 576

43.3.1 应为public的方法 576

43.3 保护方法 576

43.3.2 应为protected的方法 576

第44章 在组件中使用图形 578

44.1 图形概述 578

44.2 使用画布 579

44.3 使用图片 579

44.3.1 使用图片、图形或画布 579

44.3.2 载入和存储图形 580

44.3.3 处理调色板 580

44.4 幕后位图 581

44.4.1 创建和管理幕后位图 581

44.4.2 拷贝幕后位图 581

44.5 响应改变 581

45.1 理解消息处理系统 583

45.1.1 Windows消息中有什么 583

第45章 处理消息 583

45.1.2 派发消息 584

45.2 修改消息处理 584

45.2.1 重载处理器方法 584

45.2.2 使用消息参数 585

45.2.3 屏蔽消息 585

45.3 创建新的消息处理器 586

45.3.1 定义自己的消息 586

45.3.2 声明一个新的消息处理方法 587

第46章 使组件在设计时可用 588

46.1 注册组件 588

46.1.1 声明Register函数 588

46.1.2 编写Register函数 588

46.2 添加组件面板位图 590

46.3 为你的组件提供帮助 590

46.4.1 派生属性编辑器类 592

46.4 添加属性编辑器 592

46.4.2 将属性作为文本进行编辑 593

46.4.3 将属性作为整体进行编辑 593

46.4.4 指定编辑器特性 594

46.4.5 注册属性编辑器 594

46.5 添加组件编辑器 595

46.5.1 向上下文菜单添加项目 595

46.5.2 改变双击时的行为 596

46.5.3 添加剪贴板格式 597

46.5.4 注册组件编辑器 597

46.6 属性范畴 598

46.6.1 一次注册一个属性 598

46.6.2 一次注册多个属性 598

46.6.3 属性范畴类 598

46.6.4 使用IsPropertyInCategory函数 599

46.7 将组件编译成软件包 599

46.8 解决定制组件问题 600

第47章 修改已有的组件 601

47.1 创建和注册该组件 601

47.2 修改组件类 602

47.2.1 重载构造函数 602

47.2.2 指定新的缺省属性值 603

第48章 创建图形组件 604

48.1 创建和注册组件 604

48.2 发布继承的属性 605

48.3 添加图形能力 605

48.3.1 决定画什么 605

48.3.2 重载构造函数和析构函数 606

48.3.3 发布笔和刷子 607

48.3.4 绘制组件图像 609

48.3.5 调整形状绘制 610

49.1 创建和注册组件 612

第49章 定制网格 612

49.3 修改初始值 613

49.2 发布继承的属性 613

49.4 重定义单元大小 614

49.5 填充单元 615

49.6 定位月和年份 619

49.7 定位日期 620

49.7.1 移动选择 620

49.7.2 提供OnChange事件 620

49.7.3 排除空白单元 621

第50章 创建数据感知控件 622

50.1 创建数据浏览控件 622

50.1.1 创建和注册组件 622

51.1 定义组件接口 623

50.1.2 创建只读的控件 623

50.1.3 添加数据链接 625

50.1.4 响应数据修改 627

50.2 创建数据编辑控件 627

50.2.1 修改FReadOnly的缺省值 628

50.2.2 处理鼠标按下和键盘按下消息 628

50.2.3 更新字段数据链接类 629

50.2.4 修改Change方法 630

50.2.5 更新数据集 630

第51章 创建对话框组件 632

51.2 创建和注册组件 632

51.3 创建组件接口 633

51.3.1 包含窗体单元文件 633

51.3.2 添加接口属性 634

51.3.3 添加Execute方法 634

51.4 测试组件 636

附录 ANSI具体实现标准 637