标题:VFP学习、开发漫谈 (七)
只看楼主
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
结帖率:96.77%
已结贴  问题点数:20 回复次数:32 
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 编辑 ]
收到的鲜花
  • tlliqi2014-03-03 13:53 送鲜花  20朵   附言:加分
搜索更多相关主题的帖子: 稳定性 第三方 工具栏 爱好者 英文版 
2014-03-03 13:06
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
第一个学习
2014-03-03 13:52
brownze
Rank: 1
等 级:新手上路
帖 子:20
专家分:6
注 册:2014-2-26
得分:0 
楼主辛苦了,写得非常的好
2014-03-03 15:28
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
标记

DO IT YOURSELF !
2014-03-03 16:55
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
重要的基本知识

活到老,学到老! http://www. E-mail:hu-jj@
2014-03-03 19:08
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
得分:0 
学习了,继续啊
2014-03-03 23:00
asdf_123000
Rank: 4
等 级:业余侠客
威 望:1
帖 子:262
专家分:203
注 册:2012-12-20
得分:0 
2014-03-04 08:08
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
以下是引用liuxingang28在2014-3-3 13:06:43的发言:

经过周末的“养精蓄锐”,今天,接着与大伙聊一聊 VFP 9.0 SP2 英文版的开发环境。

自 VFP 6.0 之后,微软就没有出过中文版。对于各网站上发布的所谓 VFP 9.0 中文版均是第三方编程爱好者私下改造的“汉化版”。因本人未使用过汉化版,不敢妄加评论,但有一点可以肯定:其稳定性不如原版

......
一面说不敢妄加评论,一面还是评论了。既然未使用过汉化版,有什么证据表明稳定性不如原版?汉化版也有版本问题,初期的汉化版可能是有点小问题,但截止目前为止,最近的一次汉化版已经比较完美了。不知道楼主说的稳定性不好是指哪方面?说出来,用汉化版的人大家做做实验。我觉得看书学习是需要的,但并不是说某个VFP权威人物写书时用了英文版,就表示了汉化版不好。至今为止,我用VFP写了不下10W行代码,用的都是汉化版,从未有过稳定性问题。


[ 本帖最后由 taifu945 于 2014-3-4 08:19 编辑 ]
2014-03-04 08:16
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
以下是引用taifu945在2014-3-4 08:16:52的发言:

一面说不敢妄加评论,一面还是评论了。既然未使用过汉化版,有什么证据表明稳定性不如原版?汉化版也有版本问题,初期的汉化版可能是有点小问题,但截止目前为止,最近的一次汉化版已经比较完美了。不知道楼主说的稳定性不好是指哪方面?说出来,用汉化版的人大家做做实验。我觉得看书学习是需要的,但并不是说某个VFP权威人物写书时用了英文版,就表示了汉化版不好。至今为止,我用VFP写了不下10W行代码,用的都是汉化版,从未有过稳定性问题。

汉化版是在原版的基础上修改而成,并且这种修改不是官方原代码级别的,它的稳定性只能比原版差,不可能比原版高。我说的错在哪里?从版主发布的《Visual Foxpro 9.0入门手册》中就可以看出:在重定义数组时,由于原值被重置,不得不通过一个临时数组来保存原值,但使用原版就没有此问题。这还不能说明汉化版的稳定性不如原版吗?难道是汉化版的稳定性比原版高吗?


[ 本帖最后由 liuxingang28 于 2014-3-4 11:00 编辑 ]

泉城飞狐
2014-03-04 08:57
asdf_123000
Rank: 4
等 级:业余侠客
威 望:1
帖 子:262
专家分:203
注 册:2012-12-20
得分:0 
原版是初衷,汉化是改进,愿用哪版就哪版,反正都可开发程序,习惯不同而矣.多说开发程序的长处,不互相说无意义的版本好坏.
2014-03-04 09:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-427932-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016715 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved