WEXIST()在WIN7中有问题
今天做个小程序用了liuxingang28的DoForm函数,WEXIST(W_Name)始终返回F值,窗口可以重复打开.我的使用环境WIN7,VFP9.0 SP2(7423).是不是WEXIST在WIN7中不好使,你们用怎么样?
帮助中的例子返回值是正确的
DEFINE WINDOW wScreen1 FROM 10,10 TO 20,69
DEFINE WINDOW wScreen2 FROM 1,0 TO 19,79
CLEAR
? WEXIST('wScreen1') && 显示 .T.
STORE 'wScreen2' TO gcWinName
? WEXIST('win_name') && 显示 .F.
? WEXIST(gcWinName) && 显示 .T.
RELEASE WINDOWS wScreen1, wScreen2
定义窗口的方法不一样.
我就是这样调用的doform("dept"),没加其它参数.
* 运行表单--------------------------------------------------------------------------------------------------
FUNCTION DoForm(tcForm,tcVar,tcPara) && tcForm(表单文件名),tcVar(表单变量),tcPara(参数)
LOCAL W_Name,lErr,i
= WaitWindow('正在启动程序,请稍候……')
W_Name = 'frm' + tcForm && 表单窗口名
IF !WEXIST(W_Name) && 窗口不存在时,运行表单
FOR i = 1 TO 5 && 尝试运行表单 5 次,约 3 秒
lErr = .f.
TRY
IF TYPE('tcVar') = 'C'
IF TYPE('tcPara') = 'C'
DO FORM (tcForm) NAME (tcVar) LINKED WITH tcPara
ELSE
DO FORM (tcForm) NAME (tcVar) LINKED
ENDIF
ELSE
IF TYPE('tcPara') = 'C'
DO FORM (tcForm) WITH tcPara
ELSE
DO FORM (tcForm)
ENDIF
ENDIF
CATCH TO oErr WHEN oErr.ErrorNo = 2005
lErr = .t. && 因表被其他用户占用,导致无法打开表单时,再重试 4 次
ENDTRY
IF !lErr
EXIT && 正常打开时,退出
ENDIF
= INKEY(0.5,'H') && 等待 0.5 秒后,再重试
NEXT i
IF lErr
MESSAGEBOX('数据库中的表正在被其他用户使用,请稍后重试!',16,'提示')
ENDIF
ELSE
ACTIVATE WINDOW (W_Name) TOP && 窗口存在时,激活窗口
IF WMINIMUM(W_Name) && 窗口最小化时,恢复窗口大小
ZOOM WINDOW (W_Name) NORM
ENDIF
ENDIF
WAIT CLEAR
ENDFUNC
[ 本帖最后由 antony521 于 2015-2-13 16:16 编辑 ]