以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码执行问题(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93491)

--  作者:pcxjxjhkw
--  发布时间:2016/11/29 21:53:00
--  [求助]代码执行问题(已解决)

设计了一等待窗口。令了一全局变量_FromIsOpened。两个函数:

打开等待窗口函数:

If _FromIsOpened = False Then \'\'\'如果等待窗口已关闭
   
    If Forms("等待响应").Opened = False Then Forms("等待响应").Open
    If Args.length = 1 Then Forms("等待响应").Controls("提示信息").text = Args(0)
    _FromIsOpened = True
End If

 

关闭等待窗口函数:

If _FromIsOpened = True Then  \'\'如果等待窗口已打开
    If Forms("等待响应").Opened = True Then Forms("等待响应").Close
    _FromIsOpened = False
End If

 

有两按钮,

按钮一代码:

Functions.Execute("打开等待窗口")

。。。。。查询加载数据的代码

Functions.Execute("关闭等待窗口")

 

按钮二代码:

Functions.Execute("打开等待窗口")

按钮一.PerformClick

Functions.Execute("关闭等待窗口")

 

 

单击按钮二,出现的问题:等待响应窗口显示2次,要实现只显示1次。

 

求助大家,谢谢

 

[此贴子已经被作者于2016/11/30 18:56:22编辑过]

--  作者:有点蓝
--  发布时间:2016/11/29 22:11:00
--  

按钮二代码:


按钮一.PerformClick


--  作者:pcxjxjhkw
--  发布时间:2016/11/29 22:17:00
--  

我在描述问题时,少说了一个按钮。

实际为3个按钮,

 

按钮一代码:

Functions.Execute("打开等待窗口")

。。。。。查询加载数据的代码

Functions.Execute("关闭等待窗口")

 

按钮二代码:

Functions.Execute("打开等待窗口")

。。。。。查询加载数据的代码

Functions.Execute("关闭等待窗口")

 

按钮三代码:

Functions.Execute("打开等待窗口")

按钮一.PerformClick

按钮二.PerformClick

Functions.Execute("关闭等待窗口")

单击按钮三,出现的问题:等待响应窗口显示3次,要实现只显示1次。


--  作者:有点蓝
--  发布时间:2016/11/29 22:27:00
--  
1、把按钮代码搬到函数

按钮一代码:

Functions.Execute("打开等待窗口")

Functions.Execute("函数1")

Functions.Execute("关闭等待窗口")

 

按钮二代码:

Functions.Execute("打开等待窗口")

Functions.Execute("函数2")

Functions.Execute("关闭等待窗口")

 

按钮三代码:

Functions.Execute("打开等待窗口")

Functions.Execute("函数1")

Functions.Execute("函数2")

Functions.Execute("关闭等待窗口")

2、重复调用代码

按钮三代码:

Functions.Execute("打开等待窗口")

按钮1查询加载数据的代码

按钮2查询加载数据的代码

Functions.Execute("关闭等待窗口")


--  作者:pcxjxjhkw
--  发布时间:2016/11/29 22:30:00
--  

等待窗口用到的地方很多,不可能将所按钮的代码都写到函数。

按我的理解,应该能实现的。

理由:_FromIsOpened初始为False,启动一等待窗口,值为true。当为True时,则不为执行打开窗口函数,直到为False时才会执行。

 

但测试时,就是无法实现。

[此贴子已经被作者于2016/11/29 23:02:37编辑过]

--  作者:pcxjxjhkw
--  发布时间:2016/11/30 11:44:00
--  
各位老师,这个问题还没得到解决哟
--  作者:有点蓝
--  发布时间:2016/11/30 11:58:00
--  
看4楼,没有其它办法
--  作者:有点色
--  发布时间:2016/11/30 12:26:00
--  
 只管打开,关闭窗口,用一个计时器来关闭,判断变量的值即可。
--  作者:pcxjxjhkw
--  发布时间:2016/11/30 12:35:00
--  
5楼的分析有什么问题吗?
--  作者:逛逛
--  发布时间:2016/11/30 12:43:00
--  
试试重写一个函数吧

例如:

函数 ss

Dim a As  List(of  WinForm.Button) = args(0)
If Not Forms("等待响应").Opened Then
    Forms("等待响应").Open
    For Each b As WinForm.Button In a
        b.PerformClick
        If b.Text > "" Then
            Forms("等待响应").Controls("提示信息").text = b.Text
        End If
    Next
    Forms("等待响应").Close
End If


执行


Dim bs As New List(of WinForm.Button)
bs.Add(CType(Forms("??").Controls("Button1"),WinForm.Button))
bs.Add(CType(Forms("??").Controls("Button2"),WinForm.Button))
Functions.Execute("ss",bs)