Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

TreeView   Найти похожие ветки 

 
romeomd ©   (2003-05-31 13:41) [0]

Всем привет.Подскажите пожалуйста как можно реализовать чтобы элементы TreeView можно было перемещать по дереву, т.е. допустим я выделил элемент нажал кнопочку и он перешел на уровень выше, а тот элемент что был сверху спустился бы вниз. Буду рад любым советам. Спасибо за ранее.


 
jack128 ©   (2003-05-31 15:08) [1]

ну рекурсивно обходи детей того элемента, который ты хочешь перенести и создавай дочерние узлы в том элементе, куда ты хочешь перенести. А потом удаляй исходный узел
В чем проблема, то?


 
jack128 ©   (2003-05-31 15:10) [2]

вообще, если подумать - это решение "в лоб" , конечно, но у меня нет уверенности, что другое решение вообще существует...


 
uw ©   (2003-05-31 16:08) [3]

Строй дерево по новой, а перерисовку временно запрещай.


 
Forester ©   (2003-05-31 16:47) [4]

Пример перемещения элемента без построения структуры заново.

TTreeForm = class(TForm)
Tree:TTreeView;
btnMoveNodeUp:TButton;
procedure btnMoveNodeUpClick(Sender:TObject);
private
...
protected
...
public
procedure DecNodePosition(Node: TTreeNode);
published
...
end;

...

implementation

...

procedure TTreeFrm.DecNodePosition(Node: TTreeNode);
var
index:integer;
NodeParent:TTreeNode;
begin
index:=Node.Index;
if index=0 then exit; //двигать некуда
NodeParent:=Node.Parent;
Node.MoveTo(NodeParent[index-1], naInsert); //собственно
//перемещение
end;


procedure TTreeForm.btnMoveNodeUpClick(Sender: TObject);
begin
DecNodePosition(Tree.Selected);
end;

...

end.

Подобным образом можно двигать и вниз, а также на несколько позиций. Если перемещение связано с внесением изменений в какую либо структуру, которую отображает дерево - процедуру DecNodePosition необходимо дописать.


 
romeomd ©   (2003-05-31 16:55) [5]


Спасибо всем за советы, они все позволяют реализовать то что мне надо, но я нашел более простое решение, оказывется у узла есть метод MoveTo, вроде этот метод решает мою проблему, сейчас проверю, так ли это :)


 
romeomd ©   (2003-05-31 16:56) [6]

О, как раз мне Forester и код подкинул :) Спасибо :)



Страницы: 1 вся ветка

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-34745
Юлия
2003-05-23 19:11
2003.06.12
Уникальный индекс


3-34679
Snv-Soft
2003-05-22 07:27
2003.06.12
Как запросом получить интервалы ИД таблицы?


3-34704
Nikos
2003-05-22 21:27
2003.06.12
Как продолжить поиск при использовании Lookup


8-34931
keks11
2003-02-24 03:59
2003.06.12
Обработка видео


14-34969
N119
2003-05-28 13:18
2003.06.12
LOL! Кошки чудят.