Прошу добавить горячий индикатор числа результатов поиска в окно "Поиск"

tormozit Открыто

.

Комментарии

tormozit
#1, ред. 02 сентября 2024 08:39

Хотелось бы отображать число результатов прямо в заголовке окна "Поиск". Метод ТурбоКонф.УстановитьЗаголовокТекущегоОкна() не действует на это окно почему то. Точнее в свойствах UIAutomation заголовок меняется, но само окно его не применяет.

@bolsun Может быть эту фичу в целом сделаешь сам в Турбоконфе без правки АПИ?


tormozit
#2, ред. 01 сентября 2024 12:07

Если делать добавку в заголовок этого окна через АПИ, то тогда нужен метод рисования поверх аналогично тому, как ты кнопку "Замена" сюда выводишь. В заголовке кажется будет проще, т.к. только X и Y в пикселях нужны относительно левого верхнего угла окна. Например можно назвать новый метод УстановитьТекстПоверхОкна(Текст, X, Y), который будет максимум один текст выводить поверх текущего окна.


tormozit
#3, ред. 01 сентября 2024 12:23

Пока сделал через ПоказатьПодсказку() , но она слишком много внимания привлекает, т.к. постоянно смешается под каретку и быстро скрывается (мигает).


bolsun
#4, ред. 01 сентября 2024 18:05

(1) tormozit, УстановитьЗаголовокТекущегоОкна() не будет работать с дочерними окнами 1С, т.к отображаемый на форме заголовок в них - ненастоящий. Платформа сама рисует окна. Настоящее окно - только главное окно конфигуратора, там заголовок менять можно.


tormozit
#5, 01 сентября 2024 18:03

(4) bolsun, Хорошо бы об этом написать в описании метода =)


bolsun
#6, ред. 01 сентября 2024 18:32

(3) tormozit, если делать такую встроенную реализацию, то тогда можно развить идею. Сделать кнопку с динамическим текстом, которая к тому же будет открывать окно ТурбоПоиска по клику, если нужно.


tormozit
#7, ред. 01 сентября 2024 18:35

(6) bolsun, да, логично. Так факт наличия ТурбоПоиска станет намного более заметным, чтобы его быстрее находили новые пользователи и не забывали старые. Вот только в таком виде "ТурбоПоиск(11") не все сразу могут понять смысл числа. Может лучше "ТурбоПоиск (найдено 11)"?


tormozit
#8, 01 сентября 2024 18:54

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

		Если Истина
			И ЗаголовокОкна = "Поиск" 
			И Не ТурбоКонф.НайтиЭлементПоИмени("По текущей колонке", "флажок")
		Тогда


bolsun
#9, 01 сентября 2024 21:50

У меня вроде работает

https://disk.yandex.ru/d/XKCz9ijzgtoO1w

(8) tormozit, эта проверка еще не реализована


bolsun
#10, 01 сентября 2024 22:43

Текущие флаги в окне еще не учитываются, интересует общая надежность реализации.


tormozit
#11, ред. 01 сентября 2024 23:04

Вроде работает. Но параллельно работает и мой поиск, который находит больше результатов и похоже мой ищет правильнее. Вот пример в Ссылка скрыта ищем слово "Элемент". Мой поиск и Notepad++ находят 41 результат. А твой (турбо) поиск - 36.


bolsun
#12, 01 сентября 2024 23:39

(11) tormozit, понял. Я вывожу количество строк, в которых есть вхождения. А не количество вхождений. В одной строке может быть больше 1 вхождения.


tormozit
#13, ред. 02 сентября 2024 08:29

Еще надо сделать блокировку поиска при длине искомой строки менее 3-х символов. В этом случае предлагаю показывать нечисловой символ "(найдено *)".


bolsun
#14, 02 сентября 2024 12:10

(11) tormozit,
счетчик исправил
флажки теперь поддерживаются
поиск начинается от 1 символа

https://disk.yandex.ru/d/XKCz9ijzgtoO1w


tormozit
#15, ред. 02 сентября 2024 12:45

Флажки работают. Для пустой строки по-прежнему выглядит пугающе
Снова предлагаю сделать (13).
И важно сделать (8), чтобы не обманывать пользователя.


bolsun
#16, 02 сентября 2024 12:50

(15) tormozit, баг просто. Должно быть (найдено 0)

(13) не подойдет, это уже не Турбопоиск, который должен моментально искать и обновляться. И непонятно, что это за звездочка.


tormozit
#17, ред. 02 сентября 2024 12:57

(16) bolsun, модуль может быть очень большим, например несколько миллионов символов. Поиск в нем любой частой буквы выдаст огромное число результатов. Это будет большая и бесполезная работа для процессора. Звездочка (или любой другой спецсимвол) будет непонятна до первого раза как она превратится в число. А это случится крайне быстро.


bolsun
#18, 02 сентября 2024 15:31

https://disk.yandex.ru/d/XKCz9ijzgtoO1w
Добавлено (8) и (13)


tormozit
#19, ред. 02 сентября 2024 15:47

Теперь все работает как я хотел.

Немного беспокоят

  1. Я недостаточно продумал сценарии поиска спецсимволов и коротких слов целиком. Например хочу найти одиночный символ &/?/@/! или слово "Сч" целиком. Поэтому возможно все таки твой вариант (поиска с первого символа) более удобен с учетом этих случаев.
  2. Постоянная большая нагрузка на логический процессор при рисовании индикатора поверх окна. Она намного больше чем сам поиск дает.


tormozit
#20, 02 сентября 2024 18:21

Еще хорошо бы убрать выравнивание по центру, т.к. из-за это вся надпись двигается по горизонтали в процессе ввода искомой строки. Это крадет внимание. Сделай выравнивание по левому краю. Да, так будет менее красиво.


bolsun
#21, 02 сентября 2024 20:50

(19) tormozit, оптимизировал
https://disk.yandex.ru/d/XKCz9ijzgtoO1w


tormozit
#22, 02 сентября 2024 22:26

(21) bolsun, Проверил. Нагрузка на процессор ушла.


tormozit
#23, ред. 03 сентября 2024 08:02

Еще плохо что при повторном открытии окна "Поиск" в нем сразу отображается старое количество, которое было последним рассчитано в прошлое его открытие. Пока оно не рассчитано первый раз, лучше показывать символ неопределенного количества.


bolsun
#24, 04 сентября 2024 18:20

(23) tormozit, исправил

6.2.9013.35583
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg


bolsun
#25, 04 сентября 2024 21:59

Исправлены некоторые артефакты отображения кнопки

6.2.9013.43083

https://disk.yandex.ru/d/ay0Wg6IBTsxSxg


tormozit
#26, ред. 06 сентября 2024 07:35

В окно "Замена" нужен аналогичный индикатор. Не забудь учесть переключатель Блок/Файл.


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера