Поиск сообщества
Показаны результаты для тегов 'ttreeview'.
Найдено: 8 результатов
-
Почему этот цикл "видит" только первый уровень дерева? Тогда как правильно организовать поиск нужного TreeViewItem`а по всем узлам, по всему дереву? function TfmTree.FindItemByIndex(id_parent: Integer): TTreeViewItem; var i: Integer; begin Result := nil; for i:= 0 to Pred(TreeView1.Count) do if TreeView1.Items[i].Tag = id_parent then begin Result := TreeView1.Items[i]; break; end; end;
-
Может кому пригодится. Немножко запутался я, т.к. в FMX почти любая визуальная компонента может быть контейнером для другой компоненты. Рабочий код. function GetPathFromNode(AItem: TTreeViewItem): String; begin if AItem = nil then exit('ничего не выбрано'); while Assigned(AItem) and (AItem is TTreeViewItem) do begin Result := AItem.Text + '/' + Result; AItem := TTreeViewItem(AItem.ParentItem); end; Delete(Result, Length(Result), 1); end; проблема была у меня AItem.Parent а правильно - AItem.ParentItem
-
Точнее, как работает наследование. TNodeItem = class(TTreeViewItem) public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; TNodeItem2 = class(TNodeItem) public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; реализация { TNodeItem } constructor TNodeItem.Create(AOwner: TComponent); begin inherited Create(AOwner); end; destructor TNodeItem.Destroy; begin inherited; end; { TNodeItem2 } constructor TNodeItem2.Create(AOwner: TComponent); begin inherited Create(AOwner); end; destructor TNodeItem2.Destroy; begin inherited; end; // Вот самое интересное, не много не понятно почему так procedure TForm1.Button2Click(Sender: TObject); var xTree: TTreeViewItem; begin // Тут все работает xTree := TTreeViewItem.Create(nil); xTree.Text := 'Тест2'; xTree.Parent := TreeView1; end; procedure TForm1.Button3Click(Sender: TObject); var xTree: TNodeItem; begin // И тут все работает xTree := TNodeItem.Create(nil); xTree.Text := 'Тест3'; xTree.Parent := TreeView1; end; procedure TForm1.Button4Click(Sender: TObject); var xTree: TNodeItem2; begin // А вот тут не работает, узел добавляется, а текста нет. xTree := TNodeItem2.Create(nil); xTree.Text := 'Тест4'; xTree.Parent := TreeView1; end;
-
Поэкспериментировал и нашел простейший случай - узел и в нем два листа. Алгоритм следующий (упрощенно) каждый лист показывает пару key=value при клике в узел остается только key= и показывается листвью с выбором value. Затем мы получаем грубо key=new value (хотя не обязательно) После такой операции вы обязательно получаем то что 2 листа меняются местами С узлом ничего не происходит ни программно ни фактически В более сложных случаях тоже шевеление наблюдается, но я его не изучал подробно
-
TTreeView [TTreeView] Как программно выделить элемент TreeView
slava_d2000 опубликовал вопрос в TTreeView
Добрый день! Прошу подсказать как программно выделить элемент дерева. -
Такая задача. Хочу создать некоторое дерево вида: Корень -потомок -потомок Корень -потомок -потомок -потомок Корень -потомок -потомок -потомок и записать данную структуру в БД (FB). А потом в обратную сторону - из данных в БД, программно создать эту же структуру. Но как в VCL не нашел Nodes, и absoluteindex. Так сказать не на что опереться в числовом представлении. Попробовал использовать Globalindex - вышла неудача , он выдает "правильный" результат, т.е. какой он по счету только когда все ветви полностью раскрыты. Думаю ладно, если тебе надо чтобы были все ветки раскрыты, пусть будут, решил использовать ExpandetALL а потом уже находить Globalindex, но увы опять неудача, он просто не разворачивает ветки (указатели меняют расположение) , а данные так и лежат свернутые. Нажимаешь на любую ветку и данные разворачиваются. Но код уже отработал и выдал не правильный индекс (такой как при свернутых ветках). Проблема - в каком виде представлять объекты? хотелось бы в числовом по уникальному ID Как их находить? Спасибо.
-
Мне требуется динамически добавлять и удалять элементы дерева. И чтобы лучше понять как работать с FMX.TreeView.TTreeView я написал простой тестовый примерчик и который не могу заставить работать. Приложение вообще падает. Может подскажите где я ошибаюсь. Описание тестового примера Нужно когда пользователь разворачивает (Expand) элементы дерева, я хочу удалять все дочерние элементы затем добавлять новые дочерние элементы и потом уже пускай родительский TreeViewItem раскрывается (Expand) для показа новых дочерних элементов. Для эмуляции OnExpand и OnCollapse пользуюсь способом, описанным тут: Как можно реализовать в TTreeView события OnExpand и OnCollapse? Тест кейс Достаточно создать корневой элемент, В него добавит дочерний элемент Потом раскрывать (Expand) корневой элемент. И приложение падает. Когда происходит ошибка Добавляешь корневой элемент дерева, потом в него дочерний элемент. Пытаешься развернуть (Expand) корневой элемент (кликая мышкой по плюсику) и приложение падает. Тестовый проект: Test_Tree.zip
- 2 ответа
-
- TTreeViewItem
- OnCollapsed
-
(и ещё 1 )
C тегом:
-
Как можно реализовать данное событие а лучше целых 2 события OnExpand и OnCollapsed
- 1 ответ
-
- OnCollapsed
- TTreeView
-
(и ещё 1 )
C тегом: