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

Считывание задизейбленого контрола


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

#1 Гость_FAT_*

Гость_FAT_*
  • Guests

Отправлено 05 сентября 2006 - 06:18

Всем привет!
У меня есть винформа на которой куча текстбоксов, все они задизейблены.
Можно ли при помощи ТС считать информацию в этих контролах.И как это сделать.
Заранее спасибо.

#2 serega

serega

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

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 05 сентября 2006 - 06:36

А Вы пробовали считывать с помощью ТС другие контроллы?
  • 0

#3 Гость_FAT_*

Гость_FAT_*
  • Guests

Отправлено 05 сентября 2006 - 06:39

А Вы пробовали считывать с помощью ТС другие контроллы?

Просмотр сообщения


Нет, не пробовал.

#4 Dart

Dart

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

  • Members
  • Pip
  • 70 сообщений
  • Город:г. Севастополь

Отправлено 05 сентября 2006 - 09:55

Всем привет!
У меня есть винформа на которой куча текстбоксов, все они задизейблены.
Можно ли при помощи ТС считать информацию в этих контролах.И как это сделать.
Заранее спасибо.

Просмотр сообщения

Точно так же как и с Enabled контролов можно считывать значения пропертей с Disabled контролов. Уних разница в том, что свойство Enabled в первом случае True во втором False. В disabled controls нельзя ничего писать.

Скажем есть disabled Edit Control - EditObj.

Строчка -

EditObj.wText = "Hello world;

приведет к ошибке.
  • 0

#5 serega

serega

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

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 05 сентября 2006 - 12:07

Нет, не пробовал.

Просмотр сообщения


Попробуйте.

Dart уже ответил, повторюсь.
Идея та же, только одно свойство Enabled имеет значение False.
  • 0

#6 Гость_FAT_*

Гость_FAT_*
  • Guests

Отправлено 06 сентября 2006 - 08:52

Люди, всем спасибо.
Получилось :).

#7 QA*

QA*

    Активный участник

  • Members
  • PipPip
  • 104 сообщений
  • Город:Москва

Отправлено 07 июля 2009 - 13:03

Всем доброго времени суток!

Записываю в ТестКомплите нажатие на эдитбокс:
procedure Test1;
begin
 Sys.Process('my_prc').Window('TClassForm', 'Мое окно').Window('TSearchComboEdit', 'текст').Click(1, 1);
end;
Когда тот же самый эдитбокс устанавливаю в состояние Disabled и нажимаю на эдитбокс - в этом случае в скрипт ничего не добавляется, т.е. ТК не "видит" мои действия. Получается, что если объект в состоянии Disabled, то на нем никак нельзя сэмулировать клик мыши?

P/S: а вот робот смог записать:
Window SetContext, "Caption=Мое окно", ""
	EditBox Click, "ObjectIndex=12;State=Disabled", "Coords=1,1"

  • 0

#8 QA*

QA*

    Активный участник

  • Members
  • PipPip
  • 104 сообщений
  • Город:Москва

Отправлено 07 июля 2009 - 13:33

На самом деле ТК "видит" этитбокс, поэтому текс то можно получить в не зависимости от состояния объекта. Моя основная задача была не нажатие на дизейбленный эдитбокс, а получить его текст, для этого я сделал следующее:
Sys.Process('my_prc').Window('TClassForm', 'Мое окно').Window('TSearchComboEdit', 'текст').wText;
а вот при попытке нажать на задизейбленный объект
Sys.Process('my_prc').Window('TClassForm', 'Мое окно').Window('TSearchComboEdit', 'текст').Click(1,1);
ТК выдает красный лог.
  • 0

#9 Dmitry N

Dmitry N

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

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

Отправлено 08 июля 2009 - 04:36

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

А что за ошибка в логе?
  • 0
С уважением,
Дмитрий

#10 QA*

QA*

    Активный участник

  • Members
  • PipPip
  • 104 сообщений
  • Город:Москва

Отправлено 08 июля 2009 - 06:12

Ошибка следующая:
The window is disabled. The action cannot be executed.
  • 0

#11 Dmitry N

Dmitry N

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

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

Отправлено 09 июля 2009 - 04:34

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

Логично... А зачем, вообще, кликать на задизейбленный объект? Мне кажется это бессмысленным.

Тем не менее, это можно сделать так:
x := obj.ScreenLeft + obj.Width / 2;
y := obj.ScreenTop + obj.Height / 2;
Sys.Desktop.MouseDown(VK_LBUTTON, x, y);
Sys.Desktop.MouseUp(VK_LBUTTON, x, y);

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

#12 QA*

QA*

    Активный участник

  • Members
  • PipPip
  • 104 сообщений
  • Город:Москва

Отправлено 09 июля 2009 - 07:00

Да, пока смысл в этом не могу найти :)...Я то ошибочно предпологал, что ТестКомплит не может нажать на объект потому что его не "видит", но потом вроде бы разобрались что это не так. Но все равно спасибо за последний пример, думаю, он мне пригодится в будущем :good:, ну, например, чтобы нажать на объект, который действительно ТК не "видит"
  • 0

#13 babi4

babi4

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

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

Отправлено 23 июля 2009 - 10:36

Добрый день,
У меня чуть другая ситуация:
Ссылки на контролы я храню в словаре объектов
Set goRepos = CreateObject("Scripting.Dictionary") 
	  goRepos.Add "Server Connection Wizard",	  Aliases.mmcConsole.frmServerConnectionWizard
	  goRepos.Add "Dlg Server Exist",			 Aliases.mmcConsole.dlgServerExist

Мне необходимо обработать ситуацию, когда объект не существует в данный момент, и вывести в лог, что такой то объект не найден(т.е. однозначно его идентифицировать).
Но, проблема в том - что написать например goRepos("Server Connection Wizard").get_name нельзя, т.к объект не найдется и name его получить нельзя.

Кто-нибудь сталкивался с аналогичным?

Спасибо.
  • 0

#14 Dmitry N

Dmitry N

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

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

Отправлено 23 июля 2009 - 12:21

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

Вам надо использовать функцию Eval.
name = Eval(goRepos("Server Connection Wizard")).get_name

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

#15 babi4

babi4

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

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

Отправлено 24 июля 2009 - 11:26

спасибо :)
  • 0


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

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