Добвресу и вам, пытался такое проделать путём вырезки-врезки узлов, но нарушается порядок следования нод, нашёл вариант, но он оказался не рабочим, выскакивало с ошибками, поэтому остановился на банальном перемещении названий, что-то типа этого
Код:
procedure TFPlay.sbFileUpMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
s1, s2, d1, d2 : string;
begin
if (tv.Selected = nil) or
(tv.Selected.AbsoluteIndex = 0) then
exit
else
with tv.Selected do
begin
if EditText then EndEdit(false);
s1:= GetPrevVisible.Text;
s2:= GetPrevVisible.GetLastChild.Text;
d1:= Text;
d2:= GetLastChild.Text;
Text:= s1;
GetLastChild.Text:= s2;
GetPrevVisible.Text:= d1;
GetPrevVisible.GetLastChild.Text:= d2;
GetPrevVisible.Selected:= true;
end;
end;
сразу оговорюсь, вложений всего два уровня, т.е. нода и одна дочка - поэтому названия проще двигать, но если узел большой, да ещё с бинарными вложениями, то такое не прокатит.