Главная страница
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
1-34773
wera
2003-06-02 11:31
2003.06.12
выбор


8-34940
DeveloperX
2003-02-28 22:58
2003.06.12
Визуализация


14-35073
Kaktuss
2003-05-28 08:26
2003.06.12
InstallShield Express и BDE


9-34665
Ricks
2002-12-30 14:08
2003.06.12
Вопрос к знатокам Direct3D


1-34900
abc
2003-05-31 19:16
2003.06.12
в TPageControl не удаётся скрыть закладку!