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

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

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

为什么要在 Splash 里使用 Timer呢?

当我们炫酷的展示 Splash 时,是需要几秒钟时间的。如果这几秒钟什么都不做,那是多么大的浪费啊!况且,似乎有一句名言:浪费别人的时间无异于谋财害命。况且,你应用到Splash 上的炫酷技术,也许需要一些先决条件,它也许也需要点儿时间。所以,我使用了 Timer 来控制这一切。

首先,设置 Timer.Interval 的值为你需要的时间,在这段时间里,为你展示的炫酷技术做好充分的技术准备。你唯一需要注意的是,它的单位是毫秒。

然后,在控件的 Timer 事件里,就可以随心所欲的炫耀你所掌握的技巧,当然,更重要的是完成应用程序启动前的准备工作。下面的代码,仅仅是一个Demo,你可以根据需要予以更改。

代码语言:javascript
复制
This.Interval = 0
With Thisform
 .lblCaption.Caption = [正在建立数据库连接......]
 _Screen.MyApp.CreatConnection()
 Clear Events
 .Release
EndWith

细心的看客估计已经注意到了,在上面的代码中,调用了 MyApp 的一个自定义方法:CreatConnection 。而不是在 Splash 自身来进行连接设置。这一点,体现了我之前所说的:应用程序对象是应用程序从启动到运行功能模块的一个控制中心。当你想更改数据库类型时,你仅仅需要打开MyApp 类,修改 CreatConnection 自定义方法即可。

这样,我们就充分利用了 Splash 所需要占用的时间,然后,在完成所有任务后,将自身卸载。

对于之后的系统登录,我们仍旧可以采用同样的方法来创建一个 Login 类,同样,它也是基于Form 类的。

至此,我们基本上完成了从启动到登录的全过程的准备,下一步,就是在 MyApp 的Run 自定义方法中,将它们予以代码实现:

代码语言:javascript
复制
With This
 .SetEnv()
 .SetPath()
 .oSplash = NewObject([MySplash], .ClassLibrary)
 .oSplash.Show()
 .oWelcom = NewObject([MyLogin], .ClassLibrary)
 .oWelcom.show()
 *!* 这里,启动主界面
 Read Events
EndWith

至此,我们基本完成了应用程序对象类的构建,并顺手完成了 Splash 和Login 两个自定义类。整个代码看上去应该是优雅的。当然,你可以在这个基础上根据你的实际应用情况尽情发挥,使它更赏心悦目。这样,你就获得了一个通用的“主程序”:

代码语言: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

配合你的 Config.fpw ,你就完成了应用程序对象的创建。

有看客可能会问:“这样做有什么好处呢?”通俗的讲,通过创建应用程序对象类,我们可以获得一个“通用”的主程序。因为所有的实现是面向对象的,那么,我们可以很容易的对其进行扩展,并且,在使用过程中的维护,也会变得比较轻松 。

事实上,如果你完全理解以上的所有内容,那么我真的应该恭喜你:你已经可以开始创建自己的开发框架了。

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档