VFP学习、开发漫谈 (七)
经过周末的“养精蓄锐”,今天,接着与大伙聊一聊 VFP 9.0 SP2 英文版的开发环境。自 VFP 6.0 之后,微软就没有出过中文版。对于各网站上发布的所谓 VFP 9.0 中文版均是第三方编程爱好者私下改造的“汉化版”。因本人未使用过汉化版,不敢妄加评论,但有一点可以肯定:其稳定性不如原版。
对于象我这样的老狐友,几乎每天都要与 VFP 打交道,为了快速进入 VFP 开发环境,在“快速启动”工具栏上建立一个快捷方式是一个不错的选择。与桌面快捷方式相比,快速启动工具栏有两个优点:一是单击快捷方式即可启动程序,二是不用考虑桌面被其他窗口遮挡。
VFP 支持重复启动,即:可同时打开多个 VFP 窗口。我一般在两种情况下打开多个VFP窗口:一是在调试程序时模拟多用户环境。比如,在一个窗口中将表记录锁定,然后在另一个窗口中观察表的状态以及对各命令的影响。二是在不退出一个应用项目的情况下,去修改另一个应用程序项目。
要开发一个应用程序,无论程序大小都应该从建立“项目文件”开始,通过项目管理器去新建、修改、删除和编译各项目文件。在为项目文件命名时,应该将其命名为编译后应用程序的名字。比如:编译后应用程序的名字是 Salary.exe,则应该将项目文件保存为“Salary.pjx”。这样,在对项目文件进行编译时,就不用再修改文件名了。
一个应用项目包含各类文件,为了方便管理,应该将文件分类存放在不同的子文件夹下。比如,我要开发一个人力资源管理系统,先建立一个“D:\HR”文件夹,项目文件就保存在该文件夹下。然后再在 HR 文件夹下建立 8 个子文件夹:
1. Data: 保存数据库文件、表文件、索引文件
2. Form: 保存表单文件
3. Report: 保存报表文件、标签文件
4. Program:保存程序文件
5. Class: 保存类文件
6. Menu: 保存菜单文件
7. Bitmap: 保存各种图片文件
8. Other: 保存其他文件,如:Config.fpw,*.txt,*.ocx,*.xls等
启动 VFP 后,默认情况下你应该看到的是“Task Pane(任务窗格)”窗口,该窗口启动较慢,因为它要搜索互联网上的最新内容。我不太喜欢该窗口,一般在启动VFP时,不启动该窗口。但通过该窗口,可以打开两个很重要的辅助工具。一个是 Data Explorer(数据浏览器),通过该工具可以查看远程 SQL Server 上的数据。另一个是 Solution Samples(解决方案示例),这些例子都是微软开发人员精心编写的示例,对VFP开发人员很有指导意义。张洪举先生曾出过一本《Visual Foxpro 6.0~9.0解决方案与范例大全》就是讲述这些示例的,读后受益匪浅。
在程序开发过程中,有三个窗口是我经常使用的:命令窗口、属性窗口和文档查看器(Document View)窗口。前两个窗口,我就不说了,这里着重说说文档查看器窗口。
通常,我将经常使用的自定义函数放在一个叫 MyFunc.prg 的过程文件中。由于函数较多,在该文件中要查找函数时,比较困难。这时,打开文档查看器,你会发现:函数名以字母顺序都列在该窗口中,就象一个一个的书签。单击函数名,就可快速定位到该函数,十分方便、快捷。还有,在修改表单时,所有指定了代码的事件、方法、自定义方法,都列在文档查看器窗口中,单击事件或方法名,即可快速打开代码编辑窗口。
由于这三个窗口经常使用,所以它们都应该显示在VFP窗口中。为了节省屏幕空间,我一般将这三个窗口以“标签”的方式停靠在窗口的右侧。
在调试程序时,我也经常使用“数据工作期窗口(Data Session Window)”。但一般情况下,我不“停靠”该窗口。因为该窗口的内容不是及时刷新的,往往需要激活一下其他窗口时才刷新,这还不如单击工具栏上的按钮重新打开该窗口来得方便。
为了能够顺畅地访问到项目的各类文件,以及为调试程序提供一个适当的环境(如:用户名、权限),我一般都会在项目中增加一个 Start.prg,在该文件中设置“默认路径”和“搜索路径”,并设置全局变量。打开项目后,先运行一下该程序。在编译时应排除该文件。Start.prg 的内容如下所示:
PUBLIC gcPass,gnUserId,gcName
gcPass = '12345'
gnUserId = 1
gnUserName = '泉城飞狐'
SET DEFAULT TO "D:\VFP Project\HR"
SET PATH TO DATA;FORM;REPORT;PROGRAM;CLASS;MENU;BITMAP;OTHER
有些用户可能喜欢在“Tools - Options - File Locations”中设置默认路径和搜索路径。由于在这里修改的都是全局设置,若你有多个项目,频繁修改系统设置反而不方便。
在运行表单时,若修改后没有保存,则系统会提示你保存文件。能不能使系统不提示而自动保存呢?可以。方法是:打开 Options 窗口,切换到 Forms 页面,取消“Prompt to save changes before running form(在运行表单前提示保存)”复选框即可。
我有一个习惯,就是在编辑代码时喜欢看一下代码共有多少行。一般情况下,若代码超过一定行数,就考虑看该代码是否能够拆分成若干个自定义方法或函数,以改善代码的可读性。记得,1992年,我分配到公司的财务处搞会计电算化,我的师哥是学应用数学的,他编写的每个程序都有上千行,变量名都是“i1,i2”之类的无含义标识符,看这些代码就是在读天书。
言归正传,如何掌握代码的行数呢?方法是:打开 Options 窗口,切换到 IDE 页面,从 Type 中选择“Program Files(程序文件)”,选定“Override individual Setting(覆盖单项设置)”和“Show line/column position(显示行/列位置)”。同理,再从 Type 中选择“Code Window(代码窗口)”,再选定“Override individual Setting”和“Show line/column position”这两个选项。这样,代码窗口中当前位置的行号和列号会显示在状态栏上。有时侯,状态栏上的行号和列号会被其他信息覆盖,此时,在命令窗口中输入 Set Message To 清理一下状态栏即可。
要快速选定容器控件中的子控件,可按下 Ctrl+Shift 单击子控件,这要比在容器控件上单击右键,选择“Edit”,再单击子控件要方便的多。但是,这里有一个问题:按下 Ctrl+Shift时,会切换中文输入法。一般来说,我们所使用的输入法相对固定(本人使用的输入法是“极点五笔”),所以可以通过以下方法取消 Ctrl+Shift 切换输入法的功能:打开控制面板中的“区域和语言选项”,切换到“语言”页,单击“详细信息”,单击“键设置”,在列表中选择“在不同的输入语言之间切换”,单击“更改按键顺序”,取消对“切换输入语言”复选框的选定。
最后,再说一下命令窗口。VFP 的智能感知功能很强大,大部门命令或函数仅需输入前 4 个字符(MessageBox()函数较特殊,应该输入msgb)按下空格(函数是左括号)即可补齐全称。还有更绝的,比如:在命令窗口中输入 mc 按下空格,系统会自动转换成 MODIFY COMMAND。如果当前窗口是程序代码窗口,输入 ifend 按空格或回车,则系统会自动转换为:
IF
ENDIF
那么,如何知道系统对哪些字符进行转换了呢?可打开“Tools - IntelliSense Manger(智能感知管理器)”窗口,切换到“Custom”页查看。
命令窗口中显示的信息会越来越多,在命令窗口中单击右键,选择“Clear”即可清除命令窗口中的内容。将光标移到任意一行,按下回车键即可将该命令重新执行一遍。选择多行命令,单击右键,选择“Execute Selection”,即可将选定的命令整体执行一遍。
[ 本帖最后由 liuxingang28 于 2014-3-3 15:41 编辑 ]