将表单 pass的WindowType改为“1-模式”试试。另外,主画面表单的ShowWindow属性要设置为“2-作为顶层表单”,最后不要少了read events 在主程序中间,最好添加上on shutdown do myquit之类,而myquit.prg只需要有quit命令即可,这样可防止不能退出VFP。
up, read events 必须在do form ... 后。
谢谢大家的帮助。我现在画面已经可以出来了。问题发生在PASS表单windowtype属性是1模式。 现在的问题还是不能退出,我加入了CBA说的那个MYQUIT,不过还是没用。我把我的MAIN.prg贴出来,大家帮忙改改,成功马上给分。而且现在一启动编译好的程序就说什么----资源文件无效,是否改为空文件? ----什么意思? main.prg _screen.windowstate=2 _screen.caption="人事管理系统1.0beta" _screen.closable=.F. _screen.maxbutton=.F. _screen.minbutton=.F. close all clear all set sysmenu off set talk off set date ansi set status bar off do form pass read events set sysmenu on set status bar on on shutdown do myquit close all clear all return
on shutdown do myquit 语句应该放在开始部分,不要放在READ EVENTS之后 另外,如果你的PASS是模式表单,READ EVENTS则不必要的,可以在调用其它顶层表单时再执行此语句。
解决了吗? 如果你想让表单包括在VFP程序的里面,即不需要菜单,则把ShowWindow的属性设置为2;相反如果你使用的菜单或系统的状态栏,则把要把打开的表单设置为1另外你开始执行的程序main.prg也有问题!建议修改如下: main.prg _screen.windowstate=2 _screen.caption="人事管理系统1.0beta" _screen.closable=.F. _screen.maxbutton=.F. _screen.minbutton=.F. set sysmenu off set talk off set date ansi set status bar off do form pass read events set sysmenu on set status bar on不知道结果如何?凭感觉改的!~
下面给出关键部分代码,供参考: main.prg ltestpass=.f. do form pass && 在此表单中对密码进行检查,如正确,将lTestpass置为.t. if ltestpass=.f. message('密码不正确!',64,'退出') clos all clea wind all on shut quit endif do form main.scx && MAIN.SCX的SHOWWINDOW=2-作为项层表单,NAME=MAIN ACTIVATE WIND MAIN read events ********************************** * 以下代码应写在main.scx的UNLOAD中 set sysmenu on set status bar on close all on shutdown quit return
在主程序中间,最好添加上on shutdown do myquit之类,而myquit.prg只需要有quit命令即可,这样可防止不能退出VFP。
read events 必须在do form ... 后。
现在的问题还是不能退出,我加入了CBA说的那个MYQUIT,不过还是没用。我把我的MAIN.prg贴出来,大家帮忙改改,成功马上给分。而且现在一启动编译好的程序就说什么----资源文件无效,是否改为空文件? ----什么意思?
main.prg
_screen.windowstate=2
_screen.caption="人事管理系统1.0beta"
_screen.closable=.F.
_screen.maxbutton=.F.
_screen.minbutton=.F.
close all
clear all
set sysmenu off
set talk off
set date ansi
set status bar off
do form pass
read events
set sysmenu on
set status bar on
on shutdown do myquit
close all
clear all
return
另外,如果你的PASS是模式表单,READ EVENTS则不必要的,可以在调用其它顶层表单时再执行此语句。
看得出来,你还是受过程化编程的影响较深,其实READ EVENTS后面的语句是起不了作用的,它们应该放在 MYQUIT 中。
现在的问题是,我进入画面输入密码,正确以后一点确定,所有程序自动关了,为什么不执行我的表单main呢?
我对这个头文件还是不清楚。请告诉我具体一点可以吗?
另外,在每一个退出软件系统的语句中,都要有“Clea Events”这样的语句。
对于程序(编译后生成的.exe文件)首次运行时可能提示资源文件无效的情况可以不用理它。
如果你想让表单包括在VFP程序的里面,即不需要菜单,则把ShowWindow的属性设置为2;相反如果你使用的菜单或系统的状态栏,则把要把打开的表单设置为1另外你开始执行的程序main.prg也有问题!建议修改如下:
main.prg
_screen.windowstate=2
_screen.caption="人事管理系统1.0beta"
_screen.closable=.F.
_screen.maxbutton=.F.
_screen.minbutton=.F.
set sysmenu off
set talk off
set date ansi
set status bar off
do form pass
read events
set sysmenu on
set status bar on不知道结果如何?凭感觉改的!~
main.prg
ltestpass=.f.
do form pass && 在此表单中对密码进行检查,如正确,将lTestpass置为.t.
if ltestpass=.f.
message('密码不正确!',64,'退出')
clos all
clea wind all
on shut
quit
endif
do form main.scx && MAIN.SCX的SHOWWINDOW=2-作为项层表单,NAME=MAIN
ACTIVATE WIND MAIN
read events
**********************************
* 以下代码应写在main.scx的UNLOAD中
set sysmenu on
set status bar on
close all
on shutdown
quit
return