Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Goto page Previous  1, 2, 3 ... 119, 120, 121 ... 128, 129, 130  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Dec 01, 2016 15:29    Post subject: Reply with quote

MVV wrote:
Тогда индекс элемента будет глобальным в рамках родительского окна
В смысле? Константой что ли?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Dec 01, 2016 16:06    Post subject: Reply with quote

Ну как, в рамках конкретной версии что глобальный индекс, что локальный - константы. Точно так же, как оба могут измениться в другой версии.

Но я говорил вот о чём:
Code:
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
   }
}

Если ищем TMyComboBox внутри TInpComboDlg, можем найти 3 штуки с многомерными адресами (3, 0), (7) и (11). Глобальными индексами были бы просто числа 0, 1 и 2 соответственно (т.е. номер в порядке обнаружения во всей иерархии).

Правда, в случае диалога копирования могут быть проблемы из-за того, что элементы внутри TMyGroupBox, в том числе элемент (3, 0), создаются только после нажатия кнопки показа опций, следовательно, после раскрытия опций глобальные индексы изменятся... Блин...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Dec 01, 2016 16:32    Post subject: Reply with quote

MVV wrote:
Ну как, в рамках конкретной версии что глобальный индекс, что локальный - константы.
Я о другом подумал. Якобы индекс будет только один для всех. Mr. Green
MVV wrote:
Глобальными индексами были бы просто числа 0, 1 и 2 соответственно
Да, это было бы удобно.

MVV wrote:
следовательно, после раскрытия опций глобальные индексы изменятся... Блин...
При нажатии кнопки Опций можно использовать send(<цифра>) для выбора пункта, так что там не страшно.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Dec 01, 2016 18:00    Post subject: Reply with quote

Flasher wrote:
Да, это было бы удобно.

Удобно использовать - да, но вот определять этот индекс...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Dec 01, 2016 18:10    Post subject: Reply with quote

Попробуй. Если не получится - отпишись, пойдём по альтернативному пути.
А до тех пор создавать себе и другим команды преждевременно.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Dec 03, 2016 02:57    Post subject: Reply with quote

Что значит не получится? Very Happy
Вопрос лишь в том, насколько будет удобно этим пользоваться...

TCFS2 Beta 532

Ищем все комбобоксы в TInpComboDlg:
Code:
TCFS2.exe /ef "eval(settext(findwnd(TMyComboBox, , findwnd(TInpComboDlg), index, 1)))"

Маемся дурью (ищем, блин, самый первый TMyComboBox в нашем тотале, и чихать, в каком он окне):
Code:
TCFS2.exe /ef "eval(settext(findwnd(TMyComboBox, , , 0, 1)))"


Помимо рекурсивного поиска окна добавилась псевдо-переменная @lvl, обозначающая уровень вложенности вызовов команд/макросов. В частности, эта штука должна хорошо подойти в качестве индекса ячейки хранения, уникальной в пределах каждой функции до выхода из неё.

Продолжаем маяться дурью, но уже с @lvl (ищем тот самый TMyComboBox, запоминаем в ячейке и потом используем вычисленное значение):
Code:
TCFS2.exe /ef "eval(varset(@lvl, findwnd(TMyComboBox, , , 0, 1)) + settext(`combo: ` varget(@lvl-1)) + settext(`hello!`, varget(@lvl-1)))"

Если @lvl везде умножать, скажем, на 10, то в каждой функции можно будет использовать по 10 "локальных" переменных.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Dec 03, 2016 03:35    Post subject: Reply with quote

От findwnd в вызовах так и не избавились в итоге...

Поскольку ты в ini добавил settext_wait, то как оно должно быть? Было:
Code:
/ef "tcm(2400,1) eval(settext_wait(`yohoho`, findwnd(TMyComboBox,,findwnd(TMyGroupBox,,findwnd(TPanel,,findwnd(TMultiRename),1),4))))"
Стало? Не так же?:
Code:
/ef "tcm(2400,1) eval(settext_wait(`yohoho`, findwnd(TMyComboBox,,findwnd(TMultiRename),1,1)))"

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Dec 03, 2016 03:58    Post subject: Reply with quote

Quote:
От findwnd в вызовах так и не избавились в итоге...

Не вижу смысла избавляться от них, т.к. это универсальный вариант, для полноценной замены которого понадобится не один специализированный макрос.

Quote:
Стало? Не так же?:

Почему не так? Работает так же, пишет в то же поле ввода. Но при этом заметно короче. Чтобы ещё сократить, можно написать макрос findchild для поиска элемента в окне с заданным классом...


Чуть соптимизировал вычисление параметров для findwnd, вроде по-прежнему работает:

TCFS2 Beta 534
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Dec 03, 2016 04:06    Post subject: Reply with quote

MVV wrote:
Почему не так? Работает так же, пишет в то же поле ввода.
У меня ничего не пишет.
MVV wrote:
можно написать макрос findchild для поиска элемента в окне с заданным классом.
И что там сократится?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Dec 04, 2016 01:08    Post subject: Reply with quote

Quote:
У меня ничего не пишет.

Щас на 9.0aRC1 проверил, нужен 5-й индекс (проверил через WinScanner, всё так):
Code:
TCFS2 /ef "tcm(2400,1) eval(settext_wait(`yohoho`, findwnd(TMyComboBox,,findwnd(TMultiRename),5,1)))"

Quote:
И что там сократится?

Ну будет один вызов вместо двух, чуть-чуть короче:
Code:
TCFS2 /ef "tcm(2400,1) eval(settext_wait(`yohoho`, findchld(TMultiRename,,TMyComboBox,,5,1)))"

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Dec 04, 2016 01:56    Post subject: Reply with quote

MVV wrote:
проверил, нужен 5-й индекс
Так-так, стоп. А где же удобство, о котором шла речь?
Quote:
Глобальными индексами были бы просто числа 0, 1 и 2 соответственно (т.е. номер в порядке обнаружения во всей иерархии).
5 вместо 1 - это уже не порядок, а беспорядок. Confused
MVV wrote:
Ну будет один вызов вместо двух
Почти не меняет картину. 1 вместо 3-х ещё куда бы не шло. Или хотя бы название не findchld, а что-то покороче. fch, например.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Dec 04, 2016 02:26    Post subject: Reply with quote

Quote:
Так-так, стоп. А где же удобство, о котором шла речь?

Ну как, удобство в том, что индекс всегда одномерный. А о том, что его сложно будет определять, я сразу сказал.
Что поделаешь, в окне переименователя туча комбобоксов, и при том порядок у них далеко не самый очевидный.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Dec 04, 2016 05:48    Post subject: Reply with quote

MVV wrote:
А о том, что его сложно будет определять, я сразу сказал.
Я полагал, что ты пишешь про код, а не пользовательские настройки, где порядок, если верить выделенному, должен быть учтён.
MVV wrote:
проверил через WinScanner
Это который от InqSoft? А где там индекс можно увидеть? WinExplorer, например, выдаёт другую последовательность. Индексация в AHK также иначе строится.

Можешь с @lvl пару полезных примеров набросать? Без "дури".
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Dec 04, 2016 13:21    Post subject: Reply with quote

Quote:
Я полагал, что ты пишешь про код, а не пользовательские настройки, где порядок, если верить выделенному, должен быть учтён.

Про код - это дело техники, алгоритм получился вполне себе универсальный. Smile
Quote:
Это который от InqSoft? А где там индекс можно увидеть? WinExplorer, например, выдаёт другую последовательность. Индексация в AHK также иначе строится.

Скачал WinExplorer: создается ощущение, что он сортирует окна в дереве по алфавиту... А тут важен именно z-порядок. Из имеющихся у меня утилит InqSoft WinScanner и Microsoft Spy++ показывают окна в дереве именно в z-порядке.
А в AHK я вообще не знаю, как нумеруются окна, но полагаю, что нумерация там на каждом уровне своя, а не глобальная... В AHK в разных групбоксах переименователя нумерация классов с 1 начинается? Или комбобокс с каждым номером только 1 на всё окно?
Quote:
Можешь с @lvl пару полезных примеров набросать? Без "дури".

Дурь дурью, а зерно здравого смысла в примере было. Если надо несколько раз в пределах функции использовать одно и то же выражение, можно его 1 раз сохранить в переменную и потом считывать. А @lvl позволяет не бояться затереть переменную другой функции (но тут, возможно, строковые идентификаторы были бы удобнее).
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Dec 04, 2016 23:23    Post subject: Reply with quote

MVV wrote:
Из имеющихся у меня утилит InqSoft WinScanner и Microsoft Spy++ показывают окна в дереве именно в z-порядке.
В Spy++ я видел, а в WinScanner не сразу нашёл кнопку дерева.

MVV wrote:
AHK в разных групбоксах переименователя нумерация классов с 1 начинается? Или комбобокс с каждым номером только 1 на всё окно?
Только 1 и начинается с 1.

MVV wrote:
Если надо несколько раз в пределах функции использовать одно и то же выражение, можно его 1 раз сохранить в переменную и потом считывать.
Смысл мне понятен. Не понятна реализация. Как формально комбинируется эта псевдопеременная с varset/varget, что и в каком виде она возвращает? Одно дело запоминать значение, совсем другое - выражение, где есть свои переменные.

И ещё вопрос - как получить текст окна? Т.е. необходимо записать имеющийся текст, например, в varset, а потом подставить его с добавкой в settext. Скажем, на примере заголовка панели. Это возможно?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 119, 120, 121 ... 128, 129, 130  Next
Page 120 of 130

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group