Страница 100 из 130
Добавлено: Сб сен 12, 2015 20:15
Flasher
Эмм... А как насчёт вводных полей в диалогах?
Добавлено: Сб сен 12, 2015 20:19
MVV
С ними всё не так просто. Поиском их не найдешь - классы стандартные (например, Edit), а текст может быть любым, в то же время по идентификатору к ним тоже не обратишься - в Delphi идентификаторы не являются фиксированными, как в нормальных программах с диалоговыми окнами (а как было бы здорово). Остаются только альт буква и эн табов...
Добавлено: Сб сен 12, 2015 20:24
Flasher
MVV писал(а):классы стандартные

Но они же в одном диалоге разные.
Добавлено: Сб сен 12, 2015 20:25
MVV
У всех полей ввода класс один (ну максимум два-три, если поле нестандартное или с комбобоксом), у всех чекбоксов и кнопок тоже классы совпадают.
Если в окне только одно поле ввода, то можно его найти, но если оно одно, оно и так получит фокус при открытии окна.
Добавлено: Сб сен 12, 2015 20:32
Flasher
А если брать во внимание индекс? Например, в качестве параметра в скобках, типа TEdit(4).
Ну, а комбобоксов много в диалогах не бывает. А к ним тоже не мешало бы обращаться.
Добавлено: Сб сен 12, 2015 20:43
MVV
Хочешь четвертый параметр - порядковый номер окна? В принципе, это можно сделать.
Добавлено: Сб сен 12, 2015 20:45
Flasher
Ну, да. Идентификаторы же обзываются по возрастанию вроде. Но если можно отслеживать по скобкам в 3-м параметре, как я предложил, было бы ещё лучше.
А сейчас, хочешь сказать, на первое поле прыгнет? Я не пробовал ещё.
Добавлено: Сб сен 12, 2015 20:52
MVV
Ты, похоже, говоришь о том, что AHK добавляет к классам окон в скобках номер окна - но это чисто прихоть AHK, а не стандарт. Если ставишь 10 полей ввода в окно или 10 чекбоксов, у них классы будут одинаковые, различаться они будут по идентификаторам, которые с порядком размещения окон в диалоге никак не связаны (например, в Windows кнопка ОК обычно имеет идентификатор 1, кнопка Отмена - 2, при этом обе расположены в самом низу диалога и имеют одинаковый класс Button). А вот функция FindWindowEx будет перебирать эти поля в порядке их размещения в окне (Z-order, Tab order), и эта нумерация по идее совпадает с используемой в AHK.
Добавлено: Сб сен 12, 2015 20:54
Flasher
Не-не. Я AHK тут вообще не имел в виду.
Я про чекинг твоей прогой наличия скобок для восприятие номера в них как индекса.
Добавлено: Сб сен 12, 2015 20:56
MVV
Не, таким извратом заниматься не буду. Никто не запрещает в имени класса использовать эти самые скобки.
Добавлено: Сб сен 12, 2015 20:57
Flasher
В ТС-шных классах их нет в любом случае.
Но для меня любой результат будет приятен.
Добавлено: Сб сен 12, 2015 20:59
MVV
А всё равно. Параметр - могу добавить.
А сейчас, хочешь сказать, на первое поле прыгнет? Я не пробовал ещё.
Сейчас ищет первое попавшееся.
Добавлено: Сб сен 12, 2015 21:00
Flasher
MVV
Главное, чтобы это с send работало. Т.е. нужен Control(Click/Focus) какой-то.
Добавлено: Сб сен 12, 2015 21:33
MVV
Попробуй эту бету:
TCFS Beta 482
Должно работать как-то так:
Код: Выделить всё
findwnd(TMyPanel, , findwnd(TTOTAL_CMD), 5)
Только непонятно, как ты хочешь это с
send использовать - она же сама фокус не устанавливает, она лишь проверяет, что это окно имеет его.
Добавлено: Сб сен 12, 2015 21:50
Flasher
Да, я это понял сразу, поэтому и написал про ControlFocus. В твоём случае - SetFocus.
А просто искать в диалогах - смысл?