Страница 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.
А просто искать в диалогах - смысл?