| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2636 人关注过本帖, 2 人收藏
标题:VFP学习、开发漫谈 (七)
取消只看楼主 加入收藏
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
结帖率:96.88%
收藏(2)
已结贴  问题点数:20 回复次数:3 
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
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册: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
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
收藏
得分:0 
好,有时间我也装个汉化版试试。如果仅是对特定语言文件的汉化,可能不会对稳定性有什么影响,如:Total Commander 就是将可执行文件与语言界面文件分离开的。我曾经试着用 UtraEdit 对一些小工具的可执行文件汉化过,一不小心就可能造成软件崩溃,后来就没有尝试过。搞技术的,可能都有点偏执。不过,从争执中我得到的收获是:在 Set Compatible DB4 时,若重定义数组则数据会丢失。


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

泉城飞狐
2014-03-04 15:39
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
收藏
得分:0 
我在英文版下测试过,确实如您所说,在 Set Compatible DB4 下重新定义数组时数据也会丢失。能否将最新版的汉化文件发到我的邮箱里(liuxingang287@)?谢谢!

泉城飞狐
2014-03-04 16:11
快速回复:VFP学习、开发漫谈 (七)
数据加载中...
 
   



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

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