zepplin 发表于 2006-8-16 21:08:30

高手过来:如何判断某个窗体的enable状态???

大家讨论比较多的是对某个控件如checkbox、pushbutton的enable的获取,但是如何获取某个窗体的enablde好像还没有人提到。因为在很多数据库程序中,一个界面的打开到可以响应用户的消息需要几秒的延迟,而到底延时多少和要获取的数据量有关,这就提出一个问题,如何能获取窗体的Enable的状态,等检测到enablde才进行下一步的界面操作。否则只能用delayfor来一个很长的演示,这样做效率太低了。我尝试着这样写脚本:

   Window SetContext, "Caption=MSTP通用查询", ""
    Result = SQAGetProperty("type=Window;Caption=MSTP通用查询","Enabled",i)
    If Result = 0 then
      If i = -1 then
            Msgbox("Enable")
      Else
            Msgbox("Disabled")   
      End if      
    Else
      Msgbox(Cstr(Result))
      Msgbox("fail")
    End if

脚本运行报错,错误码是1003,是sqaObjectNotFound。我知道肯定是SQAGetProperty语句有问题,但是不知道怎么才正确。请高手们赐教。。。感谢

5am 发表于 2006-8-17 09:27:38

改用window验证点呢?

liangl923 发表于 2006-8-21 17:46:31

enableb 换成其他的关键字看看

caesarqth 发表于 2006-8-21 18:20:05

用SQAWaitForPropertyValue应该可以吧

liangl923 发表于 2006-8-21 20:15:14

Sub main
   Dim i
   Dim Result
   Dim Result1
   Dim Result2
'''Window SetContext,"Type=Window;Caption=无标题 - 记事本" ,"1"
   Result = SQAFindObject("Type=Window;Caption=无标题 - 记事本")
''''Result1 = SQAFindObject("Type=Window;Caption=无标题 - 记事本")
   Result = SQAGetProperty("Type=Window;Caption=无标题 - 记事本","Enabled",i)
    If Result = sqaSuccess then
      If i = True then
            Msgbox("Enable")
      Else
            Msgbox("Disabled")   
      End if      
    Else
      Msgbox(Cstr(Result))
      'Msgbox("fail")
    End if   
End Sub

'Window SetContext帮助里有这么一段:

If this command fails during playback (for example, if the specified window cannot be found), an error is logged, but playback continue regardless of the playback option for script command failures.

所以用了他可能会造成无法找到窗体

上面的代码里我把它注释掉了,你可以试试看,包含它的时候无法找到窗体(重新启动窗体后在执行也找不到),注释掉他后,执行肯定可以找到窗体(如果找不到清关掉无关窗口或者重新启动记事本程序既可以找到)
页: [1]
查看完整版本: 高手过来:如何判断某个窗体的enable状态???