- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vfp中顶层表单如何作为主程序
摘要:本文叙述了在vfp编程过程中遇到的问题:即vfp中顶层表单中如何调用其他表单及退出时确认信息的实现的探索过程及解决问题的方法,以及留给我们的启示。
关键词:VFP;顶层表单;确认信息
中图分类号:TP317文献标识码:B文章编号:1009-3044(2008)08-10ppp-0c
笔者教授vfp已有八九年了,但从笔者学习及教授vfp这些年中体会vfp教授中遇到的许多问题及其解决的方法,下面是笔者在教学中遇到的比较典型的案例,下面写出来与大家分享。
1 问题提出
笔者在指导学生用vfp编写程序时,用的是顶层表单作为主程序界面,为了便于叙述姑且命名为:“表单1”,为了屏蔽系统窗口,不影响系统的总体界面,采取在config.fpw中加入一句:screen=off这样才能屏蔽掉系统窗口,不致影响软件的效果。结果是系统菜单不出现了,但在菜单中调用其他表单时却无法显示新调用的表单(为便于叙述命名为“表单2”),任务管理器中明明显示已经在运行可是就是屏幕无法显示,笔者试了多种方法比如:在菜单中用命令: “表单2.show”,故障依旧,检查其他属性也正常,笔者很是郁闷,可又是没有办法。因为手头没有资料,上网查吧,网上关于vfp编程的资料少的可怜,都是2002年的占多数,据行内人士说:谁还用vfp编程早就淘汰了,言下之意:你啊太老土啦。这些说法更加打消了笔者的自信心,可是笔者很是不服气,既然淘汰了,为什么国家二级还在考呢,难道笔者多少年教授vfp积累下来的经验就白费了么,我很是不死心。笔者就天生就有股不服输的心,我就不信一门语言,它本身应当具备完备性,这样的问题肯定能解决。
2 探索
于是笔者,一个接一个的查表单的属性,挨个实验,功夫不愧有心人,终于让笔者找到了,当笔者找到属性showwindow其下面有三个选项:“0―在屏幕中(默认) ,1―在顶层表单中,2―作为顶层表单”。找到这里我恍然大悟,原来这一属性“默认值”为:“0―在屏幕中(默认)”,而我在config.fpw文件中恰恰关闭了屏幕,自然无法显示了。找到了症结我欣喜若狂,可是冷静下来之后又遇到了问题:如果将config.fpw文件中screen=off重新变为:screen=on吧,在顶层表单“表单1”中调用“表单2”时倒是可以显示了,可是影响软件整体效果的系统屏幕显示出来了,不可取,我有重新将screen=on改为screen=off,试一试第二选项吧我将,showwindow属性设为:1―在顶层表单中,接下来运行顶层表单“表单1”中菜单调用“表单2”,显示倒是能显示,可是结果让人大跌眼镜,原来这一表单显示在顶层表单中,把原来的表单的布局,控件覆盖的面目全非,看来似乎也是不行。于是我再考虑第三个选项:2―作为顶层表单,这倒是能分别显示,可是一个软件中只能由一个顶层表单,正所谓:“家有千口主事一人”。否则在顶层表单中设置的全局变量统统都要作废了,况且在顶层表单中使用菜单或程序中调用表单:
do form表单1.scx
接下来一句是:
readevents
以便激活表单处于显示等待状态,可是在关闭表单时一般要加上一句:
clear events
以便释放内存彻底关闭vfp。基于这样的观念我在每一个表单的
destory事件
中都加上一句:clear events
这样我在关闭“表单2”时结果把顶层表单“表单1”也关闭了。
这是在后来的调试中才发现的,现在我主要考虑第二个选项:“1―在顶层表单中”,这样考虑是正确的因为 “表单1”是顶层表单做为主程序,“表单2”只是它的子表单,而且要求在关闭“表单2”时“表单1”不能关闭,基于这样的考虑我又查找“表单2”的属性,最终让我找到了解决的办法。
3 问题解决
问题最终解决办法如下
表单2属性:
showwindow设为1―在顶层表单中
desktop 设为 .T.*其默认值为 .F.,该属性设置表单是否在vfp主窗口中(这一属性很关键费了我好几天的时间才发现)
关键的一条是在“表单2”的“destroy”事件中去掉: clear enents
而只保留“表单1” 的“destroy”事件: clear enents。
这样万事大吉问题全部解决。
有以上的编程调试程序经验,我还解决了在“退出”表单前,如何加上确认信息的问题:
就是在“关闭”按钮里输入的不是:
thisform.release
而是:
ThisForm.QueryUnload
因为表单在卸载前,首先
文档评论(0)