Считывание задизейбленого контрола
#1 Гость_FAT_*
Отправлено 05 сентября 2006 - 06:18
У меня есть винформа на которой куча текстбоксов, все они задизейблены.
Можно ли при помощи ТС считать информацию в этих контролах.И как это сделать.
Заранее спасибо.
#2
Отправлено 05 сентября 2006 - 06:36
#3 Гость_FAT_*
#4
Отправлено 05 сентября 2006 - 09:55
Точно так же как и с Enabled контролов можно считывать значения пропертей с Disabled контролов. Уних разница в том, что свойство Enabled в первом случае True во втором False. В disabled controls нельзя ничего писать.Всем привет!
У меня есть винформа на которой куча текстбоксов, все они задизейблены.
Можно ли при помощи ТС считать информацию в этих контролах.И как это сделать.
Заранее спасибо.
Скажем есть disabled Edit Control - EditObj.
Строчка -
EditObj.wText = "Hello world;
приведет к ошибке.
#6 Гость_FAT_*
Отправлено 06 сентября 2006 - 08:52
Получилось :).
#7
Отправлено 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"
#8
Отправлено 07 июля 2009 - 13:33
Sys.Process('my_prc').Window('TClassForm', 'Мое окно').Window('TSearchComboEdit', 'текст').wText;а вот при попытке нажать на задизейбленный объект
Sys.Process('my_prc').Window('TClassForm', 'Мое окно').Window('TSearchComboEdit', 'текст').Click(1,1);ТК выдает красный лог.
#9
Отправлено 08 июля 2009 - 04:36
А что за ошибка в логе?
Дмитрий
#10
Отправлено 08 июля 2009 - 06:12
The window is disabled. The action cannot be executed.
#11
Отправлено 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);
Дмитрий
#12
Отправлено 09 июля 2009 - 07:00
#13
Отправлено 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 его получить нельзя.
Кто-нибудь сталкивался с аналогичным?
Спасибо.
#14
Отправлено 23 июля 2009 - 12:21
Вам надо использовать функцию Eval.
name = Eval(goRepos("Server Connection Wizard")).get_name
Дмитрий
#15
Отправлено 24 июля 2009 - 11:26
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных