1 类、对象与事件 1
1.1 Visual FoxPro中的类 1
1.1.1 类与对象 1
1.1.2 Visual FoxPro中类的层次 2
1.2 Visual FoxPro中的对象 3
1.2.1 对象的属性 3
1.2.2 与对象相关联的事件和方法程序 4
1.3 Visual FoxPro中的事件模型 5
1.3.1 容器事件和对象事件 5
1.3.2 Visual FoxPro中的核心事件 6
1.3.3 追踪事件序列 6
1.3.4 显示事件序列的表单示例 7
1.3.5 为事件指派代码 10
2 定制数据库 12
2.1 程序设计的过程 12
2.1.1 设计前的规划 12
2.1.2 用项目管理器创建项目 13
2.1.3 创建数据库 13
2.1.4 设计用户操作界面 13
2.1.5 设计访问信息的方法 14
2.2 数据库的定制过程 14
2.2.1 分析数据需求 14
2.2.2 将需求分类放入表中 14
2.2.3 确定所需字段 15
2.2.5 设计求精 16
2.2.4 确定关系 16
2.4 数据库的创建过程 17
2.4.1 创建数据库 17
2.3 图书馆(Library)数据库示例 17
2.4.2 向数据库中添加、移去一个表 18
2.4.3 创建永久关系 19
2.4.4 建立参照完整性 19
2.4.5 创建存储过程 19
2.4.6 查看和设置数据库属性 20
2.4.7 查看和修改数据库结构 20
2.4.8 引用多个数据库 20
2.4.9 数据库错误处理 22
2.5.2 设置字段属性 23
2.5 处理表 23
2.5.1 创建、复制表 23
2.5.3 处理记录 26
2.5.4 使用多个表 30
3 使用视图 32
3.1 创建视图 32
3.1.1 视图简介 32
3.1.2 创建多表视图 33
3.1.3 处理视图 33
3.1.4 创建参数化视图 33
3.2.1 更新视图数据 35
3.2.2 用数据字典定制视图 35
3.1.5 设置视图属性 35
3.2 在视图中更新数据 35
3.2.3 集成视图 36
4 表单 37
4.1 设计表单与数据环境 37
4.1.1 设计新表单 37
4.1.2 表单的类型 38
4.1.3 设置数据环境 39
4.1.4 在“数据环境设计器”窗口中设置关系 40
4.2 创建表单 41
4.2.1 指定表单类型 41
4.2.2 在顶层表单中添加菜单 41
4.2.3 在表单中添加属性和方法程序 41
4.3.1 添加Visual FoxPro容器 42
4.2.4 用表单集扩充表单 42
4.3 添加控件 42
4.3.2 确定表单中的控件数目 43
4.3.3 在设计时设置属性 43
4.3.4 编辑事件代码和方法程序代码 44
4.3.5 将表单和控件保存为类 44
4.4 管理表单 45
4.4.1 运行表单 45
4.4.2 关闭活动的表单 45
4.4.3 在对象层次上引用对象 46
4.4.4 在运行时使用表达式设置属性 46
4.4.5 对事件做出响应 47
4.4.7 将参数传递到表单或从表单返回值 49
4.4.6 隐藏表单 49
4.4.8 管理表单的多个实例 50
4.4.9 在表单中使用本地数据和远程数据 52
4.4.10 设置表单模板 52
5 使用控件 54
5.1 深入了解控件和数据 54
5.2 根据任务选择合适的控件 54
5.2.1 提供一组预先设定的选择 55
5.2.2 接受预先不能确定的输入 57
5.2.3 接受给定范围的数值输入 57
5.2.4 允许特定操作 58
5.2.5 以给定时间间隔执行指定操作 58
5.2.6 显示信息 58
5.3 用表格操作多行数据 59
5.4 方便使用控件的几种设计方法 60
5.5 扩展表单 61
5.5.1 页框 61
5.5.2 OLE控件 62
6 菜单与工具栏 63
6.1 规划菜单系统 63
6.2 创建菜单、快捷菜单、菜单项和子菜单 64
6.3 良好的菜单设计风格 65
6.3.1 访问键与快捷键 65
6.3.2 启用和废止菜单项 66
6.4 为菜单或菜单项指定任务 67
6.5.1 菜单项名称与编号 68
6.5 在运行时控制菜单 68
6.4.1 让菜单完成各种任务 68
6.4.2 向菜单系统添加初始化代码与清理代码 68
6.5.2 测试菜单系统 69
6.5.3 定制菜单系统 69
6.6 创建自定义工具栏 70
6.6.1 定义工具栏的操作 70
6.6.2 协调菜单和自定义工具栏 70
6.6.3 在表单集中加入工具栏和菜单 70
7 查询与报表 71
7.1 添加查询 71
7.1.1 创建SELECT-SQL语句 71
7.1.2 通过指定输出目标来保存查询结果 72
7.2.2 控制记录的选取及顺序 74
7.2.3 定义页面布局 74
7.2.1 控制数据源 74
7.2 添加报表和标签 74
7.2.4 在域控件中使用表达式和函数 75
7.2.5 插入当前日期与页码 75
7.2.6 定义报表变量 75
7.2.7 设置域控件的格式 76
7.2.8 改变报表控件的字体及颜色 77
7.2.9 为控件设置打印选项 77
7.2.10 为组设置打印选项 78
7.3 控制报表和标签的输出 78
7.4 集成查询和报表 78
8.1.1 构造应用程序框架 80
8 测试和调试应用程序 80
8.1 建立应用程序 80
8.1.2 为一个项目建立应用程序 81
8.1.3 连编应用程序 81
8.2 测试与调试应用程序 82
8.2.1 建立测试环境 82
8.2.2 设置验证信息 82
8.2.3 查看事件发生的序列 82
8.2.4 使用调试工具逐步发现错误 83
8.2.5 用断点停止程序的执行 84
8.3 处理类和对象中的错误 86
9.1.1 访问数据 87
9.1 控制对数据的访问 87
9 共享程序设计 87
9.1.2 锁定数据 88
9.1.3 使用数据工作期 88
9.1.4 使用私有数据工作期 89
9.1.5 缓冲访问数据 90
9.1.6 选择缓冲方法 90
9.1.7 选择锁定方式 90
9.2 更新数据 91
9.2.1 使用缓冲进行更新 91
9.2.2 使用事务管理更新 91
9.2.3 使用视图管理更新 97
9.3.1 使用索引 100
9.3 使用索引和缓冲优化系统性能 100
9.3.2 在经常使用的方法程序中减少代码 101
9.3.3 在多用户环境中优化应用程序 101
9.3.4 优化对远程数据的访问 101
9.4 管理冲突 102
9.4.1 管理缓冲冲突 102
9.4.2 出错处理例程 102
9.4.3 检测并解决冲突 103
9.4.4 管理冲突的规则 103
10 客户/服务器程序设计 104
10.1 设计客户/服务器应用程序 104
10.1.1 客户/服务器应用程序的设计目标 104
10.1.2 设计客户/服务器应用程序的技巧 105
10.1.3 快速开发应用程序 107
10.1.4 确保开发的准确性和数据的完整性 108
10.2 升迁Visual FoxPro数据库 109
10.2.1 原型化的目标 109
10.2.2 构造应用程序的本地原型 110
10.2.3 使用升迁向导 110
10.2.4 升迁到SQL Server上 110
10.2.5 升迁到Oracle上 111
10.3 实现客户/服务器应用程序 111
10.3.1 使用SQL pass-through技术 112
10.3.2 用SQL pass-through处理远程数据 112
10.3.3 处理SQL pass-through错误 113
10.4.1 加速数据检索 114
10.4 优化客户/服务器性能 114
10.4.2 获取需要的数据 115
10.4.3 控制获取数据量的大小 115
10.4.4 加速查询和视图的运行 115
10.4.5 提高更新和删除的性能 117
11 对象的属性、事件及方法程序 119
11.1 通有的属性、事件与方法程序 119
11.1.1 通有属性 119
11.1.2 通有事件 120
11.1.3 通有方法程序 121
11.2 控件独有的事件与方法程序 122
11.2.1 TextBox Control(文本框控件) 122
11.2.2 EditBox Control(编辑框控件) 123
11.2.3 CheckBox Control(复选框控件) 124
11.2.4 OptionButton Control(选项按钮控件) 125
11.2.5 OptionGroup Control(选项组控件) 126
11.2.6 ComboBox Control(组合框控件) 126
11.2.7 ListBox Control(列表框控件) 129
11.2.8 Grid Control(表格控件) 131
11.2.9 Column Object(列对象) 133
11.2.10 Spinner Control(微调控件) 134
11.2.11 CommandButton Control(命令按钮控件) 136
11.2.12 CommandGroup Control(命令组控件) 136
11.2.13 Timer Control(计时器控件) 137
11.2.14 Label Control(标签控件) 137
11.2.16 Image Control(图像控件) 138
11.2.15 Line Control(线条控件) 138
11.2.17 Shape Control(形状控件) 139
11.2.18 Container Object(容器对象) 139
11.2.19 OLE绑定型控件 140
11.2.20 OLE容器控件 141
11.2.21 PageFrame Control(页框控件) 141
11.2.22 Page Object(页面对象) 142
11.2.23 Form Object(表单对象) 143
11.2.24 FormSet Object(表单集对象) 146
12.1.2 定时器控件的Timer事件 148
12.1.1 定时器时钟类(clock)简介 148
12.1 定时器时钟类(clock) 148
12 控件的使用技巧 148
12.1.3 “时间显示框”文本框的VALUE属性 149
12.1.4 “日期显示框”文本框的VALUE属性 149
12.1.5 “时间格式”选项按钮组 149
12.1.6 “CLOCK”类实例化的对象 150
12.2 复选框属性设计 151
12.2.1 下拉列表框中的Init事件程序 151
12.2.2 下拉列表框中的InteractiveChange事件程序 151
12.2.3 复选框1的事件程序 152
12.2.4 “总在最前面”复选框的事件程序 152
12.2.5 复选框控件的属性设置 152
12.2.6 “用户可以移动表单”复选框的事件程序 153
12.2.8 “退出”按钮的Click事件程序 154
12.2.7 “是否续订”复选框的属性设置 154
12.3 VCR类 155
12.3.1 VCR类中按钮的自定义方法程序及事件驱动程序 155
12.3.2 用户自定义类datachecker的方法程序 158
12.4 菜单控制 164
12.4.1 菜单控制表单的初始化方法程序 164
12.4.2 菜单chkmenu.mpr的定义程序 164
12.4.3 释放表单时的方法程序 165
12.4.4 “显示菜单”按钮的事件程序 165
12.5 设置应用程序运行时的路径 166
12.5.1 使用sys(1271)函数设置程序运行路径 166
12.4.6 “选取”栏中复选框的事件程序 166
12.4.5 “有效”栏中复选框的事件程序 166
12.5.2 设置运行路径的程序 167
12.6 命令按钮属性设置 167
12.6.1 图形按钮的事件程序 168
12.6.2 “自动调整”复选框的事件程序 169
12.6.3 “命令按钮组”框中按钮组的事件程序 169
12.6.4 “设置前景色”按钮的事件程序 170
12.6.5 “全部有效”复选框的事件程序 170
12.7 表格属性 171
12.7.1 表格列的Sparse属性简介 171
12.7.2 表格属性设置表单中复选框的事件程序 172
12.8 拖动例程设计 172
12.8.1 拖动例程表单中“移动对象”页面的dragdrop()事件程序 172
12.8.3 页面内“请拖动”按钮的mousemove()事件程序 173
12.8.4 图标形状的双击事件程序 173
12.8.2 页面内“请拖动”按钮的dragdrop()事件程序 173
12.8.5 目标形状的拖动事件程序 174
12.9 调整表格列属性 174
12.9.1 “表格的动态格式”下拉列表框的初始化程序 174
12.9.2 “表格的动态格式”下拉列表框的事件程序 175
12.9.3 表格列标头的click()事件程序 176
12.10 Menulib菜单类的创建 177
12.10.1 Menulib类的destroy()事件程序 178
12.10.2 Menulib类的自定义方法程序deactivatemenu() 178
12.10.3 Menulib类的自定义方法程序showmenu() 178
12.11 动态创建快捷菜单 179
12.11.2 表单的双击事件程序 180
12.11.1 编辑框的鼠标右击事件程序 180
12.11.3 表单的鼠标右击事件程序 181
12.11.4 用于处理表单双击菜单事件的自定义方法程序 181
12.11.5 用于设置字体的自定义方法程序 182
12.12 编辑备注字段及文本文件 183
12.12.1 编辑备注字段和文本文件表单的释放事件程序 183
12.12.2 “打开文件”按钮的click()事件程序 184
12.12.3 “保存”按钮的click()事件程序 185
12.13 文本格式控件类 186
12.13.1 “字体”下拉列表框的事件程序 186
12.13.2 “字号”下拉列表框的事件程序 187
12.13.3 “黑体”复选框的事件程序 188
12.13.4 “斜体”复选框的事件程序 189
12.13.5 “下划线”复选框的事件程序 189
12.13.6 “颜色”下拉列表框的事件程序 190
12.13.7 类对象的释放事件程序 191
12.13.8 类对象的数据刷新方法程序 192
12.14 使用tbrediting类的表单集 193
12.15 在表单中添加菜单项 193
12.15.1 菜单定义程序 194
12.15.2 表单的卸载事件程序 195
12.15.3 “添加”按钮的事件程序 195
12.15.4 “移动”按钮的事件程序 195
12.15.5 “更新”按钮的事件程序 196
12.15.6 “菜单项”列表框的事件程序 196
12.15.7 “菜单项”编辑框的事件程序 196
12.15.8 “状态栏信息”编辑框的事件程序 196
12.16.1 moverlists类中左列表框的事件程序 197
12.16 moverlists类的创建 197
12.16.2 moverlists类中各按钮的单击事件程序 198
12.16.3 moverlists类中右列表框的事件程序 199
12.17 使用moverlists类的表单 201
12.17.1 表单的初始化程序 201
12.17.2 “打印到屏幕”按钮的单击事件程序 202
12.18 在列表框中显示多列 202
12.18.1 调整列表框显示列数表单的自定义方法程序 202
12.18.2 “选择列数”微调控件的事件程序 203
12.18.3 控制是否显示列分割线 204
12.19 对列表框中的项目进行排序 204
12.19.1 对列表框中项目排序表单的初始化程序 204
12.20.1 显示位图表单的初始化程序 205
12.19.2 “排序”按钮的单击程序 205
12.20 在画图控件中显示位图 205
12.20.2 文件列表框的事件程序 206
12.20.3 “文件类型”组合框的事件程序 206
12.20.4 “位图尺寸”组合框的事件程序 206
12.20.5 “位图边框”复选框的单击事件程序 206
13 文件级程序设计 207
13.1 打印数据库结构 207
13.1.1 “打印数据库结构”表单的功能 207
13.1.2 “打印”按钮的click()事件程序 207
13.2 获取程序版本信息 211
13.2.1 显示版本信息表单的初始化方法例程 211
13.2.4 文件编辑框的初始化方法例程 212
13.2.3 表单卸载方法例程 212
13.2.2 表单加载启动方法例程 212
13.2.5 选择文件命令按钮的事件程序 213
13.2.6 “版本信息”按钮的click()事件程序 213
13.3 绘图表单 215
13.3.1 绘图表单集的方法程序 215
13.3.2 画图表单的事件程序 219
13.3.3 控制表单及控制表单内各控件的事件程序 221
13.3.4 表单外定义的例程 223
13.4 创建索引 227
13.5 打印表属性 229
13.5.1 打印表属性表单的自定义方法程序 230
13.5.2 打印表属性表单中各按钮的事件程序 231
13.6.2 运行多个实例表单的卸载事件程序 234
13.6 可运行多个实例的表单 234
13.6.1 运行多个实例表单的自定义方法程序 234
13.6.3 运行多个实例表单的初始化程序 235
13.7 运行一个表单的多个实例 235
13.7.1 主表单的创建例程 235
13.7.2 主表单中“运行表单”按钮的单击程序 236
13.8 从表单返回值 237
13.8.1 主表单中“注册”按钮的单击程序 238
13.8.2 注册表单及注册表单中各按钮的事件程序 238
13.9 创建SQL语句 239
13.9.1 生成SQL语句表单的事件程序 239
13.9.2 生成SQL语句表单内各控件的方法程序 243
13.10.1 读取ODBC注册信息表单的方法程序 245
13.10 读取ODBC注册信息 245
13.10.2 “驱动设备”、“数据源”选项按钮组的单击事件程序 246
13.10.3 ODBCReg类的定义 247
13.11 SDI表单 249
13.11.1 SDI表单的destroy事件程序 249
13.11.2 SDI表单中各按钮的事件程序 249
13.11.3 表单中工具栏的方法程序 252
13.12 在表单中组合菜单和工具栏 252
13.12.1 控制菜单和工具栏表单的事件程序 253
13.12.2 控制菜单和工具栏表单中颜色复选框的事件程序 253
13.12.3 工具栏类的事件程序 253
13.13 在表单中处理文本文件 254
13.12.5 为菜单项定义的执行命令 254
13.12.4 工具栏中按钮的单击事件程序 254
13.13.1 处理文本文件表单的事件程序 255
13.13.2 处理文本文件表单中各控件的事件程序 257
13.14 消息框的操作 261
13.14.1 设置消息框属性表单的事件程序 261
13.14.2 设置消息框属性表单中各控件的事件程序 262
14 标准按钮的事件程序 265
14.1 VF向导模板中的表单通用按钮组类 265
14.1.1 Txtbtns类的事件程序 265
14.1.2 Txtbtns类中各按钮的单击事件程序 281
14.2 查找窗口searchform类 291
14.2.1 Searchform类中各控件的方法程序 292
14.2.2 searchclass类的方法程序 294
14.2.3 命令按钮组类的单击事件程序 298
14.2.4 searchform类的方法程序 298
15 城市供热行业采暖费收缴管理系统 300
15.1 系统简介 300
15.1.1 适用范围 300
15.1.2 系统特点 300
15.2 数据库设计 300
15.2.1 数据库结构 300
15.2.2 设计方案 301
15.3 系统分析 302
15.3.1 系统初始化 302
15.3.2 “面积普查表”的录入表单 304
15.3.3 “普查表排序”表单 305
15.3.5 收费表录入表单 306
15.3.6 整理收费表表单 306
15.3.4 建设配套费收取录入表单 306
15.4 报表打印 309
15.4.1 打印用户卡 309
15.4.2 打印面积普查表 312
15.4.3 打印收费表 315
15.4.4 打印收费明细表 316
16 小型企业工资管理系统 319
16.1 系统简介 319
16.1.1 系统功能及软硬件环境 319
16.1.2 数据库结构 319
16.2.1 由VF系统生成的主程序gzgl.prg 320
16.2 功能模块 320
16.2.2 录入工资表常项 322
16.2.3 “部门表”表单 322
16.2.4 职工录入表单 323
16.2.5 固定工资表的生成 324
16.2.6 生成月工资报表 325
16.2.7 浏览并调整当月工资报表 326
16.2.8 生成工资汇总表的表单 327
16.2.9 打印工资报表 331
16.3 银行报表 334
16.3.1 初始化银行报表 334
16.3.2 报表生成表单 334