Синхронизация редактора с результатами поиска (Show All)

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

Latest post of the previous page:

John Doe wrote:
Mon 30 Dec, 2019 13:54
Только вот сказано, что исправление экспериментальное, а значит есть вероятность, что обнаружатся негативные последствия, из-за которых придётся вернуть всё как было.
Это правильно … Обнаружились сложности (неудобство) в использовании DN_LISTCHANGE вместо DN_INPUT.
Конкретно: после прихода DN_LISTCHANGE в Param.Param2 - правильное значение (новый индекс), а в Object.CurPos - предыдущий. Ну и, соответственно, Menu.Value - старое значение. Хотя Event = DE_DLGPROCEND (т.е., по идее, хендлер вызывается ПОСЛЕ стандартной обработки). Я понимаю, что обходится заменой Menu.Value на Menu.GetValue.
Ещё сложность с первым вхождением. Как оказалось, при DN_INITDIALOG Menu.GetValue(1) возвращает пустую строку. Т.е. МЕНЮ, видимо, ещё не проинициализировано. Так что пока (пока либо сам не придумаю, либо сообщество не подскажет) воздержусь от использования DN_LISTCHANGE …

User avatar
John Doe
Бюрократ
Posts: 12656
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 270 times

Синхронизация редактора с результатами поиска (Show All)

Post by John Doe »

Вот как раз тут особых проблем нет — достаточно исподьзовать соответствующие функции из апи плагинов (что кстати рекомендуется в любом случае, а в обработчиках событий так особенно).

Отмеченные вами несоответствия вероятно тоже поправимы, но это другой вопрос.

buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

John Doe wrote:
Mon 30 Dec, 2019 21:28
использовать соответствующие функции из апи плагинов
«Это Вы сейчас с кем разговариваете?»©
Я не знаю не только, как из скрипта, написанного на LUA, использовать функции из АПИ плагинов, но и какие функции "соответствующие".
Я, честно говоря, думал, что все вызовы функций, кроме встроенных в ЛУА - это вызовы неких функций из LuaMacro.

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Синхронизация редактора с результатами поиска (Show All)

Post by Xerox »

buniak_a_h,
эмм, я сильно не вникал, и если я правильно понял вопрос - "как получить текст из евента" (?)
если номер который приносит ДН_ЛИСТЧАНЖ он правильный, то можно брать из элемента диалога так:
GetDlgITem(ep.Param1)[6][ep.Param2].Text
где:
6 = где сидит таблица значений в элементе ЛИСТ
ep = параметры евента
ep.Param1 = номер элемента ЛИСТ
ep.Param2 = номер нового значения элемента ЛИСТ

отсюда собственно:
https://api.farmanager.com/ru/dialogapi ... hange.html
там еще что прикольно можно отменить этот переход на новое значение,
возможно поэтому значения МЕНЮ в обьектах не спешит становиться новым.
И мы тогда как бонус получаем прежнее значение МЕНЮ/позицию для сравнивания если надо,
без сохранения в переменных заранее, т.е. обходясь меньшим количеством переменных
ну если нет каких-нибудь засад с этим
Last edited by Xerox on Tue 31 Dec, 2019 01:04, edited 3 times in total.

buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

Xerox wrote:
Tue 31 Dec, 2019 00:56
если номер который приносит ДН_ЛИСТЧАНЖ он правильный, то можно брать из элемента диалога так:
GetDlgITem(ep.Param1)[6][ep.Param2].Text
1. Ну, собсно, именно так я и беру (ну, почти - я не знаю, что такое GetDlgITem, но получаю по hDlg:send(F.DM_GETDLGITEM, 1) ). Я ж писал, что обойти можно. Просто теряется кайф от DN_LISTCHANGE …
2. На самом деле для первоначального позиционирования на первый найденный образец позже текущей позиции редактора я сразу в DN_INITDIALOG запоминаю все строки (да ещё слегка преобразовываю для повышения эффективности дальнейшей обработки). Поэтому эта проблема отсохла сама собой.
--
Сейчас выложу версию 1.4.1 с поддержкой результатов поиска плагином RESearch. Ещё тут родилась мысль, что, например, если в редакторе есть отмеченный блок, то по Ctrl+H можно скрывать результаты вне блока; таким образом можно будет "реализовать поиск внутри отмеченной области" (на самом деле, конечно, не реализовать, а симулировать). Хотелось бы знать, может ли это кому-нить кроме меня показаться удобным. Я до сих пор пользуюсь LF Search-ем и RESearch-ем только по той причине, что у стандартного F7 нет поиска в выделенной области. Я писал, но никто не делает …

buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

Версия 1.5.1 - сделана фильтрация по вхождению в блок. Увы, после обновления списка теряется раскраска найденных образцов в списке найденных. Ели кто знает, как с этим бороться - поможите кто чем может! Нашёл, но уже не сегодня…
Last edited by buniak_a_h on Tue 31 Dec, 2019 06:36, edited 1 time in total.

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Синхронизация редактора с результатами поиска (Show All)

Post by Xerox »

buniak_a_h wrote:
Tue 31 Dec, 2019 04:10
Хотелось бы знать, может ли это кому-нить кроме меня показаться удобным
я думаю что было бы удобно

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Синхронизация редактора с результатами поиска (Show All)

Post by Xerox »

buniak_a_h wrote:
Mon 30 Dec, 2019 13:53
Кстати! Пользуется кто-нить из читающих эту тему плагином RESearch? Там тоже есть Show All и нету синхронизации… Стоит доделывать и публиковать?
если не очень затратно, то стоит, я рассматриваю его и ЛФСеарч, до конца не определился, да и вопче, опятьже, если не оч. затратно, то давай, спасибо

buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

Xerox wrote:
Tue 31 Dec, 2019 10:44
если не оч. затратно, то давай, спасибо
Дык уже в первом сообщении ткмы. Версия 1.5.1 - и фильтрация, и RESearch

DV
Posts: 387
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 14 times
Been thanked: 14 times

Синхронизация редактора с результатами поиска (Show All)

Post by DV »

Может, это исключительно моё восприятие, но немного изменённое стандартное поведение мне нравится больше... Для иллюстрации, вот макрос для поиска всех вхождений, которым я пользуюсь сейчас:

Для меня огромное преимущество данного макроса в таком, казалось бы, маленьком нюансе, что при его вызове экран не дёргается. Потому что когда текущая строка вдруг прыгает вверх, это неожиданно, взгляд теряется и ищет, куда же делась строка...
Last edited by DV on Tue 31 Dec, 2019 12:47, edited 1 time in total.

buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

DV wrote:
Tue 31 Dec, 2019 12:46
огромное преимущество <…>, что при его вызове экран не дёргается.
Да я согласен. Неохота было проверять, находится ли уже найденная строка на экране. Ну и не перекрыта ли она таблицей. В этом случае, извините, дёргаться будет всё равно - не смещать же диалог, чтоб показать найденное! В частности поэтому я пока не публикую последний (мой) вариант, сохраняющий раскраску при фильтрации…

User avatar
HaRT
Moderator
Posts: 9271
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 96 times
Been thanked: 205 times

Синхронизация редактора с результатами поиска (Show All)

Post by HaRT »

buniak_a_h wrote:
Tue 31 Dec, 2019 12:57
не смещать же диалог, чтоб показать найденное
Конкретно этим диалогом не пользовался, но в целом я как пользователь предпочитаю именно смещение диалога — при условии, что возможно одновременно показать и найденное (по возможности целиком), и диалог (без его уменьшения).
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Синхронизация редактора с результатами поиска (Show All)

Post by Xerox »

HaRT,
Если что, то мой скрипт позволяет сдвигать и изменять размер диалога,
на днях закину обновленную совсем-совсем безглючную версию

User avatar
HaRT
Moderator
Posts: 9271
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 96 times
Been thanked: 205 times

Синхронизация редактора с результатами поиска (Show All)

Post by HaRT »

Xerox wrote:
Tue 31 Dec, 2019 14:42
мой скрипт позволяет сдвигать и изменять размер диалога
Да мне довольно и своих (простеньких), которые прижимают диалог влево/ вверх/ вправо/ вниз или центруют — в зависимости от нажатого кнопкосочетания.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1437
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 116 times
Contact:

Синхронизация редактора с результатами поиска (Show All)

Post by buniak_a_h »

HaRT wrote:
Tue 31 Dec, 2019 13:04
предпочитаю именно смещение диалога
Тут возникает неприятный момент. Представьте, что мышка вне диалога, шагаю с клавиатуры. В какой-то момент приходится этот диалог сместить, и указатель мышки оказывается над списком. Оба!!! Указатель в списке смещается так, чтобы соответствовать указателю мышки. Или это настраивается?

User avatar
HaRT
Moderator
Posts: 9271
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 96 times
Been thanked: 205 times

Синхронизация редактора с результатами поиска (Show All)

Post by HaRT »

buniak_a_h wrote:
Tue 31 Dec, 2019 15:51
указатель мышки оказывается над списком. Оба!!! Указатель в списке смещается так, чтобы соответствовать указателю мышки. Или это настраивается?
Насколько я понимаю, «в вакууме» ничто никуда не смещается, но в реальных условиях достаточно небольшого дрожания стола, чтобы породить событие движения мыши и привести к выбору другого элемента. Меня это не только в Фаре раздражает и огорчает, но переходить на трэкбол или тачпад я пока не готов. :)
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

Return to “Обсуждение макросов”