Фильтр в DI_LISTBOX

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

Фильтр в DI_LISTBOX

Post by buniak_a_h »

У МЕНЮ есть удобный механизм фильтрации, управляемый программно из скриптов (проперти Menu.Filter и Menu.FilterStr). А есть ли аналогичный для списка DI_LISTBOX у диалога? Ну, очень хочется автоматически включать поиск/фильтрацию немедленно при нажатии "символьных" клавиш. Если поиск легко реализовать, то фильтрацию - нет. Вариант выставления LIF_HIDDEN не устраивает: некоторые строки скрыты "перманентно" по другим соображениям. Установка флага 0x00800000 (недокументированная возможность, от которой меня предостерегали авторы) - говорят, небезопасно. Да и визуализации фильтрующей строки нету. Посылать KeyStroke очень не хочется. Я, возможно, пропустил такую возможность при чтении документации - тогда я очень извиняюсь, но прошу ответить не ссылкой на документ, а конкретно.
Last edited by HaRT on Wed 19 Aug, 2020 11:58, edited 1 time in total.
Reason: Исправлены опечатки в идентификаторах
User avatar
John Doe
Бюрократ
Posts: 12998
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

Фильтр в DI_LISTBOX

Post by John Doe »

buniak_a_h wrote: Wed 19 Aug, 2020 07:46 А есть ли аналогичный для списка DI_LISTBOX у диалога?
Насколько я помню эти макрофункции работают и в листбоксах.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

Фильтр в DI_LISTBOX

Post by buniak_a_h »

John Doe, да, я проверил. Но есть минус: они действуют на все листбоксы диалога. А хотелось бы индивидуализации.
Ладно, в моём конкретном случае единовременно виден только один листбокс (аналог PageControl-а с листбоксами по одному на каждой станице) задача решается, но странно, что ещё никому не потребовалось.
User avatar
John Doe
Бюрократ
Posts: 12998
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

Фильтр в DI_LISTBOX

Post by John Doe »

buniak_a_h wrote: Wed 19 Aug, 2020 12:06 они действуют на все листбоксы диалога
Похоже на баг.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

Фильтр в DI_LISTBOX

Post by buniak_a_h »

John Doe wrote: Wed 19 Aug, 2020 15:33
buniak_a_h wrote: Wed 19 Aug, 2020 12:06 они действуют на все листбоксы диалога
Похоже на баг.
А как можно было бы указать функции Menu.FilterString, на какой листбокс эта FilterString должна действовать? Там не предусмотрена такая возможность даже с точки зрения интерфейса. На тот, что имеет фокус ввода, не правильно будет: фокус ввода может быть например, у DI_EDIT-а (например, происходит собственно ввод фильтра).
В моём случае в каждый момент виден только один DI_LISTBOX (он же в фокусе). В любой момент можно переключиться на другую страницу (элементы этой страницы скрываются посредством установки флага DIF_HIDDEN, а элементы другой - показываются - гасится упомянутый флаг). И тут - опа! - у нового DI_LISTBOX-а установлен тот же фильтр
Пример такого скрипта тут
User avatar
John Doe
Бюрократ
Posts: 12998
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

Фильтр в DI_LISTBOX

Post by John Doe »

buniak_a_h wrote: Wed 19 Aug, 2020 17:41 А как можно было бы указать функции Menu.FilterString, на какой листбокс эта FilterString должна действовать?
Пока что речь не о том, чтобы указать (это отдельный разговор).
А например в рамках имеющегося апи, мне видится логичным, чтобы фильтр действовал не на все листбоксы сразу (как вы утверждаете, а сам я не проверял), а на какой-то один. И желательно не просто первый в диалоге, а искать начиная с текущего фокусного элемента.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

Фильтр в DI_LISTBOX

Post by buniak_a_h »

John Doe wrote: Thu 20 Aug, 2020 14:46 не на все листбоксы сразу (как вы утверждаете, а сам я не проверял)
Я проверял в процессе разработки PageControl-а. С ним можно ознакомиться здесь
Last edited by buniak_a_h on Thu 20 Aug, 2020 16:11, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 12998
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

Фильтр в DI_LISTBOX

Post by John Doe »

Лично мне в данный момент всё равно.
Но если вы считаете текущее поведение нежелательным, и хотите донести это до разработчиков, то желательно привести максимально простой пример.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Нужна помощь”