TTreeView: Программное перемещение веток с детками

Форум для изучающих FPC и их учителей.

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

TTreeView: Программное перемещение веток с детками

Сообщение Lifter » 17.02.2014 12:51:16

Что-то я запутался.
Мне надо в компоненте TTreeView сделать по нажатию кнопок перемещение выделенной ветки (со всеми ее подветками) вверх / вниз в пределах ее родителя. Код ниже двигает только саму ветку (без подветок), и по всему дереву, а не в пределах родительской ветки.
Код: Выделить всё
procedure TTreeForm.btnUpClick(Sender: TObject);
var
  i : integer;
begin
  i:=TreeView1.Selected.AbsoluteIndex ; {определяем индекс выделенной ветки}
  if i<>0 then TreeView1.Selected.MoveTo(TreeView1.Items[i-1], naInsert);
end;

procedure TTreeForm.btnDownClick(Sender: TObject);
var
  i:integer;
begin
i:=TreeView1.Selected.AbsoluteIndex ;
if i<>TreeView1.Items.Count-1 then TreeView1.Items[i+1].MoveTo(TreeView1.Selected, naInsert);
end;

Есть ли простой способ (без рекурсии) переместить всю ветку с ее дочками вверх / вниз?
Lifter
новенький
 
Сообщения: 21
Зарегистрирован: 19.04.2012 02:17:24

Re: TTreeView: Программное перемещение веток с детками

Сообщение MylnikovDm » 28.07.2014 23:46:25

У каждого узла дерева есть свой список вложенных в него элементов. Двигайте свой элемент в этом списке, а не в общем списке всего дерева, и будет вам счастье.
У TTreeNode для этого есть procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode);
MylnikovDm
постоялец
 
Сообщения: 103
Зарегистрирован: 15.02.2007 21:26:10
Откуда: Челябинск


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru