第1章 PowerBuilder简介 1
1.1 什么是PowerBuilder 1
1.2 PowerBuilder 8.0的新特点 2
第2章 PowerBuilder应用开发准则 7
2.1 界面设计准则 7
2.1.1 外观设计 7
2.1.1.1 外观设计应遵守的原则 7
2.1.1.2 界面设计的基本要求 8
2.1.1.3 用户界面工作方式 8
2.1.1.4 设计外观的要求 9
2.1.1.5 窗口(Window)定制规范 9
2.1.1.6 控件定制规范 9
2.1.1.7 数据窗口及其控件定制规范 10
2.1.1.8 菜单控件定制规范 10
2.1.2.1 数据输入的规则 11
2.1.2 数据输入界面设计 11
2.1.1.9 可视定制用户对象控件定制规范 11
2.1.3 数据显示界面设计 12
2.1.3.1 数据显示的规则 12
2.1.3.2 字符数据的显示规则 12
2.1.3.3 图形显示规则 12
2.1.3.4 报告 13
2.1.4 控制界面的设计 13
2.1.4.1 用控制对话选择操作命令 13
2.1.4.2 用图标表示对象或命令 14
2.1.4.3 直接操作 14
2.1.4.4 用窗口划分屏幕 14
2.1.5 界面外观设计方式 14
2.1.5.1 抽象类与概括类操作外观界面设计 14
2.2.1.3 绝缘层事件 15
2.2.1.2 类库事件 15
2.2.1.1 标准事件 15
2.2.1 事件命名准则 15
2.2 程序设计准则 15
2.1.5.2 最终界面设计方式 15
2.2.1.4 菜单事件 16
2.2.1.5 其他事件 16
2.2.1.6 事件命名小结 16
2.2.2 变量命名准则 16
2.2.2.1 语法约定 16
2.2.2.2 标准数据类型前缀 16
2.2.2.3 标准对象数据类型前缀 17
2.2.3 对象命名准则 21
第3章 PowerBuilder 8.0集成开发环境 25
3.1 PowerBuilder 8.0集成开发环境(IDE)综述 25
3.1.1 PowerBuilder主界面 25
3.1.1.1 系统树窗口 26
3.1.1.3 输出窗口 28
3.1.1.2 剪贴窗口 28
3.1.2 PowerBuilder向导 29
3.1.3 PowerBuilder工具条 31
3.1.4 PowerBuilder画笔 36
3.1.4.1 打开画笔 36
3.1.4.2 调整画笔中的视图 37
3.1.4.3 画笔小结 42
3.1.5.1 To-Do List用法 43
3.1.5 辅助开发功能 43
3.1.5.2 自定义菜单快捷键 44
3.1.5.3 Browser画笔的使用 44
3.1.5.4 Library画笔的使用 45
3.2 PowerBuilder常用概念与术语 46
第4章 PowerBuilder 8.0开发语言 49
4.1 PowerScript语言简介 49
4.1.1 语言基础 49
4.1.2 数据类型 51
4.1.3 声明常量、变量和数组 53
4.1.5 结构和对象的引用 55
4.1.4 操作符和表达式 55
4.1.6 调用函数和事件 56
4.1.7 PowerScript流控制语句 57
4.1.8 内嵌SQL语句 58
4.2 Web开发语言简介 60
4.2.1 VBScript语言 61
4.2.1.1 VBScript语言简介 61
4.2.1.2 VBScript语言基础 61
4.2.1.3 VBScript编程基础 64
4.2.1.4 VBScript的过程 71
4.2.2 JavaScript语言 72
4.2.2.1 JavaScipt语言简介 72
4.2.2.2 JavaScipt语言基础 73
4.2.2.3 JavaScipt编程基础 78
4.2.2.4 JavaScipt中的对象 82
4.2.3 XML语言 86
4.2.3.1 XML语言简介 87
4.2.3.2 XML概念和术语 89
4.2.3.3 XML语言基础 95
第5章 PowerBuilder与数据库的连接 101
5.1 ODBC接口与数据库连接 101
5.1.1 ODBC接口的工作原理 101
5.1.2 ODBC接口连接实例 102
5.2 OLE DB接口与数据库连接 106
5.2.1 OLE DB接口的工作原理 106
5.2.2 OLE DB接口连接实例 107
5.3 专用接口与数据库连接 109
5.3.1 什么是PowerBuilder专用数据库接口 109
5.3.2 Sybase数据库专用接口连接实例 110
5.3.3 Oracle数据库专用接口连接实例 111
5.4 JDBC接口与数据库连接 112
5.4.1 什么是JDBC接口 113
5.4.2.2 JDBC DLL 114
5.4.2.1 如何建立一个JDBC连接 114
5.4.2 JDBC连接的组成 114
5.4.2.3 PowerBuilder Java包 115
5.4.2.4 Java VM 115
5.4.2.5 JDBC驱动程序 115
5.4.3 JDBC注册入口 115
5.4.4 支持的JDBC版本 115
5.4.5 支持的JDBC数据类型 115
5.5 使用JDBC接口的准备工作 115
5.6 定义JDBC接口 116
5.6.1 指定连接参数 116
5.5.1 配置数据库服务器 116
5.5.3 安装JDBC接口 116
5.5.2 检查Java虚拟机 116
5.6.2 指定适当的Java虚拟机 117
5.7 数据管道对象 118
5.7.1 什么是数据管道 118
5.7.2.1 启动数据管道画笔 119
5.7.2 如何创建数据管道 119
5.7.2.2 设置数据管道选项 121
5.7.2.3 测试数据管道 124
5.7.2.4 保存数据管道 125
5.7.2.5 退出数据管道画笔 125
5.7.3 如何在程序中实现不同数据库之间的数据传递 125
第6章 Web开发中资源控制系统 131
6.1 资源控制系统 131
6.1.1 什么是资源控制系统 131
6.1.2 为什么使用资源控制系统 131
6.1.3 资源控制界面 131
6.2 使用资源控制管理 132
6.2.1 工具的使用 132
6.2.2 使用PBNative的检入与检出功能 132
6.3 多用户的环境限制 133
6.3.1 项目管理的任务 133
6.3.2 开发者任务 133
7.1 工作区和目标 135
第7章 应用对象 135
7.2 应用简介 136
7.3 创建一个新应用 137
7.3.1 创建可执行应用的方法 140
7.3.2 手工应用向导 140
7.3.3 模板应用向导 140
7.4 打开应用对象 142
7.5 设置应用对象的属性 143
7.6 编定应用级脚本 144
7.7 运行应用 145
7.8 检索路径的添加 146
7.9 查看应用所包含的对象 146
7.9.1 Browser画笔的使用 146
7.9.2 Library画笔的使用 147
7.10.1 创建工作区 149
7.10 练习:实例应用创建 149
7.10.2 创建实例应用对象 150
7.10.3 设置修改应用对象属性 150
7.10.4 应用对象的程序编写 152
第8章 窗口对象 155
8.1 概述 155
8.2 创建一个新窗口 157
8.2.1 普通方式创建 157
8.2.2.2 继承创建窗口 158
8.2.2 继承方式创建 158
8.2.2.1 继承简介 158
8.3 设置窗口的属性 159
8.3.1 设置General属性页 159
8.3.2 设置Scroll属性页 161
8.3.3 设置Toolbar属性页 161
8.3.4 设置Other属性页 162
8.4 为窗口添加控件 162
8.4.2 添加控件 163
8.4.1 控件概述 163
8.4.3 设置控件的属性 164
8.4.3.1 控件的选择 164
8.4.3.2 控件的命名规则 164
8.4.3.3 显示文本的修改 166
8.4.3.4 定义快捷键 167
8.4.3.5 定义控件的可访问属性 168
8.4.3.6 选择前景或背景色 168
8.4.3.7 控件的边框类型 169
8.4.3.8 控件的指针类型和拖拉图标 170
8.4.4 有关控件的操作 171
8.4.4.1 剪切、拷贝、粘贴和删除 171
8.4.4.2 移动和改变控件大小 172
8.4.4.3 控件的排列和间距的调整 172
8.4.4.4 定义控件的Tab顺序 174
8.4.5 控件的使用 175
8.4.5.1 激活动作类控件 175
8.4.5.2 显示数据类控件 178
8.4.5.4 修饰类控件 184
8.4.5.3 指示选择类控件 184
8.5 窗口编程 185
8.5.1 窗口和控件的事件 185
8.5.2 窗口和控件的函数 187
8.5.3 定义实例变量 187
8.6 查看和执行窗口 187
8.6.1 查看窗口 187
8.7.1 实例应用主窗口“w_main”创建练习 188
8.6.2 运行窗口 188
8.7 练习:实例窗口创建 188
8.7.1.1 创建窗口对象 189
8.7.1.2 窗口对象属性设置 189
8.7.2 学院信息维护窗口“w_college”创建练习 191
8.7.2.1 创建窗口对象 191
8.7.2.2 添加窗口控件、设置和修改窗口控件属性 191
8.7.2.3 窗口与控件的编程 193
8.7.3 课程信息维护窗口“w_course”创建练习 194
8.7.4 学生选课信息录入窗口“w_elective”创建练习 195
8.7.5 学生选课信息修改窗口“w_elective_update”创建练习 196
8.7.5.1 创建窗口对象 196
8.7.5.2 添加窗口控件、设置和修改窗口控件属性 197
8.7.5.3 窗口与控件的编程 198
8.7.6 学号检索/录入窗口“w_newstudent”创建练习 198
8.7.7 关于窗口“w_about”创建练习 199
8.7.8 课程被选信息查询窗口“w_course_elective”创建练习 200
8.7.9 通用打印预览窗口“w_dw_preview”创建练习 201
8.7.10 数据窗口打印设置窗口“w_dw_print_options”创建练习 206
8.7.11 邀请函打印窗口“w_request_letter”创建练习 210
8.7.12 学生选课统计表窗口“w_elective_crosstab”创建练习 211
8.7.13 学生平均成绩报表窗口“w_stud_achievement”创建练习 212
8.7.14 学生信息打印窗口“w_stud_number”创建练习 213
8.7.15.1 创建窗口对象 214
8.7.15.2 添加窗口控件、设置和修改窗口控件属性 214
8.7.15 学生信息查询窗口“w_trv_lv”创建练习 214
8.7.15.3 窗口与控件的编程 218
8.7.16 学生信息录入窗口“w_student”创建练习 219
8.7.17 选课记录统计窗口“w_elective_graph”创建练习 223
8.7.18 课程选修详细信息统计图窗口“w_elective_graph_l”创建练习 225
8.8 窗口操作与控制技术 228
8.8.1 窗口自动居中实例 228
8.8.2 MDI窗口中背景图片的显示实例 229
8.8.3 窗口控件与窗口尺寸同步实例 234
第9章 菜单对象 239
9.1 概述 239
9.2 创建一个新菜单 240
9.2.1 向导方式创建 240
9.2.2 菜单的常规操作 240
9.2.3 继承方式创建 244
9.3 设置菜单的属性 245
9.3.1 设置通用属性 246
9.4 编写菜单的脚本 250
9.3.2 设置工具条属性 250
9.5 菜单的引用 251
9.6 练习:实例菜单创建 252
9.6.1 退出菜单“m_exit”创建练习 252
9.6.1.1 创建退出菜单对象 252
9.6.1.2 添加菜单项、设置和修改菜单项属性 253
9.6.1.3 菜单程序的编制 254
9.6.2 学生管理菜单“m_student”创建练习 255
9.6.2.1 创建学生管理菜单对象 255
9.6.2.2 添加菜单项、设置和修改菜单项属性 255
9.6.2.3 菜单程序的编制 256
9.6.3 报表菜单“m_report”创建练习 256
9.6.3.1 创建报表菜单对象 256
9.6.3.2 添加菜单项、设置和修改菜单项属性 257
9.6.3.3 菜单程序的编制 258
9.6.4 选课菜单“m_elective”和“m_elective_update”创建练习 258
9.6.4.1 创建菜单“m_elective” 258
9.6.4.2 创建菜单“m_elective_update” 260
9.6.5 实例应用主菜单“m_example_main”创建练习 263
9.6.5.1 创建主菜单m_example_main 263
9.6.5.2 添加菜单项、设置修改菜单项属性 263
9.6.5.3 菜单程序的编制 266
9.7 菜单操作与控制技术 267
9.7.1 图片菜单制作实例 267
第10章 数据窗口 271
10.1 创建数据窗口 271
10.2 数据窗口的显示风格与数据源 274
10.2.1 数据窗口的显示风格 274
10.2.2 数据窗口的数据源 278
10.3 设置数据窗口属性 283
10.3.1 设置数据窗口属性的方法 283
10.3.2 数据窗口的常规属性 284
10.3.3 数据窗口的HTML属性 286
10.4.1 为数据窗口添加控件 287
10.4 数据窗口中的控件 287
10.4.2 数据窗口中常用控件的属性设置 288
10.5 数据的操作与控制 294
10.5.1 定义数据窗口检索参数 294
10.5.2 编辑数据窗口的WHERE子句 295
10.5.3 数据窗口中数据的排序与过滤 296
10.5.4 数据窗口中数据的分组与汇总 298
10.5.5 数据窗口中的多行选择 300
10.5.6 数据窗口中的模糊查询 303
10.5.7 数据窗口中的多表更新 305
10.5.8 数据窗口中金额大小写转换 309
10.5.9 数据窗口中记录颜色的改变 312
10.5.10数据窗口中的内嵌函数 313
10.5.11 数据窗口中的列自动折行显示 315
10.5.12 下拉数据窗口中的关键字搜索 316
10.5.14 数据窗口中的自动刷新技术 320
10.5.13 数据窗口中的回车键代替Tab键跳转 320
10.5.15 数据窗口中的“Datastore”的应用 321
10.5.16 数据窗口中的异步检索 323
10.5.17 数据窗口中的文本闪烁 325
10.6 报表数据的输出 327
10.6.1 嵌套报表 327
10.6.2 自由风格报表 329
10.6.3 PSR文件报表 329
10.7 练习:实例数据窗口创建 330
10.7.1 学院信息维护数据窗口“d_college”创建练习 331
10.7.2 课程信息维护数据窗口对象“d_course”创建练习 333
10.7.2.1 创建数据窗口对象 333
10.7.2.2 添加对象控件与设置修改属性 333
10.7.3 简单数据窗口对象的创建 336
10.7.4 学生导师信息维护数据窗口“d_stud_teach”的创建练习 337
10.7.4.1 创建数据窗口对象 337
10.7.4.2 添加对象控件与设置修改属性 337
10.7.5 复杂数据窗口对象创建练习 340
10.7.6 特殊风格数据窗口对象创建练习 345
10.7.6.1 选课统计报表数据窗口对象“d_elective_crosstab”创建练习 345
10.7.6.2 邀请信函生成数据窗口对象“d_request_letter”创建练习 347
10.7.6.3 学院课程选修统计图数据窗口对象“d_elective_graph”创建练习 348
10.7.6.4 课程选择统计图数据窗口对象“d_elective_graph_l”创建练习 350
10.7.6.5 学生入学成绩报表数据窗口对象“d_student_check”创建练习 350
10.8 数据窗口的打印技术 351
10.8.1 多数据窗口单独页号打印 352
10.8.2 多数据窗口连续页号打印 353
10.8.3 报表局部数据的打印 355
10.8.4 复杂报表的制作 356
10.8.5 动态设置打印机 359
10.8.6 大文本数据的打印 361
10.8.7 打印预览 372
11.1.1 可视用户对象 375
11.1 用户对象的分类 375
第11章 用户对象 375
11.1.1.1 标准可视用户对象 376
11.1.1.2 定制可视用户对象 376
11.1.1.3 外部可视用户对象 377
11.1.2 类用户对象 377
11.1.2.1 标准类用户对象 377
11.1.2.2 定制类用户对象 378
11.2 用户对象的设计 379
11.2.1 创建新用户对象 379
11.2.1.1 创建新用户对象 379
11.2.1.2 创建可视用户对象 380
11.2.1.3 创建类用户对象 382
11.2.1.4 用户对象的变量、结构、事件与函数定义 384
11.2.1.5 不可视对象在用户对象中的定义 385
11.2.1.6 使用继承创建用户对象 386
11.2.1.7 保存用户对象 388
11.3.1 可视用户对象的使用 389
11.3 用户对象的使用 389
11.3.2 类用户对象的使用 390
11.4 连接对象的设计与使用 391
11.4.1 什么是连接对象 391
11.4.2 数据库连接对象的使用 391
11.4.2.1 创建数据库连接对象 392
11.4.2.2 数据库连接对象在程序中的用法 392
11.4.3 EAServer连接对象的使用 393
11.4.3.1 创建EAServer连接对象 393
11.4.3.2 EAServer连接对象在程序中的用法 394
11.5 连接对象创建练习 394
11.6 用户对象在应用程序完善中的应用 398
11.6.1 操作系统文件夹的使用 398
11.6.2 数据窗口列排序 401
11.6.3 动态取得操作系统数据 404
11.6.4 程序的多媒体化 409
11.6.5 利用Word AutoServer完成复杂的文档检查 411
11.6.6 如何将程序图标添加到系统栏 420
11.6.7 系统时间的控制方法 425
第12章 函数和结构 429
12.1 函数的设计和使用 429
12.1.1 函数概述 429
12.1.2 函数的定义 430
12.1.2.1 打开函数画笔或视图 430
12.1.2.2 定义访问级别 432
12.1.2.3 定义返回类型 432
12.1.2.4 命名函数 432
12.1.2.5 定义参数 433
12.1.2.6 定义THROWS段(可选) 434
12.1.2.7 编码 434
12.1.2.8 编译保存函数 434
12.1.2.9 外部函数的定义 434
12.1.4 函数的使用 439
12.1.3 函数的修改 439
12.1.5 调用原则 440
12.1.6 函数应用实例 441
12.1.6.1 解压缩功能的实现 441
12.1.6.2 上网拨号功能的实现 473
12.1.6.3 邮件助理功能的实现 482
12.2 结构的设计和使用 512
12.2.1 结构概述 512
12.2.2.1 打开结构画笔或视图 513
12.2.2 结构的定义 513
12.2.2.2 命名结构 514
12.2.2.3 定义组成结构的变量 514
12.2.2.4 保存结构 514
12.2.3 结构的修改 515
12.2.4 结构的使用 515
12.2.4.1 通过结构传递参数 515
12.3 练习:实例函数与结构的创建 517
13.1 调试环境简介 521
第13章 程序调试 521
13.2 断点操作 523
13.2.1 调试程序的切换 523
13.2.2 断点的设置 524
13.2.3 断点的无效和有效 526
13.2.4 断点的清除 526
13.3 调试方法 526
13.3.1 调试的开始、继续和停止 527
13.3.2 各种调试方法的比较 527
13.4 查看信息 528
13.4.1 查看各种变量的值 528
13.4.2 查看其他信息 529
13.5 练习:跟踪调试 530
13.5.1 添加断点 531
13.5.2 调试应用 532
第14章 编译发行 535
14.1 概述 535
14.2.1 新建或打开工程对象 536
14.2 建立工程对象 536
14.2.2 编译生成各类对象 537
14.3 编译生成可执行应用 538
14.3.1 编译参数说明 538
14.3.2 资源文件的创建 540
14.3.3 选择所需打包方式 541
14.3.3.1 编码格式 542
14.3.3.2 打包文件 542
14.3.3.3 打包模型 543
14.3.4 编译生成和测试 545
14.4 发行可执行应用 546
14.4.1 PowerBuilder运行所需环境 546
14.4.2 数据源所需环境 546
14.4.2.1 数据库接口文件 547
14.4.2.2 配置ODBC驱动程序 547
14.4.2.3 配置Adaptive Server Anywhere运行系统 549
14.4.4 应用运行环境小结 550
14.4.3 可执行应用的支持文件 550
14.5 练习:编译发行 552
14.5.1 创建工程对象 552
14.5.2 编译生成可执行文件 553
14.5.3 创建快捷方式 554
14.5.4 测试可执行文件 554
第15章 PowerBuilder8.0开发Web应用的一般过程 555
15.1 建立工作环境 555
15.1.1 PowerBuilder8的Web开发功能 555
15.1.2 PowerBuilder8的一般开发过程 555
15.1.2.1 启动PowerBuilder 556
15.1.2.2 建立工作区 557
15.1.2.3 建立目标 558
15.1.2.4 建立和编辑文档 559
15.1.2.5 网页的设计结果预览 562
15.2 文档的编辑方法 562
15.3 载入WEB服务器发行 569
第16章 PowerBuilder8.0 Web应用开发实例 573
16.1 开发简单的HTML文档 573
16.2 在HTML文档中加入数据窗口 580
16.3 在HTML文档中加入Active X控件 583
第17章 Sybase企业应用服务工具介绍 589
17.1 分布式应用的使用技术 589
17.1.1 什么是分布式应用 590
17.1.2 PowerBuilder分布式应用的基本概念与运行原理 591
17.1.3 如何实现PowerBuilder应用的分布化 593
17.2 组件事务服务器--Jaguar CTS 595
17.2.1 Jaguar CTS简介 595
17.2.2 Jaguar CTS的结构 599
17.2.3 Jaguar CTS的组件事务管理 601
17.2.3.1 服务器的配置与管理 601
17.2.3.2 连接高速缓存管理 609
17.2.3.3 组件管理 615
17.2.3.4 包管理 616
17.2.3.5 事务管理 617
17.2.3.6 角色管理 617
17.2.4 Jaguar CTS组件开发 619
17.2.4.1 Jaguar应用程序的功能与结构 619
17.2.4.2 CTS应用程序的运行模式 620
17.2.4.3 CTS应用程序的构成 620
17.2.4.4 CTS应用开发的方式 620
17.3.1 PowerDynamo简介 621
17.3 动态站点管理工具--PowerDynamo 621
17.3.1.1 什么是PowerDynamo 622
17.3.1.2 PowerDynamo工作原理 623
17.3.2 PowerDynamo Web站点管理 626
17.3.2.1 构建PowerDynamo Web站点 626
17.3.2.2 PowerDynamo Web站点维护 632
17.3.3 PowerDynamo与Jaguar CTS 634
17.3.3.1 PowerDynamo和Jaguar CTS的关系 634
17.3.3.2 连接Jaguar CTS服务器 635
17.3.3.3 调用Jaguar CTS中的组件方法 639
附录A C/C++语言与PowerBuilder之间数据类型的转换 641
附录B 系统常用函数列表及应用 643
附录C VB编码规范 667
C.1 为什么要进行编码约定 667
C.2 最小编码约定 667
C.3 对象命名约定 667
C.4 常量和变量命名约定 671
C.5 结构化编码约定 673
C.5.2 记住下列几点 674
C.5.1 代码注释约定 674
附录D Java编码规范 677
D.1 简介 677
D.2 格式 677
D.2.1 缩进 677
D.2.2 间隔 679
D.2.3 空行 679
D.2.6 行最大长度 680
D.2.4 类成员的摆放顺序 680
D.2.5 文件格式(File Foumat) 680
D.2.7 括号 681
D.3 标识符 681
D.3.1 类和接口 681
D.3.2 包 681
D.3.3 其他标识符 681
D.3.4 get和set方法 682
D.4 注释 682
D.4.1 JavaDoc 682
D.4.1.1 类 683
D.4.1.2 方法 684
D.4.2 代码的自我说明 685
D.5 编码 686
D.5.1 决不要使用的结构 686
D.5.1.1 决不要使用do…wihile结构 686
D.5.2 不要混合使用递增运算符和递减运算符 687
D.5.1.4 决不要使用“break” 687
D.5.1.2 决不要在一个方法的中间使用“return” 687
D.5.1.3 决不要用“continue” 687
D.5.3 初始化 688
D.5.4 范围(scope) 688
D.6 编程的几点注意 688
附录E C++编码规范 693
E.1 简介 693
E.1.1 基本原理 694
E.2 代码组织与风格 694
E.2.1 代码结构 694
E.2.2 代码风格 697
E.3 注释 699
E.4 命名 701
E.4.1 名字空间命名 703
E.4.2 类命名 703
E.4.3 函数命名 704
E.4.5 异常命名 705
E.4.4 对象与函数参数命名 705
E.4.6 其他事项 706
E.5 声明 706
E.5.1 名字空间 706
E.5.2 类 706
E.5.3 函数 711
E.5.4 类型 715
E.5.5 常量与对象 716
E.6 表达式和语句 717
E.6.1 表达式 717
E.6.2 语句 719
E.7 特殊主题 719
E.7.1 内存管理 719
E.7.2 错误处理与异常 720
E.8 复用 721
E.9 编译问题 722