第一章 PowerBuilder简介 1
1.1 概述 1
1.1.1 事件驱动的应用程序 2
1.1.2 功能强大的编程语言与函数 2
1.1.3 面向对象的编程 3
1.1.4 跨平台开发 4
1.1.5 开放的数据库连接系统 4
1.2 PowerBuilder 6.0的新特性 6
1.3 PowerBuilder与DBMS的连接 13
1.3.1 通过ODBC连接 14
1.3.2 通过专用接口连接 16
第二章 PowerBuilder开发环境 17
2.1 使用画板 17
2.1.1 打开画板或工具 17
2.1.2 打开对象 17
2.1.3 使用Browse按钮 18
2.1.4 各画板的控件 19
2.2 使用属性对话框 22
2.3 使用弹出菜单 23
2.4 使用工具条 23
2.4.1 关于工具条 23
2.4.2 下拉式工具条 24
2.4.3 控制工具条的显示 24
2.4.4 使用鼠标移动工具条 26
2.4.5 定制工具条 26
2.5 使用PowerBuilder窗口 29
2.5.1 打开多个窗口 29
2.5.2 激活窗口 29
2.5.3 平铺窗口 30
2.5.4 铺满窗口 30
2.6.1 画板(Painter) 31
2.5.5 层叠窗口 31
2.6 第一个应用程序 31
2.6.2 准备工作 32
2.6.3 打开PowerBuilder 32
2.6.4 Library画板 34
2.6.5 Application画板 36
2.6.6 Database画板 38
2.6.7 DataWindow画板 42
2.6.8 Window画板 47
2.6.9 第一次运行 52
2.6.10 第二次运行 56
2.6.11 第三次运行 58
2.6.12 美化外观 58
2.6.13 生成可执行程序 59
2.6.14 建立应用程序的基本步骤 61
3.1 什么是应用程序对象 62
第三章 应用程序对象 62
3.2 Application画板的主窗口 63
3.3 创建应用程序对象 65
3.4 选择已有应用程序对象 68
3.5 浏览应用程序对象 68
3.6 查看应用程序的结构 70
3.6.1 使用应用画板工作区 70
3.6.2 显示对象 71
3.7 指定应用程序的属性 72
3.7.1 指定应用程序图标 74
3.7.2 指定默认文本属性 74
3.7.3 指定库搜索路径 75
3.7.4 指定默认全局对象 77
3.8 编写应用程序级脚本 78
3.8.2 Close(关闭) 79
3.8.1 Open(打开) 79
3.8.3 Idle(空闲) 80
3.8.4 SystemError(系统错误) 80
3.8.5 ConnectionBegin和ConnectionEnd(连接开始和连接结束) 80
3.9 保存和退出 80
第四章 窗口 82
4.1 窗口的组成及类型 82
4.1.1 主窗口 83
4.1.2 子窗口 83
4.1.3 弹出式窗口 84
4.1.4 响应式窗口 85
4.1.5 框架窗口 85
4.2 创建窗口 85
4.2.1 打开Window画板 85
4.2.2 Window画板的使用 87
4.2.3 定义窗口属性 89
4.2.4 添加控件 95
4.2.5 保存窗口 95
4.3 预览和打印窗口 96
4.3.1 预览窗口 96
4.3.2 打印窗口 96
4.4 编写窗口脚本程序 96
4.4.1 窗口和控件的事件 97
4.4.2 窗口和控件的函数 97
4.4.3 窗口和控件的属性 97
4.4.4 声明实例变量 98
4.4.5 语句举例 98
4.5 运行窗口 98
4.6 窗口的继承 99
4.7.1 PowerBuilder怎样存储窗口的定义 102
4.7.2 声明窗口实例 102
4.7 创建窗口实例 102
4.7.3 使用窗口数组 103
4.7.4 使用数组或引用变量 105
4.7.5 引用后代中的实体 105
第五章 使用控件 107
5.1 概述 107
5.2 在窗口中放置控件 107
5.3 选择控件 109
5.4 移动控件和改变控件的大小 110
5.5 定义控件的属性 113
5.6 命名控件 114
5.6.1 默认控件前缀 115
5.6.2 改变控件名称 115
5.7 改变控件上显示的文本 116
5.8 复制和删除控件 117
5.9.2 改变窗口的Tab顺序 118
5.9.1 默认Tab顺序 118
5.9 定义Tab顺序 118
5.10 定义加速键 119
5.11 指定控件的可用性 120
5.12 选择控件颜色 122
5.13 使用3D外观 123
5.14 使用各个控件 124
5.14.1 按钮 125
5.14.2 固定列表(Fixed Lists) 127
5.14.3 可变列表 130
5.14.4 文本显示和编辑 140
5.14.5 容器 148
5.14.6 水平滚动条(HscrollBar)和垂直滚动条(VScrollBar) 153
5.14.7 绘图对象(Drawing Objects) 157
5.14.8 图片(Picture) 158
5.14.9 数据窗口(DataWindow)控件 159
5.14.11 用户对象(UserObject) 161
5.14.12 OLE控件 161
5.14.10 图表(Graph) 161
第六章 菜单 165
6.1 菜单窗口 165
6.1.1 关于菜单和菜单对象 165
6.1.2 使用菜单 166
6.1.3 设计菜单 166
6.1.4 建立菜单 166
6.2 创建菜单 166
6.2.1 打开Menu画板 166
6.2.2 使用Menu画板 167
6.2.3 添加菜单对象 168
6.2.4 菜单对象是怎样命名的 170
6.2.5 插入菜单对象 171
6.2.6 移动菜单对象 171
6.2.7 定义菜单对象的外观 171
6.2.9 删除菜单对象 172
6.2.8 设置一般属性 172
6.2.10 设置Style属性 173
6.2.11 设置加速键和快捷键 174
6.2.12 在菜单中创建分隔线 176
6.2.13 设置图标和图像属性 176
6.2.14 保存菜单 177
6.3 扩展菜单功能 178
6.3.1 预览 178
6.3.2 打印 179
6.4 事件和脚本 179
6.4.1 菜单对象事件 179
6.4.2 使用函数和变量 180
6.4.3 引用应用程序中的对象 180
6.5 菜单的使用 182
6.5.1 给窗口添加菜单条 182
6.5.2 显示弹出式菜单 183
第七章 管理数据库 184
7.1 使用Database画板 185
7.2 创建和删除数据库 188
7.3 表的使用 190
7.3.1 创建表 190
7.3.2 修改表 198
7.2.3 从主窗口指定列属性 198
7.3.4 删除表 202
7.3.5 删除码和索引 202
7.4 视图的使用 203
7.4.1 打开视图 203
7.4.2 创建视图 203
7.4.3 显示视图的SQL语句 204
7.4.4 连接表 205
7.4.5 删除视图 206
7.5.1 打开Data Manipulation画板 207
7.5 操纵数据 207
7.5.2 检索数据 208
7.5.3 修改数据 208
7.5.4 排序和过滤数据 208
7.5.5 查看行信息 210
7.5.6 转入数据 211
7.5.7 打印数据 211
7.5.8 保存数据 212
7.5.9 返回Database画板工作区 213
7.6 数据库管理 213
7.6.1 打开Database Administration画板 213
7.6.2 控制数据库访问 213
7.6.3 执行SQL 214
第八章 数据管道 217
8.1 什么是数据管道 217
8.1.2 灌入扩展属性 218
8.1.1 定义管道 218
8.2 建立数据管道 219
8.3 修改数据管道的定义 222
8.3.1 工作区中可修改的项 222
8.3.2 选择管道操作 223
8.3.3 根据管道操作修改数据管道 224
8.3.4 管道运行的中止 227
8.3.5 灌入Blob类型的数据 228
8.3.6 改变源数据库和目的数据库 229
8.4 纠正管道错误 230
8.5 数据管道的保存和应用 231
8.6 数据管道实例 231
第九章 PowerScript语言 233
9.1 PowerScript语言基础 233
9.1.1 注释行 233
9.1.2 标识符 233
9.1.3 特殊ASCII字符 234
9.1.4 标号 235
9.1.5 空值 235
9.1.6 保留字 236
9.1.7 代名词 236
9.1.8 续行和断句 239
9.1.9 空白 240
9.2 数据类型 240
9.2.1 标准数据类型 240
9.2.2 系统对象数据类型 244
9.2.3 枚举类型 244
9.3 说明 244
9.3.1 变量和常量 245
9.3.2 说明变量和常量 245
9.3.3 变量和常量可见范围 247
9.3.4 说明数组 248
9.4.1 操作符 251
9.3.5 引用变量 251
9.4 操作符和表达式 251
9.4.2 操作符在表达式中的优先级 253
9.4.3 表达式的数据类型 253
9.4.4 赋值与表达式 254
9.5 基本语句 255
9.5.1 赋值语句 255
9.5.2 CALL 257
9.5.3 CHOOSE CASE 257
9.5.4 CONTINUE 258
9.5.5 CREATE 259
9.5.6 DESTROY 260
9.5.7 DO...LOOP 260
9.5.8 EXIT 261
9.5.10 GOTO 262
9.5.9 FOR...NEXT 262
9.5.11 HALT 263
9.5.12 IF...THEN 263
9.5.13 RETURN 264
9.6 SQL语句 264
9.6.1 在PowerScript中使用SQL语句 264
9.6.2 CLOSE 266
9.6.3 COMMIT 266
9.6.4 CONNECT 266
9.6.5 DECLARE 267
9.6.6 DELETE 267
9.6.7 DISCONNECT 268
9.6.8 EXECUTE 268
9.6.9 FETCH 268
9.6.10 INSERT 268
9.6.12 ROLLBACK 269
9.6.13 SELECT 269
9.6.11 OPEN 269
9.6.14 SELECTBLOB 270
9.6.15 UPDATE 270
9.6.16 UPDATEBLOB 271
9.6.17 动态SQL语句的使用 271
9.7 对象和结构 277
9.7.1 对象 277
9.7.2 结构体 279
9.7.3 行为类似于结构体的用户对象 279
9.7.4 对象和结构体赋值区别 280
9.8 函数调用和事件响应 282
9.8.1 函数和事件 282
9.8.2 PowerBuilder寻找和执行事件和函数 284
9.8.3 调用函数和事件 284
9.8.5 说明和调用外部函数 290
9.8.4 调用函数和事件语法 290
9.8.6 说明DBMS的存储过程作为远程过程调用 291
9.9 PowerScript编程例子 292
9.9.1 Mel的仓库 292
9.9.2 Davis工厂 300
9.9.3 Troy的图书查询系统 304
9.10 PeopleKeeper的脚本 306
9.10.1 在适当时候打开所有的窗口 307
9.10.2 在适当时候关闭所有的窗口 307
9.10.3 同步Enter Search Criteria和Do Search菜单项 307
9.10.4 编写触发按钮事件的脚本 307
9.10.5 运行迄今为止的应用程序 308
第十章 建立应用程序 309
10.1 运行和调试程序 309
10.1.1 调试应用程序 309
10.1.2 运行应用程序 316
10.1.3 调试技巧 319
10.2 创建可执行应用 319
10.2.1 概述 319
10.2.2 定义工程 320
10.2.3 使用动态库 322
10.2.4 建立工程 323
10.2.5 分发资源 325
10.2.6 最终产品 327
第十一章 数据窗口 328
11.1 数据窗口对象入门 328
11.1.1 概述 328
11.1.2 创建数据窗口对象 330
11.1.3 定义数据源 331
11.1.4 选择表现风格 347
11.1.5 数据窗口对象中的可选项 355
11.1.6 生成并存储数据窗口对象 356
11.2 增强数据窗口对象的功能 358
11.2.1 工作区 358
11.2.2 预览数据窗口对象 367
11.2.3 数据窗口对象的属性 374
11.2.4 组织数据窗口对象中的元素 379
11.2.5 在程序运行期间动态变换属性 383
11.2.6 提示输入检索准则条件 385
11.2.7 数据窗口中的对象 386
11.2.8 存储数据 393
11.2.9 检索数据的方式 394
11.2.10 更新属性 395
11.3 显示数据并且使数据有效 398
11.3.1 显示格式 398
11.3.2 编辑风格 405
11.3.3 有效性规则 415
11.4 记录分组 420
11.3.4 维护实体性(Entities) 420
11.4.1 使用Group表现风格的数据窗口对象 421
11.4.2 为现有的数据窗口对象建立分组 422
11.5 数据窗口高级技术 426
11.5.1 数据窗口对象与数据窗口控件的连接 426
11.5.2 访问数据库 430
11.5.3 装入外部数据 435
11.5.4 在数据窗口中操纵数据 435
11.5.5 存取数据窗口对象属性 439
11.5.6 处理数据窗口的运行错误 440
11.5.7 更新数据库 441
11.5.8 创建报表 443
11.5.9 生成HTML 444
12.1.1 什么是MDI 447
12.1.3 MDI框架 447
12.1.2 MDI框架窗口 447
12.1 MDI概述 447
第十二章 开发MDI应用程序 447
12.1.4 客户区 448
12.1.5 MDI子窗口 448
12.1.6 工具条 449
12.2 建立MDI框架窗口 449
12.3菜单的使用 450
12.4.2 列出所打开的Sheet 451
12.4.1 打开Sheet 451
12.4 Sheet的使用 451
12.4.3 排列Sheet 452
12.4.4 Sheet的最大化 452
12.4.5 关闭Sheet 453
12.5 提供MicroHelp 453
12.5.1 定义菜单项的MicroHelp 454
12.5.2 定义对象的MicroHelp 454
12.6.1 工具条 456
12.6 提供工具条 456
12.6.2 加入工具条的第一步(在菜单画板中操作) 458
12.6.3 加入工具条的第二步(在窗口画板中操作) 461
12.6.4 相关属性的设置 462
12.6.5 工具条的使用 463
12.7 调整客户区 465
12.8 MDI应用程序实例(Corky) 466
第十三章 标签的实现 471
13.1 什么是标签控件 471
13.1.1 术语 471
13.1.2 标签页 472
13.2 定制标签控件 474
13.3 事件程序中的标签控件 475
13.3.1 在事件程序中的引用 475
13.3.2 打开及关闭标签页 477
13.3.3 引用标签页 477
13.3.4 标签页的创建 479
13.3.5 标签控件有关事件 480
第十四章 列表构造技术 481
14.1 列表框的使用 481
14.1.1 创建列表框和图像列表框 481
14.1.2 增加列表框和图像列表框的列表项 481
14.1.3 在图像列表框中增加图像 482
14.2 下拉式列表框的使用 482
14.2.1 创建下拉式列表框和下拉图像列表框 482
14.2.2 在下拉式列表框和下拉图像列表框中加入列表项 482
14.2.3 在下拉图像列表框中加入图像 483
14.2.4 删除图像列表框或下拉图像列表框中的图像 483
14.2.5 实例 484
14.3 List View的使用 485
14.3.1 创建ListView 486
14.3.2 ListView列表项的加入 486
14.3.3 向ListView中加入图像 487
14.3.4 删除ListView项及图像 488
14.3.5 使用报表视图 489
14.4 Tree View的使用 490
14.4.1 创建TreeView 490
14.4.2 加入TreeView列表项 490
14.4.3 在TreeView中加入图像 491
14.4.4 删除TreeView项和列表 492
14.4.5 利用数据窗口生成TreeView内容 493
第十五章 拖放技术 495
15.1 概述 495
15.2 拖放属性 495
15.2.1 DragAuto属性 496
15.2.2 DragIcon属性 496
15.3 识别拖动控件 496
15.4.2 拖放函数 497
15.4 拖放事件与函数 497
15.4.1 拖放事件 497
第十六章 事务对象 498
16.1 什么是事务对象 498
16.2 事务对象的使用 499
16.2.1 事务的基本概念 499
16.2.2 默认的事务对象 499
16.2.3 设置事务对象 500
16.2.4 从外部文件取值设置事务对象 500
16.2.5 与数据库连接 501
16.2.6 关闭数据库连接 502
16.2.7 为多数据库连接定义事务对象 502
16.2.8 SQL语句的错误处理 505
16.2.9 数据库事务对象共享 505
16.3 利用事务对象调用存储过程 506
16.4 DBMS支持的存储过程特性 515
第十七章 表与统计图 517
17.1 嵌套报表 517
17.1.1 使用Composite表现风格建立报表 519
17.1.2 在报表中放入嵌套报表 521
17.1.3 加工嵌套报表 523
17.1.4 在应用中使用嵌套报表 528
17.2 交叉表 529
17.2.1 交叉表概述 529
17.2.2 建立交叉表 530
17.2.3 使交叉表和数据建立联系 531
17.2.4 增强交叉表的功能 535
17.2.5 在应用程序中使用交叉表 543
17.3 统计图 545
17.3.1 统计图概述 545
17.3.2 在数据窗口对象中使用统计图 551
17.3.3 定义统计图的属性 555
17.3.4 在窗口中使用统计图 562
17.3.5 在程序运行期间访问统计图 564
第十八章 用户事件 567
18.1 概述 567
18.2 定义用户事件 567
18.2.1 事件ID 569
18.2.2 定制事件 569
18.2.3 Other事件 570
18.3 使用用户事件 571
18.3.1 编写事件脚本 572
18.3.2 触发事件 572
18.4 用户事件举例 572
18.4.1 MicroHelp 572
18.4.2 DataWindow控件自定义用户事件 573
19.1 修改数据窗口对象 575
19.1.1 设置属性值 575
第十九章 动态数据窗口 575
19.1.2 Modify语法及修改操作类型 576
19.2 创建数据窗口对象 578
19.2.1 Create函数的使用 578
19.2.2 数据窗口对象源代码(Syntax)的定义 579
19.3 提供查询功能 580
19.3.1 查询模式的工作方式 580
19.3.2 查询模式的使用方法 582
19.4 提供帮助按钮 584
19.5 重用数据窗口对象 584
第二十章 动态数据交换 585
20.1 概述 585
20.2 客户和服务器 585
20.3 DDE函数和事件 585
20.3.3 DDE服务器函数 586
20.3.2 DDE客户事件 586
20.3.1 DDE客户函数 586
20.3.4 DDE服务器事件 587
第二十一章 在应用程序中集成OLE 588
21.1 PowerBuilder对OLE的支持 588
21.2 在窗口中创建OLE控件 589
21.3 OLE控件及可插入对象 592
21.3.1 设置OLE控件 592
21.3.2 链接与嵌入 595
21.3.3 就地激活和离席激活 596
21.3.4 就地激活方式下的菜单 596
21.3.5 在OLE控件中修改对象 597
21.4 OLE定制控件 600
21.4.1 设置OLE定制控件 600
21.4.2 OLE定制控件编程 601
21.5 可编程OLE对象 604
21.5.1 OLEObject对象类型 604
21.5.2 OLE自动化方案 605
21.6 在事件程序中使用OLE对象 608
21.6.1 自动化接口 609
21.6.2 自动化及Any数据类型 612
21.6.3 自动化效率 613
21.6.4 错误处理 613
21.6.5 创建热链接 615
21.6.6 底层访问OLE对象 616
21.7 操纵OLE的高级方法 616
21.7.1 OLE存储的结构 616
21.7.2 存储及流的对象类型。 617
21.7.3 打开及保存OLE存储 617
21.7.4 打开流 621
21.7.5 使用OLE存储的策略 624
22.1 交叉平台设计方法 625
22.2 在多平台环境下开发 625
22.2.1 在不同平台之间移动和共享文件 626
22.2.2 保存文本文件——行结束符的选用 627
22.2.3 共享INI文件中的信息 628
22.2.4 多平台配置 630
22.3 用户界面设计的相关事项 630
22.4 应用程序的界面规划 631
22.4.1 如何在窗口中放置控件 632
22.4.2 三维(3D)显示控件 632
22.4.3 字体的使用 633
22.5 窗口行为 633
22.6 菜单设计 635
22.7 其他方面 636
22.7.1 鼠标触发的事件 636
22.7.2 访问数据库 637
22.7.3 提供应用程序帮助 637
22.7.4 共享外部函数库 637
22.7.5 不同平台的特征支持 638