public _sys_user,_sys_sq
=_set_exe()
=_sys_title()
=_init()
_sys_user=0
_sys_sq=0
*on error do _error with error(),message(),message(1),program(),lineno()
do form _screen name attendance_screen
do _star_menu.mpr
read events
_screen.MaxButton=.T.
_screen.WindowState=2
set sysmenu to default
attendance_screen.Release()
=_set_prg()
仅供参考
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
*环境设置
SET talk off
Application.VISIBLE=.F. &&关闭VFP主窗口
SET cent on
SET date ansi
SET safe off
SET esca off
SET exac on
SET dele on
Clos all
*定义全局变量
passed=.f.
rgp=.f.
cre=.t.
Application.VISIBLE=.T.
*系统注册
DO form regsys
Application.VISIBLE=.F.
READ even
IF !passed
QUIT
ENDI
*检查数据备份文件夹
bakflag=.f.
ON erro bakflag=.t.
SET defa to bak
ON erro
IF bakflag
MD bak
ELSE
SET defa to ..
ENDI
*系统初始化
USE sysctrl in 0
SELE sysctrl
IF !file(bakpic)
REPL bakpic with '',enabbak with .f.
ENDI
muser=allt(sysctrl.dw)
REST from sinfo.sys addi
regcode=allt(regcode)
IF len(regcode)=0
FOR i=1 to 10
regcode=regcode+dtoz(int(rand(int(seco())*i)*63)+1)
ENDF
SAVE to sinfo.sys all like reg*
REPL macode with regcode
ENDI
IF regcode#sysctrl.macode
cre=.f.
ENDI
USE in sysctrl
USE skmx
INDE on fkdw tag fkdw
INDE on rq tag rq
REPL all pflag with .f.
REPL all pflag with .t. for rq>=date()
USE cfmx
INDE on skdw tag skdw
INDE on rq tag rq
REPL all pflag with .f.
REPL all pflag with .t. for rq>=date()
USE gysda
INDE on sksf tag sksf
USE wbpy
INDE on hz tag hz
USE
IF len(regcode)=10
rflag=.t.
FOR i=1 to 10
IF at(subs(regcode,i,1),'1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ[]{}<>()?/\!@#$%^&*+-=,.;:~')=0
rflag=.f.
EXIT
ENDI
ENDF
muser=gdw(muser)
IF rflag
IF len(muser)>0
mregc=''
FOR i=1 to 10
mregc=mregc+dtoz(bitxor(ztod(subs(regcode,i,1)),ztod(subs(muser,mod(ztod(subs(regcode,i,1))+i,len(muser)),1))))
ENDF
IF allt(mregc)==allt(regsn)
rgp=cre
ENDI
ELSE
rgp=.f.
ENDI
ENDI
ENDI
*运行主表单
DO form main
READ even
*环境清理及退出系统
USE sprint
ZAP
USE fprint
ZAP
Clos all
Clea all
IF file('skmx.cdx')
Dele file skmx.cdx
ENDI
IF file('cfmx.cdx')
Dele file cfmx.cdx
ENDI
IF file('gysda.cdx')
Dele file gysda.cdx
ENDI
IF file('wbpy.cdx')
Dele file wbpy.cdx
ENDI
Application.VISIBLE=.T.
QUIT
注册表单regsys和主表单main为顶层表单,如果要加菜单,则在主表单的init事件中加入调用菜单代码:
do menufile.mpr with this,.t. &&menufile是你设计的菜单文件名
主程序的方法。
MAIN.PRG 为主文件;MAIN.SCX设为顶层表单;
clea all
close all
set talk off
set century on
set date to japan
set sysmenu off
set delete on &&以上设置根据自己要求设置,没有死规定,而且可能你还补充
_screen.visible = .f.
public s_Systempath
s_Systempath = ''
s_SystemPath = Sys(2003)
Set Path To s_Systempath &&以上设置路径问题,也有很多方法,如果你用固定路径可以用set defa to
do menu.npx &&菜单程序
Do form main.scx &&主表单
Read event 这是必需加上的,启用事件处理。
最后在系统退出的程序中加入 clea event 停止事件处理
以上的也不是很全面,但是主要的意思都在。。