精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖面向对象〗>>Re:我的系统主程序

主题:Re:我的系统主程序
发信人: hunter__fox(雁回西楼)
整理人: foxzz(2003-04-04 08:42:36), 站内信件
最开始,我的主程序不是这样的.
开始,我将  "Set..."  都写有主程序中,后来,这种Set越来越多,我觉得不必要为之写一个prg了. 于是,就多出了一个 SetSys.prg 这样做还有另一个好处,那就是,我在系统产生了错误后,执行错误处理代码后,可调用这个SetSys.prg来重新设置系统的环境.

On ShutDown 语句直接指向 QuitSys() 也是后来改的.最开始,我是指向一个函数,在函数中问一下用户,是不是要退出,并且,告诉用户,没有保存的数据将不被保存...和Office差不多的想法.后来,我在使用中发现,用户根本就不去看那个弹出的对话框中的内容而直接点确定!而且,也没有谁点了"X"钮后再点"取消"的...这表明,那一个函数一点用处也没有,即然如此,那就干脆改成这样好了.

函数库FreeFuns和ExclFuns,其实没有多少区别,只是,FreeFuns一般放一些通用的函数,例如StrEx()/ValiDataEx()这样的与系统目标无具体相关的函数,而ExclFuns函数中则是那些只能用于本系统的函数,如:JiaMi()/UserID().其中,FreeFuns是向后兼容的,即现存的最新版本可完全用于原来的系统中,此函数库中函数一般是添加函数,很少进行修改.而ExclFuns函数库则刚好反,基本上没有两个系统的ExclFuns能够互换的.

_Screen.Visible = .T. 这样做,是因为有些系统因为用户在求看不到Screen.一般情况下,能少修改几个文件总是好的.所以我先择了改Main.prg,不去改Config.FPW了.

至于菜单,一般则在用户登录后加载的.不过最近我也尝试了另一种方式,效果也不错.那就是,在Getuser表单之前立菜单,但它不可用.用一个自定义的对象来记录GetUser中登入的用户.在这个对象的事件中祥控件菜单项是否可用.这样,我可以实现不同权限用户重新登入,也可实现高权限用户临时性登入(象Window2000的Administrator一样,呵呵),现在这个系统已经开始试用,很快就能知道效果如何了.

QuitSys() 结构化的目标,我想,应该是有一个清晰的程序流向吧.在一个系统中,只有这一个地方含有"Quit"这个命令,不论在任何地方,退出系统,一定是调用这一段代码.因此,可在这里做一些退出系统时要做的事(这里,有些东东去掉了).

TxnLevel() 因为有时用户可能正在添加一组数据,这时,很可能在一个事务处理中,那么,取消事务处理是必要的(呵呵,不关闭事务处理,和没有Clear Events 差不多......这就是为什么有时候,明明关闭了所有的东东,Close All...Clear All...Release All...但就是退不出去的原因了...嘿嘿...这个问题曾困绕我许久...因为一直没注意到Transaction,所以一直没解决...一个偶然的情况下我发现这现象都是在开始过事务后才出现...呵呵,简直是得来全不费功夫...

各位的主程序能不能也拿来看看......   (@_@)



----
在代码天地里
我要做一个
猎狐者    

[关闭][返回]