Перейти к содержимому

Фотография

Как определить активную форму


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 alex_kart

alex_kart

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 сентября 2009 - 08:32

Пишу скрипт, в котором нажимается кнопочка в меню МДИ формы, в результате нажатия на которую открывается некоторая MDIChild форма (какая конкретно - не известно заранее). Каким образом можно получить форму, которая была открыта? Пробовал
Sys.Desktop.ActiveWindow
Sys.Desktop.FocusedWindow
но первое все время вобзвращает основную форму, а второе - активный на данный момент контрол
Еще такой момент, каким образом ТестКомплит определяет, что окно является unexpected window ?
  • 0

#2 alex_kart

alex_kart

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 сентября 2009 - 09:02

Отвечу сам себе

Aliases.Имя_проекта.Главная_форма.ActiveMDIChild

Но проблема в том что могут возникать не только МДИ но и модальные окна :( Как тут быть?
  • 0

#3 VitalyD

VitalyD

    Опытный участник

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 30 сентября 2009 - 10:26

Ну так и проверяйте появилось ли модальное окно или нет с помощью метод WaitWindow() например.

Если же про возможное модальное окно опять таки ничего неизвестно можно написать свой обработчик для OnUnexpectedWindow.
  • 0

#4 alex_kart

alex_kart

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 сентября 2009 - 11:17

Рано я обрадовался :( MDIChild это делфевая пропертя формы. Она возвращает объект типа IDispatch, потом его как нормальное окно не получается юзать, например пытаюсь вызвать ActiveMDIChild.FindAllChildren - ругается на несуществующий метод FindAllChildren :(
  • 0

#5 alex_kart

alex_kart

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 сентября 2009 - 12:13

Выкрутился каким то извращенным способом
Aliases.MyProject.MainForm.FindChild(['FormID'],[Aliases.MyProject.MainForm.ActiveMDIChild.FormID], 2,True)

  • 0

#6 alex_kart

alex_kart

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 сентября 2009 - 12:26

Если же про возможное модальное окно опять таки ничего неизвестно можно написать свой обработчик для OnUnexpectedWindow.

А какие окна считаются неожиданными? Вот нажал я например на кнопку. Если все хорошо то открывается окно, если не все хорошо, то открываются 2 окна - одно с сообщением об ошибке, второе нормальное. Какие окна при этом считаются неожиданными?
  • 0

#7 VitalyD

VitalyD

    Опытный участник

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 30 сентября 2009 - 12:53

Если вы попытаетесь выполнить какое либо действие (клик например) с нормальным окном в тот момент когда, существует модальное окно с сообщением об ошибке - произойдет событие OnUnexpectedWindow - типа неожиданное окно помешало вам выполнить действие.
Важно понимать что нужно именно попытаться выполнить какое-либо действие с окном, иначе данное событие не произойдет:

"TestComplete only checks for unexpected windows when the script performs an action (Click, DblClick, Activate, etc.). The check does not happen when the script performs certain operations with window properties or when it executes a function, for example, WaitWindow."


Но вообще OnUnexpectedWindow - это конечно крайний случай - куда приятнее самостоятельно проверить появилось ли сообщение об ошибке или нет с помощью всяких WaitWindow, FindChild и т.д.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных