Фильтр в DI_LISTBOX
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Фильтр в DI_LISTBOX
У МЕНЮ есть удобный механизм фильтрации, управляемый программно из скриптов (проперти 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: Исправлены опечатки в идентификаторах
Reason: Исправлены опечатки в идентификаторах
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Фильтр в DI_LISTBOX
Насколько я помню эти макрофункции работают и в листбоксах.
https://t.me/FarManager — Telegram чат
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Фильтр в DI_LISTBOX
John Doe, да, я проверил. Но есть минус: они действуют на все листбоксы диалога. А хотелось бы индивидуализации.
Ладно, в моём конкретном случае единовременно виден только один листбокс (аналог PageControl-а с листбоксами по одному на каждой станице) задача решается, но странно, что ещё никому не потребовалось.
Ладно, в моём конкретном случае единовременно виден только один листбокс (аналог PageControl-а с листбоксами по одному на каждой станице) задача решается, но странно, что ещё никому не потребовалось.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Фильтр в DI_LISTBOX
А как можно было бы указать функции
Menu.FilterString
, на какой листбокс эта FilterString должна действовать? Там не предусмотрена такая возможность даже с точки зрения интерфейса. На тот, что имеет фокус ввода, не правильно будет: фокус ввода может быть например, у DI_EDIT-а (например, происходит собственно ввод фильтра).В моём случае в каждый момент виден только один DI_LISTBOX (он же в фокусе). В любой момент можно переключиться на другую страницу (элементы этой страницы скрываются посредством установки флага DIF_HIDDEN, а элементы другой - показываются - гасится упомянутый флаг). И тут - опа! - у нового DI_LISTBOX-а установлен тот же фильтр
Пример такого скрипта тут
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Фильтр в DI_LISTBOX
Пока что речь не о том, чтобы указать (это отдельный разговор).buniak_a_h wrote: ↑Wed 19 Aug, 2020 17:41 А как можно было бы указать функции Menu.FilterString, на какой листбокс эта FilterString должна действовать?
А например в рамках имеющегося апи, мне видится логичным, чтобы фильтр действовал не на все листбоксы сразу (как вы утверждаете, а сам я не проверял), а на какой-то один. И желательно не просто первый в диалоге, а искать начиная с текущего фокусного элемента.
https://t.me/FarManager — Telegram чат
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Фильтр в DI_LISTBOX
Я проверял в процессе разработки PageControl-а. С ним можно ознакомиться здесь
Last edited by buniak_a_h on Thu 20 Aug, 2020 16:11, edited 1 time in total.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Фильтр в DI_LISTBOX
Лично мне в данный момент всё равно.
Но если вы считаете текущее поведение нежелательным, и хотите донести это до разработчиков, то желательно привести максимально простой пример.
Но если вы считаете текущее поведение нежелательным, и хотите донести это до разработчиков, то желательно привести максимально простой пример.
https://t.me/FarManager — Telegram чат