VFP应用系统的安全警告──设计技巧
#1 1.wait命令
作用:显示信息并且暂停程序执行直至用户按键或单击鼠标。
语法:
WAIT [cMessageText][TO VarName] [WINDOW [AT nRow,nColumn]] [NOWAIT] [TIMEOUT nSeconds]
说明:cMessageText指定要显示的信息。如果忽略这个参数,系统显示默认信息“press any key continue...”,如果cMessageText是一个空串,系统不会显示信息,按任意键后程序便继续执行。
TO VarName 保存按键值到一个变量或一个数组元素。
WINDOW 显示信息在Visual FoxPro主窗口右上角的一个系统信息窗口中。按下CTRL或 SHIFT 键不放,该窗口会临时隐藏。
AT nRow,nColumn 设定信息窗口在屏幕上的位置。(^11020503a^)(^11020503b^)
NOWAIT 显示完信息后立即继续执行程序。
TIMEOUT nSeconds 没有按键的情况下设置一定秒数后让程序继续运行。TIMEOUT 必须放在命令的最后否则会出错。
例:WAIT “等待信息” WINDOW AT 20,20 timeout 2
显示“等待信息”窗口在(20,20)位置,如果2秒内没有按键,信息窗口自动消失,程序继续进行。
#1 2.messagebox()函数的用法
格式:messagebox(cmessagetext [,ndialogboxtype [,ctitlebartext]])?牑?
返回值:数字型
变量说明:cmessagetext表示显示在对话框中的正文内容;ndialogboxtype表示出现在对话框中的按钮和图标及缺省按钮;ctitlebartext表示出现在对话框标题条中的文本。其中ndialogboxtype、ctitlebartext是可选项,ndialogboxtype缺省为0,ctitlebartext缺省为“Microsoft Visual Foxpro”。下面解释ndialogboxtype不同参数值代表的意义。
参数ndialogboxtype可由三部分相加组合,分别控制按钮、图标、缺省按钮。例如ndialogboxtype=289=(1+32+256),则对话框特性如下:具有OK和Cancel 按钮,显示问号图标,缺省为第二按钮Retry。
本函数使用时必须用在一个表达式中,单独使用是错误的。在程序中均把本函数用在IF语句中,用来作逻辑判断条件,以决定下一步的操作或仅给出提示。此外,如果cmessagetext较长,可以分为两段,中间加一个chr(13),这样显示时便从加chr(13)处另起一行。可以参看某表单中的“首次使用”按钮的click代码:
if messagebox(“首次使用时,请输入口令guest!”+chr(13)+“可以进入系统。然后请修改口令!”,64,“口令”)=1
return
endif
除了系统警告外,防止程序的错误运行也是比较重要的,数据库应用系统最好是防止系统同时运行多次。VFP自身的函数无法处理这个问题,但利用Windows提供的API就可以方便的解决。VFP系统把一些API函数封装在FOXTOOLS.FLL库中,通过调用相关函数,可以实现我们的目的。下面是主程序中的检测段:
set library to sys(5)+curdir()+“foxtools.fll” additive &&指定foxtools.fll库的路径。
GetWind = RegFn(“FindWindow”,“CC”,“I”)
wclass=0
winname=“实验室管理系统”
apphand = CallFn(GetWind,wclass,winname) &&调用获得程序句柄的API函数
if apphand<>0
wait window “为了数据安全,“实验室管理系统”不能运行两次!”
quit
endif