Как поменять местами две ветки TreeView?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 10.01.2005 (Пн) 13:53

tn1.index=tn2.index
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 10.01.2005 (Пн) 14:48

сорри,в вб6 вроде пахало

тады remove insert
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.01.2005 (Пн) 15:43

Есть тривиальное решение. запоминаешь параметры нода, удаляешь его и создаешь заново, указав ему в качестве placement соседнее с нужной нодой положение.

Если нода имеет детей, то рекурсивно сохраняешь из все, скажем, в коллекцию, а потом рекурсивно же создаешь обратно.
I don't understand. Sorry.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.01.2005 (Пн) 15:57

Можно сделать так: создать новую ноду в нужном месте, после чего перетащить в нее всех детей старой ноды, после чего старую грохнуть. Рекурсии здесь, по крайней мере, не требуется, т.к. захватывается только один уровень вложенности - ближайшие дети подопытного кролика. А перебрать их всех можно по свойствам Child и Next означенного кролика. Таким образом, непредсказуемая в общем случае глубина рекурсии у тебя заменяется одним Do ... Loop.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.01.2005 (Пн) 18:11

Можно примерно так:
Код: Выделить всё
Dim V as MsComCtlLib.Node
...
Do Until V.Children = 0
  Me.tvw_Tree.Nodes.Remove V.Child.Key
Loop

Правда, не знаю, как это будет насчет производительности - скорее всего не фонтан. Да, и еще этот метод требует какого-нить уникального идентификатора - ключа в данном случае, на индекс я бы не полагался...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList