ccidnet????

出版日期:2001-10-31 总期号:442 本年期号:42

本期导读
热点聚焦
硬件世界
CCE评测
软件.net
数码娱乐
社会培训
教育信息化
编读往来
依然强劲的VFP 7

冯宗任

  朋友们好!我是《中国电脑教育报》的卧龙传说。自从今年第37期推出VFP会客室后,受到编程爱好者的广泛关注,我在此表示感谢。前不久,有人说FoxPro 3.0 怎么不稳定,在网络环境下,表索引很容易损坏,还不如在DOS下的FoxPro 2.6,因此劝说其他VFP爱好者放弃桌面数据库。针对这种情况,我们请今天的特邀嘉宾冯宗任先生来为大家谈一谈,并对VFP 7作一定的讲解,大家欢迎!冯先生,请!!

  谢谢卧龙传说!谢谢《中国电脑教育报》的读者朋友们!首先,我需要澄清一件事,就是从来没有过所谓FoxPro 3.0。从这位人士称呼VFP 3.0为FoxPro 3.0,我可以猜到他是一个FoxPro的老用户;其次,从他说的“网络环境下系统不稳定、表索引容易损坏”来看,也肯定他没有使用VFP中的数据缓冲、事务机制。其实只要简单的用事务将数据操作代码封装起来即可。

  目前,国内VFP(Visual FoxPro)的整体水平还不算高, 对于VFP 7中新增的Web Service、OLE DB、XML 支持、COM的实现(IMPLEMENT)功能和对COM+的支持等类的东西已经超过了国内许多Foxer的接受能力。


  1、 VFP 7 的安装


  VFP 7 在Windows98下的安装比较麻烦,因为它要求必须安装了IE5.5和Windows98 SP1。一些朋友反映,即使安装IE5.5中文版,VFP 7安装程序仍然会认为“需要安装IE5.5和 Internet 工具”,最后只得安装VFP 7自带的英文版IE5.5。

  经过试验,我发现目前在网上可以下载的有三种IE5.5简体中文版:最小的在线安装、典型安装和完全安装。虽然典型安装流行最广,但只有使用完全安装的IE5.5才能顺利安装VFP 7。此外,经我测试,还可以使用以下组合方式:

  1、 Win98第三版(就是Win98SP+联想升级补丁的那个版本)+IE6.0中文版;

  2、 Windows Me、Windows 2000、Windows XP都可以直接安装。


  2、 对象变量的定位


  在过去,VFP没有像Office成员那样完整的对象层次,对_VFP、_Screen和_Application这三个系统对象变量而言,其定位也没有明确的文档说明,很容易让人混淆。现在,VFP 7明确了它们的分工:

  * _VFP对象:指整个VFP 7的IDE环境,包括菜单、工具栏、桌面、各种窗口等等;

  * _Screen对象:仅指_VFP对象中的桌面部分;

  * _Application对象:一般用于代表“作为OLE自动化服务器的VFP对象”。


  3、新增事件和Hwnd属性


  1、笔者常常使用ProjectHook类来完成一些打开项目时要做的工作。比如,为一个项目指定它的默认和搜索路径。通常,就是为项目建立一个基于ProjectHook类的子类,在该类的Init方法中使用下面这样的代码,然后在该项目的“项目信息”对话框中把这个子类指定为该项目的项目类:

  CD C:\MyProj

  Set Path to .\Data, .\forms, .\Reports, .\Menus, .\Progs, .\libs, .\graphs, e:\Vcx

  这样,当打开一个项目时,这个类就会自动设置好程序的路径。但是,如果在启动VFP的时候有多个项目同时打开,那么就会造成一些混乱:A、B、C项目分别为自己设置一遍项目路径,到底最后的当前路径在哪个里面呢?OK,ProjectHook类现在有Activate事件和DeActivate事件,这个问题就很容易解决了,把前面的代码也放到Activate事件中,如果一个项目成为当前项目,则为该项目指定一遍路径。这是VFP 7比较贴心的设计。

  2、过去,为了判断鼠标指针是否在一个控件上,我们不得不自己编写程序来获得鼠标指针的位置,然后将它与控件的位置进行比较。现在有了MouseEnter和MouseLeave这两个事件,就为我们省却了不少麻烦,同时,也带来了更漂亮的命令按钮和工具栏。

  3、VFP表单没有句柄一直是妨碍我们更有效地使用API函数和ActiveX控件的障碍。现在,表单有了自己的Hwnd属性,而工具栏作为一种特殊类型的表单也继承了这一属性,此外,_VFP和_Screen也有这个属性。这是一个意味深长的改变,也许在VFP 8中,我们就能看到每个控件都有自己的Hwnd了!在Solution示例中,有一个演示这个新特性的示例:透明表单。


  4、 命令按钮的改进


  SpecialEffect属性增加了一个“2 - Hot Tracking”可选项。就是这个简单的选项让你可以做出流行的Office风格的按钮。而这一切当然是得益于MouseEnter和MouseLeave事件了。这个选项也适用于文本框、组合框、编辑框、列表框、单选框控件。

  VisualEffect属性让你可以做出命令按钮凹下或者升起的效果,不过请注意必须在运行时设置它。

  使用这两个属性,你就可以为工具栏做出像Office2000工具栏那样的效果了,对于工具栏,VFP 7还为Separator控件增加了一个新的值“1-Vertical Rule”,使用这个值,你可以让Separator表现为工具栏按钮组之间的一个垂直分隔线,综合以上几个技巧,你以后就不必为了追求程序的美观而去使用麻烦的ActiveX Toolbar 了。


  5、 Grid相关的增强


  在VFP 6中,AfterRowColChange事件并不能告诉你到底是表格的行还是列位置移动了。现在,VFP 7为Grid控件增加了一个RowColChange属性,移动了指针后RowColChange告诉你发生了什么移动:行为1,列为2,行列都变为3、没有变动则为0。同时,VFP 7还为Header对象增加了一个WordWrap属性,用这个属性你就可以做出多行表头的效果。


  6、 对象集合


  在VFP 6中,每一种容器对象都有用集合的方式访问自己的成员的途径。比如Pageframe控件有Pages集合、CommandGroup有Buttons集合,还有一些容器对象有自己的Controls、Objects集合。现在,在VFP 7里为所有的容器对象提供了一个新的Objects集合,如果你编程的时候记不起来该为当前容器使用什么集合,那么就用Objects吧!

  VFP 7的新功能实在是数不胜数,而且有些比较复杂的功能——比如对COM的“实现接口”功能、WebService支持等,由于篇幅的限制这里就不一一阐述了。

  谢谢冯宗任先生!谢谢我们的读者朋友!以后我们还将续续针对开发领域的新技术为大家作深层次的探讨。希望大家继续关注并能喜欢!《中国电脑教育报》卧龙传说在北京为你主持,谢谢!欢迎您继续阅读本报的其它文章,再见!