powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация cxDBTreeList
9 сообщений из 9, страница 1 из 1
Фильтрация cxDBTreeList
    #39520473
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь настроить фильтрациюcxDBTreeList, но ничего не происходит:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TfrmDataTreeList.CreateFilter(AColumn: TcxDBTreeListColumn; ASearhText: string);
begin
  with lstMain.DataController.Filter do
  begin
    BeginUpdate;
    try
      Root.Clear;
      if Trim(edtSearchText.Text) = '' then
        Active := False
      else
      begin
        Root.AddItem(AColumn, foLike, '%' + ASearhText + '%', '');
        Active := True;
      end;
    finally
      EndUpdate;
    end;
  end;
end;



Вопрос, почему ?
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520493
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трилист не поддерживает подобный метод фильтрации через контроллер -- это есть только у грида. Так что можно воспользоваться другими методами -- фильтровать датасет или отдельные ноды скрывать-показывать.
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520496
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, а слышал, что стал поддерживать в новых версиях или только звон ?
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520513
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал, но фильтруются такое впечатление только корневые узлы, а среди детей уже не находит.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TfrmDataTreeList.CreateFilter(AColumn: TcxDBTreeListColumn; ASearhText: string);
var
  ANode: TcxTreeListNode;
  i: Integer;
begin
  if ASearhText = '' then
    for i := 0 to lstMain.AbsoluteCount - 1 do
      lstMain.AbsoluteItems[i].Visible := True
  else
    for i := 0 to lstMain.AbsoluteCount - 1 do
    begin
      ANode := lstMain.AbsoluteItems[i];
      if Pos(ASearhText, Trim(ANode.Values[AColumn.ItemIndex])) > 0 then
        ANode.Visible := True
      else
        ANode.Visible := False;
    end;
end;
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520519
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фильтр в дереве ?
Куда деваются узлы если родитель не попал в фильтр ?
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520534
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr, да, я грешным делом думал, что если дети Visible то и родители Visible
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520576
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDi, а слышал, что стал поддерживать в новых версиях или только звон ?
Без понятия, кто там звонит, но на 2017 год этой фичи даже в планах не было, хотя и просят их уже лет семь:
https://www.devexpress.com/Support/Center/Question/Details/S137256/makes-the-quantumtreelist-implement-icxfiltercontrol
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520594
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, так я в ТП devespress посмотрел, оказывается AbsoluteCount не рекомендуют использовать, в итоге переделал:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TfrmDataTreeList.CreateFilter(AColumn: TcxDBTreeListColumn; ASearhText: string);
var
  ANode, AParentNode: TcxTreeListNode;
  i: Integer;
begin
  ANode := lstMain.Root.getFirstChild;
  while ANode <> nil do
  begin
    if Pos(ASearhText, ANode.Values[AColumn.ItemIndex]) > 0 then
    begin
      ANode.Visible := True;
       //TcxTreeListNode(ANode.Parent).Visible := True;
      AParentNode := ANode.Parent;
      while AParentNode <> nil do
      begin
        AParentNode.Visible := True;
        AParentNode := AParentNode.Parent;
      end;
    end
    else
      ANode.Visible := False;
    ANode := ANode.GetNext;
  end;
end;



Но чем плох AbsoluteCount?
...
Рейтинг: 0 / 0
Фильтрация cxDBTreeList
    #39520601
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

Потому что "массив" AbsoluteItems перестраивается при изменении структуры дерева, и можно нарваться на различные глюки.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация cxDBTreeList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]