Добвресу и вам, пытался такое проделать путём вырезки-врезки узлов, но нарушается порядок следования нод, нашёл вариант, но он оказался не рабочим, выскакивало с ошибками, поэтому остановился на банальном перемещении названий, что-то типа этого
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 ;
|
сразу оговорюсь, вложений всего два уровня, т.е. нода и одна дочка - поэтому названия проще двигать, но если узел большой, да ещё с бинарными вложениями, то такое не прокатит.