如题,非顶层表单(在顶层表单中),怎么判断该表单是否打开,如已打开,激活它,避免重复打开。
------解决方案--------------------------------------------------------
DECLARE INTEGER FindWindow IN USER32.DLL STRING,STRING
LOCAL lcTitle
lcTitle= "表单的CAPTION "
IF FindWindow(0,lcTitle)!=0
MESSAGEBOX( "表单的CAPTION 已经运行! "+SPACE(5),48, "信息提示 ")
CLEAR DLLS
QUIT
ENDIF
CLEAR DLLS
------解决方案--------------------------------------------------------
我一直用在顶层表单,即使不行也有办法。
IF VARTYPE(TESTFORM1)= 'O '
? '运行了 '
RETURN
ENDIF
例1:
运行表单时
IF VARTYPE(TESTFORM1)= 'O '
? '运行了 '
RETURN
ENDIF
DO FORM TESTFORM1.SCX
或
IF VARTYPE(TESTFORM1)= 'O '
? '运行了 '
RETURN
ENDIF
DO FORM 表名文件名.SCX NAME TESTFORM1
------解决方案--------------------------------------------------------
如果子表不想用模式表单,就改成这样:
子表单的
Load事件
PUBLIC vFORM
Unload事件
RELEASE vFORM
主表单运行子表单的按钮的Click事件:
IF VARTYPE(vFORM)= 'U '
DO FORM tform.SCX
ELSE
MESSAGEBOX( '子表单已经运行! ',48, '信息提示 ')
ENDIF
但因为子表单在顶层表单中,所以用检测子表单的Caption和检测表单变量的方法都检测不到。
激活就没有直接的方法。
个人认为用模式表单就可以了。我的程序都是这么用的,主表单为非模式,其余子表单均为模式。