Добавлено: Чт дек 01, 2016 14:29
В смысле? Константой что ли?MVV писал(а):Тогда индекс элемента будет глобальным в рамках родительского окна
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
В смысле? Константой что ли?MVV писал(а):Тогда индекс элемента будет глобальным в рамках родительского окна
Код: Выделить всё
TInpComboDlg {
0: TMyCheckBox,
1: TButton,
2: TMyCheckBox,
3: TMyGroupBox {
0: TMyComboBox {
0: Edit
},
1: TCheckBox,
2: TCheckBox,
3: TCheckBox
},
4: TButton,
5: TButton,
6: TMyCheckBox,
7: TMyComboBox {
0: Edit
},
8: TButton,
9: TButton,
10: TButton,
11: TMyComboBox {
0: Edit
}
}Я о другом подумал. Якобы индекс будет только один для всех.MVV писал(а):Ну как, в рамках конкретной версии что глобальный индекс, что локальный - константы.
Да, это было бы удобно.MVV писал(а):Глобальными индексами были бы просто числа 0, 1 и 2 соответственно
При нажатии кнопки Опций можно использовать send(<цифра>) для выбора пункта, так что там не страшно.MVV писал(а):следовательно, после раскрытия опций глобальные индексы изменятся... Блин...
Удобно использовать - да, но вот определять этот индекс...Flasher писал(а):Да, это было бы удобно.
Код: Выделить всё
TCFS2.exe /ef "eval(settext(findwnd(TMyComboBox, , findwnd(TInpComboDlg), index, 1)))"Код: Выделить всё
TCFS2.exe /ef "eval(settext(findwnd(TMyComboBox, , , 0, 1)))"Код: Выделить всё
TCFS2.exe /ef "eval(varset(@lvl, findwnd(TMyComboBox, , , 0, 1)) + settext(`combo: ` varget(@lvl-1)) + settext(`hello!`, varget(@lvl-1)))"Код: Выделить всё
/ef "tcm(2400,1) eval(settext_wait(`yohoho`, findwnd(TMyComboBox,,findwnd(TMyGroupBox,,findwnd(TPanel,,findwnd(TMultiRename),1),4))))"Код: Выделить всё
/ef "tcm(2400,1) eval(settext_wait(`yohoho`, findwnd(TMyComboBox,,findwnd(TMultiRename),1,1)))"Не вижу смысла избавляться от них, т.к. это универсальный вариант, для полноценной замены которого понадобится не один специализированный макрос.От findwnd в вызовах так и не избавились в итоге...
Почему не так? Работает так же, пишет в то же поле ввода. Но при этом заметно короче. Чтобы ещё сократить, можно написать макрос findchild для поиска элемента в окне с заданным классом...Стало? Не так же?:
У меня ничего не пишет.MVV писал(а):Почему не так? Работает так же, пишет в то же поле ввода.
И что там сократится?MVV писал(а):можно написать макрос findchild для поиска элемента в окне с заданным классом.
Щас на 9.0aRC1 проверил, нужен 5-й индекс (проверил через WinScanner, всё так):У меня ничего не пишет.
Код: Выделить всё
TCFS2 /ef "tcm(2400,1) eval(settext_wait(`yohoho`, findwnd(TMyComboBox,,findwnd(TMultiRename),5,1)))"Ну будет один вызов вместо двух, чуть-чуть короче:И что там сократится?
Код: Выделить всё
TCFS2 /ef "tcm(2400,1) eval(settext_wait(`yohoho`, findchld(TMultiRename,,TMyComboBox,,5,1)))"Так-так, стоп. А где же удобство, о котором шла речь?MVV писал(а):проверил, нужен 5-й индекс
5 вместо 1 - это уже не порядок, а беспорядок.Глобальными индексами были бы просто числа 0, 1 и 2 соответственно (т.е. номер в порядке обнаружения во всей иерархии).
Почти не меняет картину. 1 вместо 3-х ещё куда бы не шло. Или хотя бы название не findchld, а что-то покороче. fch, например.MVV писал(а):Ну будет один вызов вместо двух
Ну как, удобство в том, что индекс всегда одномерный. А о том, что его сложно будет определять, я сразу сказал.Так-так, стоп. А где же удобство, о котором шла речь?
Я полагал, что ты пишешь про код, а не пользовательские настройки, где порядок, если верить выделенному, должен быть учтён.MVV писал(а):А о том, что его сложно будет определять, я сразу сказал.
Это который от InqSoft? А где там индекс можно увидеть? WinExplorer, например, выдаёт другую последовательность. Индексация в AHK также иначе строится.MVV писал(а):проверил через WinScanner
Про код - это дело техники, алгоритм получился вполне себе универсальный.Я полагал, что ты пишешь про код, а не пользовательские настройки, где порядок, если верить выделенному, должен быть учтён.
Скачал WinExplorer: создается ощущение, что он сортирует окна в дереве по алфавиту... А тут важен именно z-порядок. Из имеющихся у меня утилит InqSoft WinScanner и Microsoft Spy++ показывают окна в дереве именно в z-порядке.Это который от InqSoft? А где там индекс можно увидеть? WinExplorer, например, выдаёт другую последовательность. Индексация в AHK также иначе строится.
Дурь дурью, а зерно здравого смысла в примере было. Если надо несколько раз в пределах функции использовать одно и то же выражение, можно его 1 раз сохранить в переменную и потом считывать. А @lvl позволяет не бояться затереть переменную другой функции (но тут, возможно, строковые идентификаторы были бы удобнее).Можешь с @lvl пару полезных примеров набросать? Без "дури".
В Spy++ я видел, а в WinScanner не сразу нашёл кнопку дерева.MVV писал(а):Из имеющихся у меня утилит InqSoft WinScanner и Microsoft Spy++ показывают окна в дереве именно в z-порядке.
Только 1 и начинается с 1.MVV писал(а): AHK в разных групбоксах переименователя нумерация классов с 1 начинается? Или комбобокс с каждым номером только 1 на всё окно?
Смысл мне понятен. Не понятна реализация. Как формально комбинируется эта псевдопеременная с varset/varget, что и в каком виде она возвращает? Одно дело запоминать значение, совсем другое - выражение, где есть свои переменные.MVV писал(а):Если надо несколько раз в пределах функции использовать одно и то же выражение, можно его 1 раз сохранить в переменную и потом считывать.