Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教!判断另一个窗体是否打开

伴影独酌  发表于:2010-05-01 00:07:32  
复制

请问关闭A窗体时,判断B窗体是否打开,如果B窗体打开就刷新B窗体,关闭A窗体.如果B窗体没有打开,就关闭A窗体.谢谢回复!!

 

Top
陈福祥 发表于:2010-05-01 09:18:37

下面这个函数判断一个窗体是否处于运行状态,如果在运行状态,则返回 True,否则 返回 False

'参数 strFName :窗体名

Function isFormOpen(strFName As String) As Boolean
    Dim i As Integer
    isFormOpen = False
    For i = 0 To Forms.Count - 1
        If Forms(i).Name = strFName Then
            If Forms(i).CurrentView <> 0 Then
                isFormOpen = True
                Exit Function
            End If
        End If
    Next
End Function

在你的A、B、C窗体的相关事件中,用此函数判断,并根据判断作出打开或关闭窗体的处理语句就行了



伴影独酌 发表于:2010-05-01 20:31:26

谢谢!陈福祥,祝你永远快乐!!



煮江品茶 发表于:2010-05-02 06:43:48

无需写子程序和函数,用Allforms对象的IsLoaded属性即可判断。

If Application.CurrentProject.AllForms("窗体名称").IsLoaded = True Then

   。。。。

   。。。。

End If



陈福祥 发表于:2010-05-02 08:06:35
如果不写函数,就会有个问题:如果所 AllForms 中的参数字符串“窗体名”没有写正确,即那个窗体不存在,程序就会出错了。

陈福祥 发表于:2010-05-02 08:11:46

还有, IsLoaded属性只是代码这个窗体是否打开,不能判断打开的窗体是在设计状态,还是在运行状态。

所以,个人认为,还是有必要写个函数的。

煮江品茶 老师不要介意,技术探计一下,我也是初学Access,对其中的有些东西还不是很清楚,希望指正。



煮江品茶 发表于:2010-05-02 09:42:50

呵呵,考虑的比较细致。从通用的角度看,可以用自定义函数。

 



总记录:6篇  页次:1/1 9 1 :