第一篇 用户界面技术 3
第1章 开发MDI应用程序 3
1.1 MDI概述 3
1.1.1什么是MDI 3
1.1.2 MDI框架窗口 3
1.1.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 6
1.4.1打开Sheet 7
1.4.2列出所打开的Sheet 7
1.4.3排列Sheet 8
1.4.4 Sheet的最大化 8
1.4.5关闭Sheet 8
1.5提供MicroHelp 8
1.5.1定义菜单项的MicroHelp 9
1.5.2定义对象的MicroHelp 9
1.6提供工具条 10
1.6.1工具条介绍 10
1.6.2在菜单画板中设置工具条属性 12
1.6.3在窗口画板中设置工具条属性 14
1.6.4在应用画板中设置工具条属性 14
1.6.5使用工具条 15
1.7调整客户区 17
1.8本章小结 18
第2章 管理窗口实例 19
2.1什么是窗口实例 19
2.2声明窗口实例变量 19
2.2.1打开一个实例 20
2.2.2关闭一个实例 20
2.3使用窗口数组 20
2.3.1使用数组创建实例 20
2.3.2创建混合数组 21
2.4引用后代中的实体 22
2.5本章小结 23
第3章 标签的实现 25
3.1标签控件 25
3.2定义与管理标签页 26
3.2.1定义标签页 26
3.2.2管理标签页 27
3.2.3标签页中的控件 27
3.3定制标签控件 28
3.3.1标签的排列方式 28
3.3.2标签标识 30
3.4在脚本中使用标签控件 30
3.4.1引用标签页 31
3.4.2引用标签页上的控件 32
3.4.3打开、关闭及隐藏标签页 33
3.4.4跟踪标签页 33
3.4.5只创建所需标签页 34
3.4.6标签控件事件 35
3.5本章小结 36
第4章 列表构造技术 37
4.1列表介绍 37
4.2使用列表框 37
4.2.1创建列表框 37
4.2.2添加列表项 38
4.2.3在PictureListBox中添加图片 38
4.3使用下拉式列表框 39
4.3.1创建下拉式列表框 39
4.3.2添加列表项 39
4.3.3在DropDownPictureListBox中添加图片 40
4.3.4删除图片列表框中的图片 41
4.4使用ListView 43
4.4.1创建ListView 43
4.4.2加入ListView列表项 43
4.4.3向ListView中加入图标 44
4.4.4删除ListView项及图标 46
4.4.5使用报表视图 47
4.4.6热点跟踪与单击和两次单击 48
4.5本章小结 48
第5章 使用TreeView控件 50
5.1什么是TreeView 50
5.1.1 TreeView项的层次 50
5.1.2 TreeView项的数据来源 51
5.1.3 TreeView项的图标 51
5.1.4 TreeView的外观 51
5.1.5用户交互方式 52
5.2生成TreeView项 52
5.2.1插入项目函数 52
5.2.2插入根级项目 54
5.2.3插入根级以下的项目 55
5.3管理TreeView项 57
5.3.1删除项目 58
5.3.2重命名项目 59
5.3.3通过拖拽移动项目 59
5.3.4对项目进行排序 62
5.4管理TreeView图标 64
5.4.1图标列表及属性 64
5.4.2建立图标列表 65
5.4.3使用覆盖图标 66
5.5利用数据窗口生成TreeView 67
5.6本章小结 68
第6章 拖放技术 70
6.1概述 70
6.2拖放属性、事件及函数 70
6.2.1拖放属性 70
6.2.2拖放事件 71
6.2.3拖放函数 71
6.3识别拖动控件 72
6.4本章小结 72
第7章 提供联机帮助 73
7.1创建帮助文件 73
7.2为开发者提供联机帮助 74
7.2.1上下敏感的帮助的工作原理 74
7.2.2在PowerBuilder环境中建立联机帮助 75
7.3为用户提供联机帮助 76
7.4在UNIX上提供帮助 77
7.5本章小结 77
第二篇 数据存取技术 81
第8章 事务对象 81
8.1事务对象介绍 81
8.1.1概述 81
8.1.2事务对象属性 82
8.1.3 Powersoft数据库接口及相应的事务对象属性 83
8.2使用事务对象 85
8.2.1事务的基本概念 86
8.2.2默认事务对象 86
8.2.3设置事务对象 87
8.2.4利用外部文件设置事务对象 87
8.2.5与数据库连接 88
8.2.6预览连接 89
8.2.7关闭数据库连接 90
8.2.8为多数据库连接定义事务对象 90
8.2.9 SQL语句的错误处理 93
8.2.10数据库事务缓冲池 94
8.3利用事务对象调用存储过程 95
8.4 DBMS支持的存储过程调用特性 101
8.5本章小结 102
第9章 数据窗口技术 103
9.1数据窗口技术 103
9.1.1分布式与客户/服务器应用的解决方案 103
9.1.2 Web应用解决方案 104
9.2数据窗口对象、控件和组件 106
9.2.1数据窗口控件和组件 106
9.2.2数据窗口对象 107
9.3数据窗口对象与控件的连接 108
9.3.1数据窗口控件与数据窗口对象名 108
9.3.2在PowerBuilder中使用数据窗口控件 109
9.3.3在PowerJ中使用数据窗口控件 110
9.3.4革新在运行中指定数据窗口对象 111
9.4访问数据库 112
9.4.1为数据窗口控件设置事务对象 113
9.4.2检索和更新数据 116
9.5装入外部数据 119
9.6在数据窗口中操纵数据 120
9.6.1数据窗口控件如何管理数据 120
9.6.2访问Edit控件中的文本 122
9.6.3操纵Edit控件中的文本 122
9.6.4 ItemChanged事件脚本 122
9.6.5 ItemError事件脚本 123
9.6.6访问数据窗口的数据项 123
9.6.7其他数据窗口有关函数 124
9.7存取数据窗口对象属性 124
9.8处理数据窗口错误 125
9.8.1检索及更新错误与DBError事件 125
9.8.2属性及数据表达式错误与Error事件 127
9.9数据库的更新 128
9.9.1数据窗口控件如何更新数据库 128
9.9.2编程改变行和列的状态 129
9.10创建报表 130
9.10.1设计数据窗口对象 130
9.10.2打印报表 130
9.11使用嵌套报表 131
9.12使用Crosstab 132
9.12.1显示底层数据 132
9.12.2允许用户重新设置Crosstab 132
9.12.3在运行时修改Crosstab的属性 133
9.13生成HTML 134
9.13.1几种生成技术 134
9.13.2显示控制 137
9.13.3调用SaveAs函数 138
9.13.4以HTML Form的形式显示数据窗口对象 139
9.14本章小结 143
第10章 动态数据窗口 145
10.1修改数据窗口对象 145
10.2创建数据窗口对象 146
10.2.1 Create方法 146
10.2.2定义数据窗口对象源代码 147
10.3提供查询功能 149
10.3.1查询模式的工作方式 149
10.3.2查询模式的使用方法 150
10.4重用数据窗口对象 152
10.5本章小结 153
第11章 数据存储 154
11.1数据存储概述 154
11.1.1数据存储的概念 154
11.1.2数据存储的功能 154
11.1.3数据存储方法 155
11.1.4不支持交互信息输入 155
11.2使用数据存储 156
11.3使用定制的数据存储对象 156
11.4在数据存储中存取并操纵数据 159
11.5信息共享 160
11.6举例 162
11.7本章小结 165
第12章 图表处理 166
12.1使用图表 166
12.2改变图表属性 166
12.2.1图表的显示属性 167
12.2.2图表显示属性的引用 168
12.3访问数据属性 168
12.4 ObjectAtPointer函数 171
12.5使用图表控件 173
12.6本章小结 176
第13章 数据管道 177
13.1数据管道概述 177
13.2创建所需的对象 177
13.2.1创建管道对象 178
13.2.2创建支撑用户对象 179
13.2.3创建窗口 180
13.3初始化操作 182
13.4启动管道操作 183
13.4.1启动管道 183
13.4.2管道处理监控 185
13.4.3终止管道运行 186
13.4.4向数据库提交更新操作 187
13.5处理行错误 187
13.5.1使用管道错误数据窗口 187
13.5.2修复错误行 188
13.5.3放弃错误行 189
13.6结束操作 190
13.7本章小结 191
第三篇 程序实现技术 195
第14章 DDE实现技术 195
14.1 DDE介绍 195
14.2客户和服务器 195
14.3 DDE函数和事件 195
14.3.1 DDE客户函数 196
14.3.2 DDE客户事件 196
14.3.3 DDE服务器函数 196
14.3.4 DDE服务器事件 197
14.4本章小结 197
第15章 OLE实现技术 198
15.1 PowerBuilder对OLE的支持 198
15.2窗口中的OLE控件 199
15.2.1 OLE控件容器的特征 199
15.2.2定义OLE控件 200
15.3 OLE控件及可插入对象 201
15.3.1设置OLE控件 202
15.3.2在画板中激活对象 203
15.3.3改变控件中的对象 203
15.3.4用户如何与OLE控件交互 203
15.3.5链接与嵌入 204
15.3.6即席激活与离席激活 205
15.3.7即席激活方式下的菜单 205
15.3.8在OLE控件中修改对象 206
15.4 OLE定制控件 209
15.4.1设置定制控件 209
15.4.2 ActiveX控件编程 210
15.5可编程OLE对象 213
15.5.1 OLEObject对象类型 213
15.5.2 OLE自动化方案 216
15.6脚本中的OLE对象 219
15.6.1 OLE自动化接口 220
15.6.2自动化及Any数据类型 224
15.6.3使用高效的OLEObject变量 225
15.6.4错误处理 226
15.6.5创建热链接 228
15.6.6底层访问OLE对象 229
15.7浏览器中的OLE信息 229
15.8操作OLE的高级方法 231
15.8.1 OLE存储的结构 231
15.8.2存储及流的对象类型 232
15.8.3打开及保存OLE存储 232
15.8.4打开流 237
15.8.5使用OLE存储的策略 240
15.9本章小结 240
第16章 PowerBuilder运行自动化服务器 241
16.1使用运行自动化服务器 241
16.1.1自动化服务器介绍 241
16.1.2访问PowerBuilder用户对象的三种方法 242
16.2用户对象作为自动化服务器 244
16.2.1创建类用户对象 244
16.2.2建立对象的运行库 244
16.2.3注册对象 244
16.2.4编写客户代码 245
16.3 PowerBuilder作为自动化服务器 246
16.3.1定义所需访问的对象 247
16.3.2生成运行库 247
16.3.3编写客户代码 248
16.4创建并使用命名服务器 250
16.5通过自动化访问远程对象 251
16.6用户对象及注册表 253
16.6.1 GUID、CLSID和ProgID 254
16.6.2对象信息存储地点 254
16.6.3创建注册信息 256
16.7分发自动化服务器应用 258
16.8 PowerBuilder.Application服务器对象 259
16.9本章小结 260
第17章 增加扩展处理功能 261
17.1外部函数的使用 261
17.1.1外部函数的声明 261
17.1.2外部函数声明示例 262
17.1.3传递参数 263
17.2 在UNIX上调用外部函数及程序 265
17.2.1调用外部函数 265
17.2.2运行其他程序 266
17.3发送窗口消息 267
17.3.1 Post和Send函数 267
17.3.2触发PowerBuilder事件 267
17.4消息对象 268
17.5上下文信息 268
17.5.1上下文信息介绍 268
17.5.2上下文信息服务 270
17.5.3关键字服务 272
17.5.4 Intemet服务 273
17.5.5事务服务器服务 276
17.5.6错误日志服务 276
17.5.7安全套接字层服务 276
17.6使用实用函数管理信息 276
17.7本章小结 277
第四篇 分布式应用技术 281
第18章PowerBuilder环境下的分布式计算 281
18.1为何采用分布式计算 281
18.1.1关于分布式计算 281
18.1.2客户/服务器模式的不足 281
18.1.3分布式计算提供的解决方案 282
18.2分布式应用的体系结构 283
18.2.1 Jaguar事务服务器 283
18.2.2 Microsoft事务服务器 288
18.2.3分布式PowerBuilder 288
18.3分布式应用设计 291
18.4本章小结 292
第19章 建立Jaguar组件 293
19.1建立Jaguar组件介绍 293
19.2 Jaguar如何管理程序变量空间 294
19.3定义组件接口 294
19.4在Jaguar组件中存取数据库 297
19.4.1一般介绍 297
19.4.2使用连接缓存 298
19.4.3提供事务支持 299
19.4.4执行检索操作 302
19.4.5执行更新操作 303
19.4.6传递结果集 307
19.5支持实例缓冲池 309
19.6使用共享组件 311
19.7调用另一个服务器组件的方法 312
19.8访问组件属性 313
19.9组件测试与调试 315
19.10向Jaguar分发组件 316
19.11本章小结 317
第20章 建立Jaguar客户 318
20.1关于建立Jaguar客户 318
20.2与Jaguar服务器连接 318
20.2.1自己编写代码 319
20.2.2使用向导 320
20.3生成Jaguar代理对象 321
20.4调用组件方法 321
20.5请求服务器返回消息 322
20.6处理通信错误 325
20.6.1处理通信错误介绍 325
20.6.2连接对象Error事件脚本 326
20.6.3 SystemError事件脚本 327
20.7分发客户应用 327
20.8本章小结 328
第21章 建立COM/MTS组件 329
21.1建立COM和MTS组件介绍 329
21.1.1使用向导 329
21.1.2开发过程 330
21.2组件对象模型 330
21.2.1 PowerBuilder COM服务器 330
21.2.2自动化服务器与PowerBuilder COM服务器的比较 330
21.3定义组件接口 332
21.3.1方法和数据类型 332
21.3.2编程限制 334
21.4在COM或MTS组件中存取数据库 335
21.5提供事务支持 338
21.6支持对象生命周期控制 339
21.7调用另一个服务器组件的方法 340
21.8安全问题 340
21.9在工程画板中建立COM/MTS组件 341
21.9.1建立PowerBuilder COM服务器工程 341
21.9.2自动注册组件 341
21.9.3向MTS分发组件 342
21.9.4选择定制或双重接口 342
21.9.5嵌入PBD 342
21.11 PowerBuilder COM对象如何运行 343
21.12分发PowerBuilder COM服务器 343
21.12.1使用PowerBuilder COM服务器 343
21.12.2分发给MTS 344
21.13客户访问PowerBuilder COM服务器 346
21.13.1 Visual Basic客户 346
21.13.2 C++客户 347
21.13.3利用DCOM使用PowerBuilder COM服务器和对象 349
21.14本章小结 351
第22章 建立COM/MTS客户 352
22.1建立COM/MTS客户介绍 352
22.2与COM服务器连接 352
22.3与COM组件交互 353
22.4在客户中控制事务 354
22.5本章小结 355
第23章 开发分布式PowerBuilder客户应用 356
23.1创建用户界面 356
23.2与服务器连接 356
23.3调用远程对象函数 357
23.4生成代理对象 360
23.5处理通信错误 361
23.5.1编写Error事件脚本 362
23.5.2编写SystemError事件脚本 363
23.6管理程序变量空间 363
23.7使用ConnectionInfo对象 363
23.8分发客户应用 364
23.9本章小结 364
第24章 开发分布式PowerBuilder服务器应用 366
24.1创建用户界面 366
24.2管理客户连接 366
24.2.1监听客户连接 366
24.2.2处理客户请求 368
24.3建立远程对象 368
24.3.1编写用户对象方法 369
24.3.2设置远程对象 370
24.4访问数据库 371
24.4.1执行检索操作 371
24.4.2数据库更新 373
24.4.3数据库事务缓冲池 377
24.5使用共享对象 378
24.5.1共享对象的工作原理 379
24.5.2执行过程 379
24.6处理异步请求 382
24.7向客户推送消息 383
24.8避免死锁 384
24.8.1死锁产生原因 384
24.8.2如何避免死锁 385
24.9分发服务器应用 385
24.10本章小结 385
第25章 使用JavaBeans代理生成器 387
25.1 JavaBeans代理生成器介绍 387
25.1.1开发过程 387
25.1.2生成结果 387
25.1.3生成的附加类 388
25.2 Java数据类型映射 389
25.3在工程画板中生成Java类 390
25.4使用生成的Java类 390
25.4.1创建Java工程 392
25.4.2建立连接 392
25.4.3在构造器中设置连接属性 393
25.4.4分别设置连接属性 393
25.4.5在连接方法中设置连接属性 394
25.4.6使用JavaBeans连续性设置连接属性 394
25.4.7在JavaBeans代理中调用方法 395
25.4.8使用Date和DateTime类 401
25.5集成生成的类与PowerJ引用卡 402
25.6 com.sybase.dpb软件包 402
25.7本章小结 404
第26章 分布式应用的故障诊断 406
26.1调试Jaugar组件 406
26.2分布式PowerBuilder应用程序的故障诊断 407
26.2.1关于测试分布式应用 407
26.2.2用Local驱动程序测试 408
26.2.3在本地使用通信驱动程序测试 408
26.2.4使用跟踪功能 409
26.3本章小结 413
第27章 开发多平台应用程序 414
27.1交叉平台设计策略 414
27.2在多平台环境下开发和分发 414
27.2.1在不同平台之间移动和共享文件 414
27.2.2 PowerBuilder库文件 415
27.2.3图像文件 415
27.2.4文本文件 416
27.2.5 INI文件 417
27.2.6可执行文件 418
27.2.7机器码动态库 418
27.2.8 PBD文件 418
27.2.9如何定位外部文件 419
27.3根据当前平台执行程序 419
27.4应用程序的外观设计 420
27.4.1如何在窗口中放置控件 420
27.4.2三维(3D)显示控件 421
27.4.3字体的使用 422
27.5窗口行为 422
27.6菜单设计 424
27.7其他方面 425
27.8本章小结 427
第五篇 分发技术 431
第28章 封装应用 431
28.1生成应用的可运行版本 431
28.1.1编译基础 431
28.1.2封装内容 432
28.1.3选择封装模式 434
28.1.4实现封装模式 437
28.1.5测试可运行应用程序 437
28.2交付给最终用户 437
28.2.1安装环境部分 438
28.2.2安装应用部分 438
28.3本章小结 439
第29章 Windows上的分发技术 440
29.1概述 440
29.2安装PowerBuilder分发文件 440
29.3提供数据源 441
29.3.1安装本地数据库接口 441
29.3.2安装ODBC和系统文件 441
29.3.3配置ODBC驱动程序 442
29.3.4分发Adaptive Server Anywhere运行系统 443
29.4安装可运行应用程序及支持文件 444
29.4.1分发ActiveX控件 444
29.4.2为OLE自动化对象创建注册信息 444
29.5启动分发后的应用 444
29.6本章小结 445
第30章 UNIX上的分发技术 446
30.1分发应用程序 446
30.2封装应用程序 447
30.2.1建立tar文件 447
30.2.2建立应用软件包 447
30.3最终用户设置 448
30.4分发后的应用 450
30.5本章小结 451
附录 名词术语英中文对照表 452