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

Фотография

Программное установление свойств


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

#1 M.A.N.

M.A.N.

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Александр

Отправлено 14 июня 2005 - 12:16

Здравствуйте!
В программе на Delphi имеется элемент PageControl с несколькими TabSheet.
Хочу из TestComplete переключить активный TabSheet.
По некоторым причинам

w.PageControl.Click('Параметры');

мне не подходит.
Необходимо сделать это через свойства PageControl.
В Delphi можно сделать так:

PageControl.ActivePage := ParamsSheet;

Пытаюсь по аналогии сделать в TestComplete:

w.PageControl.ActivePage := w.ParamsSheet;

Но не проходит - Invalid variant type conversion property: ActivePage
Подскажите выход.
Заранее благодарен.
  • 0

#2 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 14 июня 2005 - 13:27

Здравствуйте.

Попробуйте использовать метод SetActivePage:
 w.PageControl.SetActivePage(w.ParamsSheet);

  • 0
С уважением,
Дмитрий

#3 M.A.N.

M.A.N.

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Александр

Отправлено 14 июня 2005 - 13:39

Спасибо за ответ.
Закладка действительно переключается, но по непонятным мне причинам
после этого не происходит действий, выполняемых Delphi-программой при переключении закладки (не срабатывает обработка событий), т.е. результат

w.PageControl.Click('Параметры');
или
w.PageControl.SetActivePage(w.ParamsSheet);

отличается от того, если просто переключить мышкой закладку.
С чем это может быть связано?
  • 0

#4 BJk

BJk

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Николай

Отправлено 14 июня 2005 - 16:58

Может быть стои попробовать Sys.Keys("[Tab]") ?
  • 0

#5 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 15 июня 2005 - 07:26

Здравствуйте.

Вот код функции, предложенной на официальной ньюсгруппе TestComplete.
procedure SetActiveTab(tabControl, page);
var i, item;
begin
  for i:=0 to tabControl.tabs.Capacity - 1 do
  begin
    if tabControl.ActivePage.Caption = page then
    begin
      Log.Event('Tab "' + page + '" is selected');
      exit;
    end;
    Log.LockEvents;
    Sys.Keys('^[Tab]');
    Log.UnlockEvents;
  end;
  Log.Error('Tab "' + page + '"is not found');
end;

...
  SetActiveTab(w.pagecontrol1, 'My Second Page');
...

  • 0
С уважением,
Дмитрий

#6 Гость_Guest_*

Гость_Guest_*
  • Guests

Отправлено 15 июня 2005 - 11:09

Спасибо, Дмитрий, за ответ.
Да, действительно, в чистом виде сочетание Ctrl-Tab работает, но к сожалению, в тестируемом приложении с помощью этого сочетания переключаются MDI-Child окна, поверх которых находится модальное окно с PageControl. Приходится делать активным заголовок закладки и перемещаться при помощи стрелок... но это уже мои проблемы.

Вопрос в том, где еще может проявляться подобное несрабатывание обработчиков кроме обнаруженного примера? И является ли, в общем, использование сочетаний клавиш более надежным вмеcто более удобного Click?

#7 M.A.N.

M.A.N.

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Александр

Отправлено 15 июня 2005 - 11:14

Сорри, забыл зарегистироваться... Последнее сообщение было от меня.
  • 0

#8 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 20 июня 2005 - 12:42

Здравствуйте.

Вопрос в том, где еще может проявляться подобное несрабатывание обработчиков кроме обнаруженного примера? И является ли, в общем, использование сочетаний клавиш более надежным вмеcто более удобного Click?

Обработчики могут не сработать у тех контролов, разработчики которых не позаботились (случайно или преднамерено) о вызове событий при выполнении соответствующих нативных функций.

Вообще, конечно, наиболее правильным является настоящий Click, то есть помещение указателя мыши над контролом и нажатие ее кнопки. Но, к сожалению, с некоторыми контролами реализовать это не так просто. Главная проблема - это правильно определить координаты точки экрана, на которую нужно кликнуть. Как определить координаты заголовка нужного таба я, к сожалению, не знаю.
  • 0
С уважением,
Дмитрий


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

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