PDA

Показать полную графическую версию : Обработать класс TStringGrid


Frost_Imp
30-09-2009, 15:45
Всем доброго времени суток!
Прошу помочь с проблемой следующего характера...
Есть программа, осуществляющая поиск. Результаты поиска представлены в виде таблицы класса TStringGrid. Результатов может быть от одного и до (в теории =) ) бесконечности. Нужно на каждой строке результата сделать ENTER ну и обработать дальше, не суть. Трабла в том, что средствами AutoIT v3 Info я не могу видеть разницу между строкой со вторым, например, результатом и строкой с третьим результатом. Другими словами, если я нахожусь в первой строке и при нажатии на кнопку down ЧТО-ТО изменилось - ништяк, есть еще один результат. Не изменилось - ну на нет и суда нет, делаем какие-то другие вещи.
Есть идеи, как можно в этом контроле понять, где 1 строка, а где вторая.

Sp01LeR
30-09-2009, 19:42
Твой скриншот ниочем не говорит...
Лучше скопируй сюда текст с вкладки "Summary" окна AutoIT v3 Info.

amel27
01-10-2009, 06:15
Frost_Imp, "T*" - контролы Delphi, автоматизировать их проблематично , т.к. обычно не обрабатывают даже стандартные сообщения, хотя зависит от версии компоненты - надо проверять... вопрос уже поднимался, например тут: Получение информации из нестандартных контроллов (http://forum.oszone.net/showthread.php?p=1223692). В крайнем случае, для определения того, что "ЧТО-ТО изменилось" можно использовать ф-ции "Pixel*()".

Frost_Imp
01-10-2009, 11:35
Sp01LeR, вот данные об окне
>>>> Window <<<<
Title: Д-Информ
Class: TFormMain
Position: 1, 1
Size: 1168, 1020
Style: 0x16CF0000
ExStyle: 0x00010100
Handle: 0x00050884

>>>> Control <<<<
Class: TStringGrid
Instance: 1
ClassnameNN: TStringGrid1
Advanced (Class): [CLASS:TStringGrid; INSTANCE:1]
ID: 264338
Text:
Position: 0, 38
Size: 1160, 948
ControlClick Coords: 1014, 371
Style: 0x54110000
ExStyle: 0x00000200
Handle: 0x00040892

>>>> Mouse <<<<
Position: 1014, 409
Cursor ID: 2
Color: 0xFFFFFF

>>>> StatusBar <<<<

>>>> Visible Text <<<<


>>>> Hidden Text <<<<

amel27, думал о PixelCheckSumm... Не подходит, сложно анализировать

Sp01LeR
01-10-2009, 14:38
PixelCheckSumm() очень грузит "камень", для Gui-форм лучше использовать PixelGetColor(), но тоже придется много анализировать...

Все-таки, по-моему, самым простым способом будет разворачивание окна, вычисление нужных коодинат в области Class: TStringGrid и использование Send(), MouseClick(), MouseWheel(), MouseGetPos(), MouseMove() и т.д.

Frost_Imp
01-10-2009, 14:49
PixelCheckSumm() очень грузит "камень" »
Ну, у меня в нескольких приложениях есть чек сумм. Если поле анализа небольшое - потеря в скорости не заметна

r35p3ct
06-10-2009, 22:47
Frost_Imp, попробуй WinSpy, AutoIT v3 Info показывал TdfDBGrid, а WinSpy -TDBGridInplaceEdit.




© OSzone.net 2001-2012