前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我们总是梦想着对象化(四)

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

作者头像
加菲猫的VFP
发布2021-08-16 11:39:24
2110
发布2021-08-16 11:39:24
举报
文章被收录于专栏:加菲猫的VFP

很多人以为,到这里,主程序就完成了。其实,未必。

这和你对主程序的认知是有关系的。在编程的意义上,主程序确实仅仅需要设置环境和路径。但是,从面向对象的角度来看,我个人认为从开始双击桌面的快捷方式,一直到你真正的进入到程序的主界面,这一段代码,都应该纳入到主程序的范畴,按我的说法就是:它们都是应用程序对象类应该负责的范畴。而基于这个观点的所谓主程序的作用,就演变为创建应用程序对象类实例。

就像这样:

代码语言:javascript
复制
If !PemStatus(_Screen, [MyApp], 5)
 _Screen.NewObject([MyApp], [MyApp], [MyApp.VCX])
EndIf 
If _vfp.StartMode = 0
 _Screen.NCApp.Start()
Else
 _Screen.NCApp.Run()
EndIf

这里就应用程序对象类再做一些说明,因为我看到前面有看客留言,似乎是混淆了一些概念。应用程序对象类是在运行时刻,为应用程序提供从启动到运行功能模块的一个控制中心。所有在程序运行过程中的标准的的方法都可以纳入进来。例如,前面说的设置环境和路径,以及之后所论述的内容。留言中提到Project Hook 类,这是一个项目钩子类,它仅仅是在开发时刻针对项目管理器的所有操作提供一个接口,以便于开发者可以更好的进行项目的控制。针对Project Hook 类,如果你有兴趣进行更深入的了解,那么我建议你阅读张洪举编著的《Visual FoxPro 6.0-9.0 解决方案和范例大全》的第一章。该书的电子版,可以在他的CSDN博客中下载到。

回到我们的主题,接下来,我们需要处理一下 Splash 表单。也就是所谓的“欢迎”表单。

每一个应用程序都希望在第一时间给用户一个深刻的印象。而 Splash 表单,承担了这一任务。技巧与个性齐飞,是Splash 表单的特征。对于 VFP 的开发人员来说,这是一个展示自己软件风格或者炫耀编程技巧的舞台。然而,我并不打算在这里也炫耀一把,而是想讨论一下如何来更好的设计Splash 。

最基本的做法,就是在 MyApp.Vcx 类库中添加一个基于 Form 类的 Splash 自定义类。然后,你可以像在表单设计器中一样,在里面尽情的发挥。而当应用程序对象类实例使用它时,仅仅需要如下的代码:

代码语言:javascript
复制
With _Screen.MyApp
 .oSplash = NewObject([NC_Welcom], .ClassLibrary)
 .oSplash.Show()
EndWith  

代码中的 oSplash ,是 MyApp的一个自定义属性,用于存储 Splash 类实例的对象引用。

有人说,我不喜欢设置为一个类,我喜欢设置为一个表单。因为设计的表单类,无法直接运行。

俗话说,办法总比困难多。你可以使用下面的代码来直接“运行”表单类:

代码语言:javascript
复制
PrivatelaArray
Public goObject as Object
DimensionlaArray[1]
if AGetClass(m.laArray)
 m.goObject = NewObject(m.laArray[2], m.laArray[1])
 If Upper(m.goObject.baseclass) = [FORM]
 m.goObject.show()
 EndIf 
EndIf

在开发环境下,运行这段代码,选择你想要“运行”的表单类。OK。

这里使用了全局变量,其目的在于,可以更方便的进行表单类的调试。

有人会说,这种方法有缺陷,在编译为 EXE 后,这个 Splash 真的就是“一闪而过”。事实是,如果你不做处理的话,的确如此。

我们知道,在每一个 VFP 标准的主程序中,最后一句一定是:Read Events 。

虽然它允许有层次的嵌套,但是,我们还是尽可能的避免这种情况的出现。针对 Splash 类,我们可以做如下处理:

我们在表单类的 Activate 事件中发出 Read Events,然后在你认为恰当的地方发出 Clear Events 命令。我发出这个命令的位置是在表单中一个 Timer控件的 Timer 事件里。

WHY?请待下回分解。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档