第1章 开发MDI应用程序 3
1.1 MDI概述 3
1.1.1 什么是MDI 3
1.1.2 MDI框架窗口 3
1.1.3 框架 3
第一篇 用户界面技术 3
1.1.4 客户区 4
1.1.5 MDI Sheet 5
1.1.6 工具条 5
1.2 建立MDI框架窗口 5
1.3 使用菜单 6
1.4 使用Sheet 7
1.4.1 打开Sheet 7
1.4.2 列出所打开的Sheet 7
1.4.4 Sheet的最大化 8
1.4.5 关闭Sheet 8
1.4.3 排列Sheet 8
1.5 提供MicroHelp 9
1.5.1 定义菜单项的MicroHelp 9
1.5.2 定义对象的MicroHelp 9
1.6 提供工具条 11
1.6.1 工具条 11
1.6.2 加入工具条的第一步 13
1.6.3 加入工具条的第二步 15
1.6.4 相关属性的设置 17
1.6.5 工具条的使用 18
1.7 调整客户区 19
第2章 管理窗口实例 22
2.1 什么是窗口实例 22
2.2 声明窗口实例变量 22
2.2.1 打开一个实例 23
2.2.2 关闭一个实例 23
2.3 使用窗口数组 23
2.4 引用继承中的实体 25
3.1.1 术语 27
第3章 标签的实现 27
3.1.2 标签页 28
3.2 定制标签控件 29
3.2.1 标签的排列方式 30
3.2.2 标签标识 31
3.3 在脚本中使用标签控件 32
3.3.1 引用标签页 32
3.3.2 引用标签页上的控件 34
3.3.3 打开、关闭及隐藏标签页 34
3.3.4 跟踪标签页 35
3.3.5 只创建所需标签页 37
3.3.6 标签控件事件 37
第4章 列表构造技术 39
4.1 使用列表框 39
4.1.1 创建列表框和PictureListBox 39
4.1.2 添加列表框和PictureListBox的列表项 39
4.1.3 在PictureListBox中添加图像 40
4.2 使用下拉式列表框 41
4.2.1 创建下拉式列表框和DropDownPictureListBox 41
4.2.2 添加下拉式列表框和DropDownPictureListBox的列表项 41
4.2.3 在DropDownPictureListBox中加入图像 42
4.2.4 删除PictureListBox或DropDownPictureListBox中的图像 42
4.2.5 实例 43
4.3 使用ListView 44
4.3.1 创建ListView 44
4.3.2 加入ListView列表项 45
4.3.3 向ListView中加入图标 46
4.3.4 删除ListView项及图标 48
4.3.5 使用报表视图 48
第5章 使用TreeView控件 51
5.1 TreeView控件 51
5.1.2 TreeView项的数据来源 52
5.1.3 TreeView项的图标 52
5.1.1 TreeView项的层次 52
5.1.5 用户交互方式 53
5.2 生成TreeView项 53
5.1.4 TreeView的外观 53
5.2.1 插入项目函数 54
5.2.2 插入根级项目 55
5.2.3 插入根级以下的项目 56
5.3 管理TreeView项 58
5.3.1 删除项目 59
5.3.2 重命名项目 59
5.3.3 通过拖拽移动项目 60
5.3.4 对项目进行排序 63
5.4 管理TreeView图标 64
5.4.1 图标列表及属性 64
5.4.2 生成图标列表 65
5.4.3 使用覆盖图标 66
5.5 利用数据窗口生成TreeView 67
第6章 拖拽技术 70
6.1 概述 70
6.2.1 拖拽属性 71
6.2.2 拖拽函数 71
6.2 拖拽属性、事件及函数 71
6.3 识别拖动控件 72
7.1.1 为开发者提供联机帮助 73
7.1 为开发者提供联机帮助 73
第7章 提供联机帮助 73
7.1.2 为用户自定义函数创建上下文有关的帮助 74
7.2 为最终用户提供联机帮助 75
7.2.1 调用Windows帮助 75
7.2.2 为Windows环境创建上下文帮助 75
第二篇 数据存取技术 79
第8章 事务对象 79
8.1 事务对象介绍 79
8.1.1 事务对象属性 80
8.1.2 Powersoft数据库接口及相应的事务对象属性 80
8.2 使用事务对象 83
8.2.1 事务的基本概念 83
8.2.2 默认的事务对象——SQLCA 84
8.2.3 设置事务对象 85
8.2.4 从外部文件取值设置事务对象 85
8.2.5 与数据库连接 86
8.2.6 预览连接 86
8.2.7 关闭数据库连接 88
8.2.8 为多数据库连接定义事务对象 88
8.2.9 SQL语句的错误处理 91
8.2.10 数据库事务对象共享 91
8.3 利用事务对象调用存储过程 92
8.4 DBMS支持的存储过程特性 99
9.2 数据窗口对象与数据窗口控件的连接 101
9.1 有关数据窗口对象 101
9.2.1 使用数据窗口对象 101
第9章 数据窗口技术 101
9.2.2 数据窗口命名 103
9.2.4 运行时改变连接的数据窗口对象 104
9.3 访问数据库 104
9.2.3 修改数据窗口对象 104
9.3.1 为数据窗口对象设置事务对象 105
9.3.2 检索和更新数据 106
9.5 在数据窗口中操纵数据 109
9.5.1 数据窗口控件如何管理数据 109
9.4 装入外部数据 109
9.5.2 访问Edit控件中的文本 110
9.5.3 操纵Edit控件中的文本 111
9.5.4 ItemChanged事件脚本 111
9.5.5 ItemError事件脚本 112
9.5.6 访问数据窗口的数据项 112
9.5.7 其他数据窗口有关函数 113
9.6 存取数据窗口对象属性 113
9.7 处理数据窗口的运行错误 114
9.8 数据库的更新 115
9.8.1 数据窗口控件如何更新数据库 115
9.8.2 在程序中改变行和列的状态 116
9.9 创建报表 117
9.9.1 设计数据窗口对象 117
9.9.2 打印报表 118
9.10 使用嵌套报表 118
9.11 使用Crosstab 119
9.12 生成HTML 121
9.12.1 几种生成技术 121
9.12.2 显示控制 124
9.12.3 调用SaveAs函数 125
9.12.4 以HTML Form的形式显示数据窗口对象 126
第10章 动态数据窗口 131
10.1 修改数据窗口对象 131
10.2.1 Grcate函数 132
10.2.2 数据窗口对象源代码的定义 132
10.2 创建数据窗口对象 132
10.3 提供查询功能 134
10.3.1 查询模式的工作方式 134
10.3.2 查询模式的使用方法 135
11.1.1 数据存储的概念 138
11.1 数据存储概述 138
11.1.2 数据存储的功能 138
第11章 数据存储 138
11.1.3 数据存储方法 139
11.1.4 不支持交互信息输入 139
11.2 使用数据存储 140
11.3 使用定制的数据存储对象 141
11.4 用数据存储访问并操纵数据 143
11.5 信息共享 145
11.6 举例 146
第12章 图表处理 150
12.1 改变图表属性 150
12.1.1 图表的显示属性 151
12.1.2 图表显示属性的引用 151
12.2 访问数据属性 152
12.3 ObjectAtPointer函数 155
12.4 使用图表控件 157
第13章 数据管道 160
13.1 创建所需的对象 160
13.1.1 创建管道对象 161
13.1.2 创建支撑用户对象 162
13.1.3 创建窗口 164
13.2 初始化操作 165
13.3 启动管道操作 167
13.3.1 启动管道 167
13.3.2 管道监控 168
13.3.3 终止管道运行 170
13.4.1 使用管道错误数据窗口 171
13.4 处理行错误 171
13.3.4 向数据库提交更新操作 171
13.4.2 修复错误行 172
13.4.3 放弃错误行 173
13.5 结束操作 173
第三篇 程序实现技术 177
第14章 DDE实现技术 177
14.1 DDE介绍 177
14.2 客户和服务器 177
14.3 DDE函数和事件 178
14.3.1 DDE客户函数 178
14.3.2 DDE客户事件 178
14.3.3 DDE服务器函数 178
14.3.4 DDE服务器事件 179
第15章 OLE实现技术 180
15.1 PowerBuilder对OLE的支持 180
15.2 窗口中的OLE控件 181
15.2.1 OLE控件包容器的特征 181
15.2.2 定义OLE控件 182
15.3.1 设置OLE控件 185
15.3.2 在画板中激活对象 185
15.3 OLE控件及可插入对象 185
15.3.3 改变控件中的对象 186
15.3.4 用户如何与OLE控件交互 187
15.3.5 链接与嵌入 187
15.3.6 即席激活和离席激活 188
15.3.7 即席激活方式下的菜单 189
15.3.8 在OLE控件中修改对象 190
15.4 OLE定制控件 193
15.4.1 设置OLE定制控件 193
15.4.2 OCX编程 194
15.5 可编程OLE对象 196
15.5.1 OLEObject对象类型 197
15.5.2 OLE自动化方案 199
15.6 在脚本中使用OLE对象 202
15.6.1 OLE自动化接口 202
15.6.2 自动化及Any数据类型 207
15.6.3 使用高效的OLEObject变量 207
15.6.4 错误处理 208
15.6.5 创建热链接 210
15.6.6 底层访问OLE对象 211
15.7 操纵OLE的高级方法 211
15.7.1 OLE存储的结构 212
15.7.2 存储及流的对象类型 213
15.7.3 打开及保存OLE存储 213
15.7.4 打开流 217
15.7.5 使用OLE存储的策略 220
16.1 使用运行时自动化服务器 222
16.1.1 自动化服务器介绍 222
第16章 PowerBuilder运行时自动化服务器 222
16.1.2 访问PowerBuilder用户对象的三种方法 223
16.2.1 创建类用户对象 225
16.2.2 建立对象的运行库 225
16.2 用户对象作为自动化服务器 225
16.2.3 注册对象 226
16.2.4 编写客户代码 227
16.3 PowerBuilder作为自动化服务器 228
16.3.1 定义所需访问的对象 228
16.3.2 生成运行库 229
16.3.3 编写客户代码 229
16.4 创建并使用命名服务器 231
16.4.1 注册服务器 231
16.4.2 编写客户代码 232
16.5 通过自动化访问远程对象 233
16.6.1 GUID、CLSID和ProgID 235
16.6.2 对象信息存储地点 235
16.6 用户对象及注册 235
16.6.3 创建注册信息 237
16.7 分发自动化服务器应用 240
16.8 PowerBuilder.Applicationa服务器对象 240
第17章 在数据窗口中使用OLE 242
17.1 数据窗口对OLE的支持 242
17.2 OLE对象及OLE显示风格 243
17.2.1 在数据窗口中加入OLE对象 243
17.2.2 使用OLE显示风格 244
17.2.3 预览数据窗口 245
17.2.4 定义OLE对象数据 245
17.2.5 属性窗口中的附加设置 246
17.2.6 在事件程序中操纵OLE对象 247
17.3 在数据窗口中使用OLE列 249
17.3.1 创建一个OLE列 249
17.3.2 预览数据窗口列 252
17.3.3 在应用程序中使用OLE列 253
18.1 外部函数的使用 255
18.1.1 外部函数的声明 255
第18章 增加扩展处理功能 255
18.1.2 外部函数声明示例 256
18.1.3 传递参数 257
18.2 在Unix上调用外部函数及程序 259
18.2.1 调用外部函数 259
18.2.2 运行其他程序 260
18.3 发送窗口消息 260
18.3.2 触发PowerBuilder事件 261
18.4 消息对象 261
18.3.1 Post和Send函数 261
18.5 上下文信息 262
18.5.1 上下文信息服务 263
18.5.2 关键字服务 266
18.5.3 Internet服务 267
18.6 使用实用函数管理信息 269
第四篇 分布式应用技术 273
第19章 PowerBuilder环境下的分布计算 273
19.1 为何采用分布式计算 273
19.2 分布式应用的体系结构 274
19.2.1 服务器应用 275
19.2.2 客户应用 275
19.2.3 通信驱动程序 277
19.3 设计分布式应用的指导性原则 277
19.4 分布式应用的开发与测试 279
19.5 分布式计算及Word Wide Web 279
20.1 创建用户界面 280
20.2 与服务器连接 280
第20章 客户应用的开发 280
20.3 激活远程对象函数 281
20.4 生成代理对象 284
20.5 处理通信错误 285
20.5.1 编写连接对象的Error事件脚本 286
20.5.2 编写应用对象的SystemError事件脚本 286
20.6 管理程序变量空间 287
20.7 使用ConnectionInfo对象 287
20.8 分发客户应用 288
21.2 管理客户连接 289
21.1 创建用户界面 289
21.2.1 监听客户连接 289
第21章 服务器应用的开发 289
21.2.2 处理客户请求 291
21.3 建立远程对象 291
21.3.1 编写用户对象方法 292
21.3.2 设置远程对象 293
21.4 数据库存取 294
21.4.1 执行检索操作 294
21.4.2 数据库更新 296
21.4.3 数据库事务共享 302
21.5 使用共享对象 303
21.5.1 共享对象的工作原理 303
21.5.2 执行过程 304
21.6 处理异步请求 307
21.7 向客户推送消息 307
21.8 避免死锁 308
21.8.1 死锁产生的原因 308
21.8.2 如何避免死锁 309
21.9 分发服务器应用 310
第22章 分布式应用的故障测试 311
22.1 关于测试分布式应用 311
22.2 用Local驱动程序测试 311
22.3 在本地使用通信驱动程序测试 312
22.4 使用跟踪功能 313
第23章 开发多平台应用程序 315
23.1 交叉平台设计策略 315
23.2 在多平台环境下开发和分发 315
23.2.1 在不同平台之间移动和共享文件 315
23.2.2 PowerBuilder库文件 316
23.2.3 图像文件 316
23.2.4 文本文件 317
23.2.5 INI文件 318
23.2.7 机器码动态库 320
23.2.8 如何定位外部文件 320
23.2.6 可执行文件 320
23.3 根据当前平台执行程序 321
23.4.1 如何在窗口中放置控件 322
23.4.2 三维显示控件 322
23.4 应用程序的外观设计 322
23.4.3 字体的使用 323
23.5 窗口行为 324
23.6 菜单设计 326
23.7 其他方面 327
3.1 标签控件 327
第24章 封装应用 331
24.1 生成应用的可执行版本 331
24.1.1 编译基础 331
第五篇 分发技术 331
24.1.2 封装内容 332
24.1.3 选择封装模式 334
24.1.4 实现封装模式 336
24.1.5 测试可执行应用程序 336
24.2 交付给最终用户 337
25.1 分发过程的自动化 339
25.2 安装分发软件包 339
第25章 Windows上的分发技术 339
25.3 实现分发过程 340
25.4 分发后的应用 343
第26章 Unix上的分发技术 347
26.1 分发应用程序 347
26.2 安装分发软件包 348
26.2.1 安装前的预备知识 348
26.2.2 安装软件包 348
26.2.3 最终用户设置 351
26.3 其他交付方法 353
26.4 分发后的应用 354
附录 名词术语英中文对照表 356