Главная страница
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.025 c
7-1071570060
vixic
2003-12-16 13:21
2004.03.28
защита от копирования CD


8-1069221413
DAndrew
2003-11-19 08:56
2004.03.28
Как вращать строку с центром посредине строки?


3-1077862153
Layner
2004-02-27 09:09
2004.03.28
Как найти/удалить NULL записи в столбце типа DateTime (MS SQL)


4-1074001403
_echo
2004-01-13 16:43
2004.03.28
FindNextFileA


14-1074852823
NoOne
2004-01-23 13:13
2004.03.28
В чём здесь логика?