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

Вниз

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

 
kirilllius   (2004-03-05 10:15) [0]

Мастера, подскажите, каким образом можно двигать узлы дерева TreeView вверх, вниз (менять местами) со всем cобержимым? Если можно на примере. Заранее спасибо.


 
Alx2 ©   (2004-03-05 10:18) [1]

Метод moveto?


 
Семен Сорокин ©   (2004-03-05 10:38) [2]

drag&drop?


 
kirilllius   (2004-03-05 10:43) [3]

>Alx2

>Метод moveto
А не подскажите, как он работает. В помощи все по английски, а я с ним не дружу.


 
kirilllius   (2004-03-05 10:51) [4]

Сделал следующее

procedure TfrmServis.Button3Click(Sender: TObject);
var n: TTreeNode;
begin
n := TreeView1.Selected;
if n <> nil then
 if n.GetPrev <> nil then
  n.MoveTo(n.GetPrev, naInsert);
end;

но работает не правильно

узел с уровня 0, перемещает вверх но в узел с уровнем 1, а мне нужно, чтобы он переместился вверх но по уровню 0


 
Alx2 ©   (2004-03-05 10:58) [5]

>kirilllius   (05.03.04 10:43) [3]
Вольный перевод:
****************************
Moves the node to another location in the tree view.
Перемещает вершину (узел) в другое место в Tree View

procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode);
Процедура  ПеренестиВ(ПунктНазначения: TВершинаДерева; Режим: TРежимNodeПрикрепленияВершины);

Description
Описание

The Destination parameter specifies a node that will be this node"s parent or sibling after the move. The Mode parameter specifies the new relationship between this node and the destination node.

Параметр ПунктНазначения указывает вершину, которая будет родительской, либо соседней после перемещения. Параметр Режим указывает тип новой связи между перемещаемой вершиной и вершиной, которая является ПунктомНазначения :)

*****************************

Параметр Mode может принимать следущие значения:
naAdd - делаем соседом (на одном уровне иерархии в дереве, последняя в списке)
naAddFirst - делаем соседом (на одном уровне иерархии в дереве, первая в списке)
naInsert - делаем непосредственно соседом (на одном уровне иерархии)
naAddChild -  делаем в подчиненном уровне (последняя в списке непосредственно подчиненных)
naAddChildFirst -  делаем в подчиненном уровне (первая в списке непосредственно подчиненных)


 
kirilllius   (2004-03-05 11:10) [6]

Сделал следующее

procedure TfrmServis.Button3Click(Sender: TObject);
var n: TTreeNode;
begin
n := TreeView1.Selected;
if n <> nil then
if n.GetPrev <> nil then
 n.MoveTo(n.GetPrev, naInsert);
end;

но работает не правильно

узел с уровня 0, перемещает вверх но в узел с уровнем 1, а мне нужно, чтобы он переместился вверх но по уровню 0


 
Alx2 ©   (2004-03-05 11:17) [7]

>kirilllius   (05.03.04 11:10) [6]
Значит GetPrev дает вершину, которая на уровне 1 сидит.
Для ползанию в пределах нужного уровня так попробуй:

Var
 n: TTreeNode;
Begin
 n := TreeView1.Selected;
 If n <> Nil Then
   If n.getPrevSibling <> Nil Then
     n.MoveTo(n.getPrevSibling, naInsert);
End;


 
kirilllius   (2004-03-05 11:26) [8]

>Alx2
Спасибо, получилось. А как быть с перемещением вниз?
Пробовал

Var
n: TTreeNode;
Begin
n := TreeView1.Selected;
If n <> Nil Then
  If n.getNextSibling <> Nil Then
    n.MoveTo(n.getNextSibling, naInsert);
end;

вообще ничего не происходит

поменял naInsert на naAdd. Текущий узел перемещается в конец, а мне нужно только на один шаг ниже, как быть?


 
Alx2 ©   (2004-03-05 11:33) [9]

>kirilllius   (05.03.04 11:26) [8]
Пофантазировать?

Var
 n, p: TTreeNode;
Begin
 n := TreeView1.Selected;
 If n <> Nil Then p := n.getNextSibling;
 If p <> Nil Then
   If p.getNextSibling <> Nil Then
     n.MoveTo(p.getNextSibling, naInsert)
   Else
     n.MoveTo(p, naAdd)
End;

Но что-то оно мне не нравится. :)))


 
Alx2 ©   (2004-03-05 11:35) [10]

Ой, глюкнул.
Так корректнее:

Var
 n, p: TTreeNode;
Begin
 n := TreeView1.Selected;
 If n <> Nil Then
   Begin
     p := n.getNextSibling;
     If p <> Nil Then
       If p.getNextSibling <> Nil Then
         n.MoveTo(p.getNextSibling, naInsert)
       Else
         n.MoveTo(p, naAdd)
   End
End;


 
kirilllius   (2004-03-05 11:41) [11]

>Alx2

Благодарствую, все заработал ;-)



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
11-1057166954
Stargazer
2003-07-02 21:29
2004.03.28
Как отлепить иконку в BitBtn?


7-1073572262
Davey
2004-01-08 17:31
2004.03.28
Коммандная строка процесса


14-1078234981
Lena19
2004-03-02 16:43
2004.03.28
LG7020 +ASUS a620 = GPRS ??????


3-1077726667
Степан
2004-02-25 19:31
2004.03.28
ADO удаление записей


14-1077781096
MPS
2004-02-26 10:38
2004.03.28
Сбойные блоки на харде - что делать???