Страница 1 из 1

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

СообщениеДобавлено: 17.02.2014 12:51:16
Lifter
Что-то я запутался.
Мне надо в компоненте 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;

Есть ли простой способ (без рекурсии) переместить всю ветку с ее дочками вверх / вниз?

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

СообщениеДобавлено: 28.07.2014 23:46:25
MylnikovDm
У каждого узла дерева есть свой список вложенных в него элементов. Двигайте свой элемент в этом списке, а не в общем списке всего дерева, и будет вам счастье.
У TTreeNode для этого есть procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode);