TListViewFilterEdit

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

TListViewFilterEdit

Сообщение Ichthyander »

Кто-нибудь использовал сей компонент? У меня что-то не работает: может я что-то упускаю. В интернете не нашел никакой информации, даже примеров использования.
При нажатии первых клавиш все элементы ListView исчезают, то есть видимо фильтруются(?). Но так никакой элемент списка и не отображается впоследствии, какие бы строки не вписывал, которые заведомо есть в элементах списка. Даже когда заново очищен фильтр ничего не появляется, TListView пустой, пока его не перезагрузить снова. Нужно самому прописывать какие-то действия по фильтрации, используя методы компонента TListViewFilterEdit?
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Вроде нормально работает. Указал свойство ListViewFilterEdit1.FilteredListview и всё.

Lazarus 1.5 r49537M FPC 3.1.1 x86_64-linux-gtk 2
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

alexs писал(а):Вроде нормально работает. Указал свойство ListViewFilterEdit1.FilteredListview и всё.
Lazarus 1.5 r49537M FPC 3.1.1 x86_64-linux-gtk 2

Проверил. Выяснилось вот что.
Создал проект с нуля, добавил в режиме дизайна элементы в ListView. Все работает.
Очистил элементы и попробовал создать те же элементы ListView динамически RunTime самой программой. Работать перестало...
Баг или какая-то фича непонятая мною?
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Пять лет и никто не прокомментировал...
Компонент с юмором, как и все из фильтров пакета. Начинает работать если обновляться так:
procedure TFParameterEdit.btnRefreshClick(Sender: TObject);
var
i :integer;
Item :TListItem;
//...
begin
ListViewFilterEdit1.FilteredListview:=nil;
ListViewFilterEdit1.Clear;
ListViewFilterEdit1.Items.Clear;
lvDeclParam.BeginUpdate;
lvDeclParam.Clear;

//...

for i:=0 to SelCase.Count-1 do
begin
Item:=lvDeclParam.Items.Add;
//...
end;

lvDeclParam.AlphaSort;
lvDeclParam.EndUpdate;

ListViewFilterEdit1.FilteredListview:=lvDeclParam;
// Теперь все фильтруется, но поле Data у строк резко пустым становится при поиске
end;

В ином случае надо заполнять сам ListViewFilterEdit1 отправляя ему массивы строк, а не ListView как привычнее.
PS: а еще в 1.6 Lazarus если компонент фильтра привязан к LV, то при попытке вырезать последний из формы IDE падает.
Ответить