怎么获得一个窗体是否已加载?
怎么样得知一个窗体 是否 load 或者unload么?
问题点数:20、回复次数:13Top
1 楼huangjianyou(小健)回复于 2004-09-02 10:52:56 得分 0
'判断一个窗体是否已Open
Public Function IsOpen(ByVal FormName As Form) As Boolean
On Error GoTo Err
Dim I As Integer
IsOpen = False
For I = 0 To Forms.Count - 1
If UCase(Forms(I).Name) = UCase(FormName.Name) Then
IsOpen = True
Exit For
End If
Next
Exit Function
Err:
IsOpen = False
End Function
^_^Top
2 楼hhjjhjhj(大头)(http://office.9zp.com)回复于 2004-09-02 11:50:19 得分 2
楼上的,第二次以后永远是true了。Top
3 楼artoksxb(进取人生)回复于 2004-09-02 11:55:43 得分 0
upTop
4 楼huangjianyou(小健)回复于 2004-09-02 11:56:35 得分 8
这样吧,改一下:
'FormIsOpen
Public Function IsOpen(ByVal FormName As Form, ByVal strFormName As String) As Boolean
On Error GoTo mErr
Dim I As Integer
IsOpen = False
For I = 0 To Forms.Count - 1
If UCase(Forms(I).Name) = UCase(strFormName) Then
IsOpen = True
Exit For
End If
Next
Exit Function
mErr:
IsOpen = False
End Function
^_^Top
5 楼huangjianyou(小健)回复于 2004-09-02 11:57:40 得分 0
//楼上的,第二次以后永远是true了。
这个问题一早就发现了,因为在函数执行时把窗体Load了出来,但没显示。
^_^
Top
6 楼tztz520(午夜逛街)回复于 2004-09-02 12:09:10 得分 10
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Function IsShow(FormName As String) As Boolean'参数FormName 是窗体的标题名称
Dim lR As Long
lR = FindWindow(vbNullString, FormName)
If lR <> 0 Then
IsShow = True
Else
IsShow = False '
End If
End FunctionTop
7 楼sanyou98(sanyou98)回复于 2004-09-02 12:10:20 得分 0
upTop
8 楼itcoco(椰子)回复于 2004-09-02 14:33:29 得分 0
午夜逛街的方法 可以
其他的都不行 因为只要引用了窗体的属性 比如form.name 就相当于form.load 所以第二次再判断此窗体是否已加载 就错了
不知我说的对否?
Top
9 楼gxsun(小毛猪)回复于 2004-09-02 14:36:38 得分 0
用FindWindow函数吧Top
10 楼huangjianyou(小健)回复于 2004-09-02 15:11:14 得分 0
//其他的都不行
我第二个函数一定行,调用时这样调用:
isopen(formname,"FormName")
^_^Top
11 楼daweileo(大尾Leo)回复于 2004-09-02 17:30:22 得分 0
huangjianyou(小健) 的第二个函数我看可以!
upTop
12 楼itcoco(椰子)回复于 2004-09-02 17:33:04 得分 0
我刚试了 可以 只是不知道为什么加上""就可以 或者是实现用一个字符串代替已知的窗体的名字 从而避免使用窗体的属性而加载窗体了么?
另外 isopen()这个过程为什么要两个参数呢 我觉得第一个formname 没有必要 不知道我说的对否Top
13 楼huangjianyou(小健)回复于 2004-09-02 17:39:07 得分 0
哦,因为我是从我的程序拿下来的,所以没修改,因为我还要在里面做一些东西,我删除掉了。
^_^Top




