我们总是梦想着对象化(二)

2021-08-16 11:38:09 浏览数 (2)

在 VFP 的帮助文件中,详细解释了如何创建自定义类。而我们需要了解的是,当我们创建应用程序对象类时,是基于非可视类来做的。

如果你使用过 timer 控件,那么,你一定能理解什么是非可视类。所谓非可视,绝大多数情况下,在设计状态还是“可视”的,就像timer 一样,仅仅是在运行时,你是“看”不到的。(自己都觉得这解释是多余的……汗!)

看过本篇原型的人知道这个应用程序对象类的作用。这里再简单解释一下:它将 VFP 主程序予以对象化,并且,成为整个应用程序的“控制”中心。首先,它需要完成环境设置,路径设置,其次,控制应用程序从启动到进入主界面的全过程。其次,负责存储“全局性变量”,提供应用程序中重要的或者通用的功能。

以后的篇幅,有一半是用来解释如何实现这些功能;另一半,当然是用来描述 VFP 中另一个重要的组成部分,数据处理的对象化。

首先,我们先来看一下 VFP 的环境设置。这似乎是很容易的一个问题,其实的确也是很容易的。

大家对“一闪而过”应该不陌生吧。解决的办法就是创建一个 Config.fpw 文件,然后,在其中写入:Screen = OFF 。

而有洁癖的人,估计还会在其中写入:Resource = OFF 。

我想,这是大多数人的 Config.fpw 文件的全部内容。然而,这是多么浪费的一个行为啊~~~

你想知道 Config.fpw 还可以做什么吗?打开你的 VFP ,启动应用程序向导,不要怕,按提示一步步完成它。然后,你会获得一个 Config.fpw文件,打开它。你会看到更丰富的内容。我将我所得到的文件内容写在下面,你权当我是骗稿费的就好了……

* 项目 TrustQF.pjx 的配置文件 CONFIG.FPW * 这个文件是 framework 中的一个组成部分 * 是由 APPBUILDER 创建 * (c) Microsoft Corporation * 这个文件包含了一些适合你项目的一些设置 * 它可以增加到项目或EXE文件中,也可以放置在 EXE 所在目录中。 * 这个文件中的设置,可以覆盖注册表中的设置。 * 你可以使用 -C 开关 和 FOXPROWCFG 环境变量来指向一个配置文件名称, * 并且 FOXPROSWX 和 -C 之间还可以加入其他的开关。 SCREEN = OFF TITLE = TrustQf * 以下可以更改为适合你的设置: * TMPFILES = ** * 或者设置 EDITWORK,SORTWORK,PROGWORK 这些 * 注意:这两种设置不能同时存在于一个 CONFIG.FPW 中且不能编译到EXE里去。 * 所以,上面的这个方式,需要另外指定配置文件 * 用下面的方式可以指定一个启动程序,或临时程序,然后执行你的APP _STARTUP = "" * 缩短载入时间: _BROWSER = "" _SPELLCHK = "" _GENMENU = "" _GENGRAPH = "" _GENXTAB = "" _COVERAGE = "" _SCCTEXT = "" _CONVERTER = "" _TRANSPORTER = "" _BUILDER = "" _WIZARD = "" * 你或许想改变 CONFIG.FPW 中一些特殊的设置: * (这里是默认值) MVCOUNT = 1025 OUTSHOW = ON * 如果你喜欢,可以设置其他的全局设置,例如: RESOURCE = OFF _THROTTLE = 0 * 在 application 对象的 SetDataSessionSets() 方法中,也许有些额外设置你会感兴趣,它可以加到配置文件中。 * 下面这些,不是默认设置。(通常情况下,在使用私有数据工作期的表单或表单集时要注意) TALK = OFF MULTILOCKS = ON EXCLUSIVE = OFF SAFETY = OFF * 以下内容根据帮助文件内容添加的 * 配置文件中使用COMMAND 命令启动一个应用程序时,必须放置在配置文件的最后一行,例如 * COMMAND = DO MYAPP.APP

你看到了,Config.fpw 文件的确很容易。当然,我估计你要好好在帮助里查阅相关的解释后,才会觉得的确很容易。

作为一个实用主义者,自然关注最有用的功能,也就是在其中进行全局性的环境设置。在 VFP帮助中,有一个长长的列表,Set XXX …… ,我真的强烈建议你逐个的看一遍,然后,按照你的编程习惯将其中全局性的设置挑拣出来,尽可能的都写在Config.fpw 文件中。这样,当你开发应用程序时,仅仅需要简单的将此文件包含在项目中即可。

这里,我需要提醒的是,同样的命令,写入 Config.fpw 和在应用程序对象中使用Set 命令设置,其结果可能是不同的。我遇到的一个命令是 Set NullDIsplay 。这一点需要注意。

我相信,如果要完全消化这些内容,是需要点儿时间的,所以,到此暂时打住。

你的反馈是我写作的动力,欢迎评论,未完待续。

0 人点赞