第一章建立应用程序的准备工作 1
1.1起步(创建子目录结构) 1
1.2克服惯性 3
1.3建立Setup程序 3
第二章菜单和数据库 8
2.1建立菜单 8
引言 11
目 录 11
2.2菜单选项的控制 13
2.2.2 TSMAIN.PRG程序的另一种实现方式 15
2.2.1应用程序的运行 15
2.3建立数据库 16
2.4对菜单系统增加新的特征——第一次改进 16
2.5建立数据库结构 16
2.6一些思考及字段名的命名 18
第三章Clients数据操作 20
3.1 要开发的第一个子程序:Clients 20
3.2暂时的回顾与代码段的正确使用 25
3.3 Snippets(代码段)的用法 27
3.5项目管理器(Project Manager)的用法 28
3.4屏幕生成的过程 28
3.6菜单选择的复杂情况处理 30
第四章Clients数据输入的完善 32
4.1记录的上下移动 32
4.2对记录的修改和保存 33
4.3删除clients记录 37
4.4用READ SHOW解决空表的问题 38
4.5增加client记录 40
4.6查找Client记录 43
5.1 Employees的数据输入屏 44
第五章Employees和Projects的数据输入 44
5.2 Project数据输入 45
5.3增加一个Project记录 48
5.4删除Project记录 50
5.5关闭Project屏 50
5.6对Project窗口的存取 51
5.7编辑修改project记录 51
第六章Time Sheets基本数据输入 52
6.1 TimeSheets多文件数据输入屏 52
6.2设计多窗口的一般步骤 52
6.3确定封锁模式和屏幕形式 53
6.4打开数据库文件和为Time sheet数据输入建立mvars 54
6.5建立TimeSheet Weekly Entry窗口 56
6.6建立Timesheet Data Entry窗口 58
6.7 TSTIME中的程序空架(stub)和SAY用户自定义函数 61
6.8事件的处理 64
6.9 Time Sheet屏中引入Browse窗口 66
6.10 Week记录的上下移动 68
6.11 Week记录的查找 71
6.12浏览查找(Brouse Search)的键定义 73
6.13小结 73
第七章Time Sheets数据更新输入 74
7.1 Edit按钮 74
7.2保存Week记录的过程 77
7.保存Time记录的保存过程 78
7.4窗口的转移 78
7.5菜单的选择 80
7.6Time Sheet上的上下移动 81
7.7在Browse窗口中对记录的移动 81
7.8取消对week记录的修改 82
7.9取消对Time记录的修改 83
7.10删除Time记录 83
7.11增加Week记录 83
7.12增加Time记录 86
8.1 90年代的报表技术 92
第八章Time Sheet应用程序的报表与查询 92
8.2生成按employee,client和pro iect分类的周报表 93
8.3增加一点灵活性 93
8.4程序的充分灵活性与易于使用的矛盾 95
8.4.1按批方式运行多个报表 95
8.4.2用户对报表的临时性修改 100
8.4.3查询的修改 101
8.4.4改变输出文件名 103
8.5报表的运行 106
8.6对修改的保存 109
8.7增加新的报表 110
8.8小结 113
第九章命名约定 115
9.1在文件名中使用两个字符作为前缀 116
9.2库例程(Library Routines)前缀 116
9.3数据库文件的命名 116
9.4字段的命名 117
9.6程序、用户自定义函数和过程文件的命名 118
9.7局部变量的命名 118
9.11窗口的命名 119
9.10 POPUP的命名 119
9.9参数变量的命名 119
9.10数组的命名 119
9.8全局变量的命名 119
第十章SQL SELECT 120
10.1 SQL SELECT命令简介 120
10.2基本的SQL SELECT 120
10.2.1 FROM子句 121
10.2.2 SELECT子句 121
10.2.3 SQL和用户自定义函数 121
10.2.5 SELECT子句中的关键字和其它子句 122
10.2.4 SQL语法分析器 122
10.2.6 SQL和宏 126
10.2.7 SQL与字母的大小写 126
10.2.8 SQL和索引 127
10.2.9用ORDER BY子句对查询结果排序 127
10.2.10列函数 128
10.2.11查询结果输出的定向 131
10.3 FoxPr02.5 RQBE和SQL SELECT 134
10.3.1 FROM(表) 134
10.3.3 WHERE子句 135
10.3.4选择条件 135
10.3.2 SELECT子句(□字段/输出字段) 135
10.3.5连接条件对话框 136
10.3.6 ORDER BY 136
10.3.7 GROUP BY 136
10.3.8 HAVING子句 136
10.3.9输出 136
10.3.10使用RQBE的原因 137
10.3.11 不使用RQBE的原因 137
10.4复杂查询 137
10.4.1子查询 137
10.4.2自身连接 141
10.4.3合并(UNION) 142
10.4.4外连接 145
10.5对SQL的补注 146
10.6结束语 146
第十一章Report Writer的使用 147
11.1启动Report Writer 147
11.2对象的概念 147
11.2.1对象的生成 148
11.2.2对象的移动和大小改变 148
11.2.3 Selection Marquee的使用 148
11.3.2页标题(page Header)带 149
11.3.1标题(title)带 149
11.2.4对象分组(group) 149
11.2.5文本操作 149
11.3关于Bands(带) 149
11.3.7列脚注(column Footer)带 150
11.3.9汇总(summary)带 150
11.3.8页脚注(Page Footer)带 150
11.4调整带的大小 150
11.3.6组脚注(Group Footer)带 150
11.3.5细节(Detail)带 150
11.3.4分组标题(Group Header)带 150
11.3.3列标题(column Header)带 150
11.5使用Quick Report选项 151
11.6生成一个简单报表 151
11.6.1改变格式 151
11.6.2报表的浏览 151
11.6.3计算说明 151
11.6.4处理分组 152
11.6.5报表的完成 154
11.7产生一个复杂报表 154
11.7.1报表变量的说明 155
11.7.2嵌入的用户自定义函数 157
11.7.3函数的调用 158
11.8生成格式信件和标签 158
11.9 Windows有关问题 161
11.9.1图形对象 161
11.9.2字形 162
11.10打印报表 162
第十二章BROWSE命令 164
12.1 BROWSE命令介绍 164
12.2 BROWSE命令的窗口生成 164
12.2.1格式化BROWSE字段 165
12.2.2 BROWSE中的有效性检查 166
12.2.3 BROWSE导出字段 166
12.2.4 BRCOWSE窗口的美观 167
12.2.5关于BROWSE窗口的各种选项 168
12.3BROWSE窗口的名字 169
12.4 BROWSE作为选择列表 170
12.4.1在BROWSE窗口中的递增搜索 172
12.4.2在BROWSE窗口中选择多个记录 172
12.5数据输入 175
12.6多个数据库,一个BROWSE窗口 176
12.8一个集成的BROWSE 178
12.7多个相关联的数据库,多个BROWSE窗口 178
12.9在BROWSE窗口中标识当前记录 179
12.10多用户环境中考虑的问题 180
12.11结束语 181
第十三章多用户环境下的程序设计问题 182
13.1在多用户环境下打开数据库文件 182
13.2主动封锁与被动封锁 188
13.2.1被动封锁技术 189
13.2.2主动封锁技术 191
13.3如何判定数据发生了改变? 193
13.4对共享数据库增加记录 197
13.5增加唯一性的ID 200
13.6由系统顺序生成的ID 203
13.7多表多记录的更新 205
13.7.1多表多记录插入的事务 206
13.7.2多表多记录的修改事务 209
13.7.3多表多记录的删除事务 212
13.8错误捕获 213
13.8.1资源冲突错误捕捉 214
13.8.2程序错误的捕获 215
13.10 SET REFRESH命令 223
13.9 SET REPROCESS命令 223
14.1什么是事件驱动程序? 225
14.1.1会话过程 225
14.1.2事件 225
第十四章事件驱动程序 225
14.1.3控制循环 226
14.1.4控制变量 226
14.2 FoxPro应用系统开发人员面临的问题 226
14.2.2在当前会话过程中选择一新的会话过程 227
14.3事件驱动需求 227
14.2.1选择局部事件 227
14.3.1屏幕上保留多个会话过程 228
14.3.2返回到上一会话过程中 230
14.3.3保存窗口的位置信息 232
14.3.4保存变量值 233
14.3.5关闭余下的会话过程 234
14.3.6处理BROWSE窗口的麻烦问题 235
14.4事件驱动程序的优点与不足 236
第十五章提高系统性能的方法 238
15.1速度的重要性 238
15.3 Rushmore优化技术 239
15.2对FoxPro速度的评价 239
15.3.1使用Rushmore的条件 240
15.4减少索引数量 241
15.5特殊的SELECT 242
15.6对有删除标志记录的处理 242
15.7 SETORDER TO的使用 243
15.7.1对SET ORDER问题的解决 243
15.7.2 SORT,INDEX,SET ORDER命令 246
15.7.3 SORT与INDEX的选择 247
15.7.4 ORDER BY外码的解决方法 248
15.8带条件显示记录:BROWSE KEY与BROWSE FOR 250
15.9 SEEKWHILE与FOR 251
15.10 APPEND FROM命令 251
15.11 INSERT INTO与APPEND BLANK 252
15.12提高Popup速度的方法 252
15.13有选择地使用宏 254
15.13.1 引用对象:宏与名的间接引用 254
15.13.2计算表达式:宏与EVALO 255
15.14子字符串查找 256
15.15不要重用DELETEDO记录 259
15.17 Client-Server神话 260
15.16九条提高速度的技巧 260
第十六章窗口的美观技术 262
16.1多平台(Cross-platform)应用程序问题 262
16.2屏幕1:背景 262
16.2.1颜色与Wallpaper(花纹) 264
16.2.2 Wallpaper(花纹) 264
16.3屏幕2:用于控制的位图文件 265
16.3.1使用图标的方法 265
16.3.2改变图标 266
16.4报表1:字体的使用 266
16.4.1字体的改变 267
16.4.2用OLE插入对象 268
16.5报表2:浏览与打印 268
16.5.1将报表保存并输出到文件中的方法 268
16.5.2报表输出的选择 268
16.6增加一点“时髦” 269
第十七章FoxPro中C语言的使用 270
17.1 FoxPro中使用C的方法和原因 270
17.2 C程序的一些元素 270
17.2.1头文件 270
17.2.2全局变量 270
17.3一个简单的函数 271
17.2.5 FoxInfo结构 271
17.2.4返回值 271
17.2.3代码 271
17.3.1编译 274
17.3.2连接(Linking) 274
17.3.3将新函数加到FoxPro中 275
17.3.4参数和返回值的其它类型 276
17.4用API改进性能 276
17.3.1对事件循环增加处理过程的方法 277
17.4.2对大计算量循环的处理 280
17.4.3使用算术协处理器 281
17.5适应现有的DOS程序 282
17.5.1第一步:定义变量 284
17.5.2第二步:低级文件I/O 285
1 7.5.3第三步:内存管理 286
17.5.4第四步:调用计数函数 286
17.5.5第五步:返回值 286
17.6增强FoxPro功能 286
17.6.1 Windows API的使用 287
17.6.2非标准的调用 288
17.7小结 289
18.2 Windows环境下的数据交换 290
18.1 DOS环境下的数据交换 290
第十八章用OLE和DDE共享Windows环境 290
18.2.1单任务方式 291
18.2.2多任务方式 292
18.2.3“Docu-Centsic”一个全新的领域 311
第十九章库函数 312
19.1使用库函数的优缺点 312
19.2建立好的库函数的建议 313
19.2.1同一参数中传递多个值的方法 315
19.2.2使用单参数库函数的捷径 317
19.2.3建立Shell 317
19.2.4 L3MSGW.PRG的用法 318
19.2.5从单字符串中分析多选项的方法 323
19.2.6缺省值的处理 324
19.2.7有比例的字体的分行 325
19.3 L3nextid的说明和过程参数的传递方法 327
第二十章数据字典 331
20.1主动、被动和支持性数据字典 331
20.2目标 331
20.3数据结构 332
20.4保持数据字典活动 333
20.5触发数据字典活动 335
20.6执行数据字典活动 336
20.7保存未完成的Browse窗口的修改 337
20.8读取现存的.DBF结构 339
20.9利用数据字典写.DBF结构 341
20.10后继和前驱数据库 344
20.11使用查找、裁剪和拼接 346
20.12只显示.DBF 348
20.13扩展和缩小当前.DBF结构 349
20.14增加和拷贝记录 349
21.1多平台间转移 350
第二十一章关于多种平台上程序设计的问题 350
21.2 FoxPro表和Trannsporter 351
21.2.1从MS-DOS向Windows传送报表 351
21.2.2从Windows向MS-DOS传送报表 353
21.2.3从Windows向MS-DOS传送屏幕 354
21.3修改对象 355
21.4采用不同编码和FoxPro 355
21.4.1特定的平台代码 357
21.4.2采用不同编码和用户 358
21.5 ON SHUTDOWN命令和Windows屏幕字体 360
21.6.3菜单 361
21.6.2报表 361
21.6维护多平台应用程序 361
21.6.1屏幕 361
21.6.4标签 362
21.7运行多平台 362
第二十二章合作编程 363
22.1共同工作 363
22.1.1独立工作 363
22.1.2在集体中工作 363
22.1.3领导一个集体工作 363
22.3问题 364
22.3.1项目负责人不了解FoxPro 364
22.2项目案例 364
22.3.2配备雇员及选聘顾问 365
22.3.3责任权 365
22.3.4分阶段提交的方法 365
22.3.5标准 365
22.3.6交流 366
22.3.7开发环境与版本控制 366
22.4为FoxPro开发组提供的工具 368
22.4.1数据字典 368
22.4.2问题系统 368
22.4.3版本控制系统 369
22.5结束语 369