TreeView перемещение узлов

Создание, использование компонентов ActiveX
JDV
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 12.06.2004 (Сб) 18:17

TreeView перемещение узлов

Сообщение JDV » 04.07.2004 (Вс) 10:50

Подскажите пожалуйста как при использовании TreeWiew создать перемещиние узлов влево, в право и с применением и без применения drag +drop

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

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

Сообщение Ennor » 26.07.2004 (Пн) 13:34

Гы. Мы тут с natcap как раз этой фигней занимались :) . С DnD все получилось как нельзя лучше, кроме одного - ты не можешь сделать произвольный узел корневым. Он валит ошибку. Видимо, именно поэтому у Microsoft во всем MMC всегда существует пункт Console Root :) .
На, посмотри, может, пригодится...
У вас нет доступа для просмотра вложений в этом сообщении.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 28.07.2004 (Ср) 13:19

:)))
Это точно :) именно этой фигней и занимались :)))
а без помощи драги анд дропа...
ну ловишь нажатие клавишь, а дальше...
(у меня правда для этого кнопочки на форме.. наверное стоит клавой сдублировать... )

Проверки стоят на выделенный нод и на наличие предков ( мне надо было, чтобы начальные нодыникуда не перетакивались

Код: Выделить всё
If Not (TV.SelectedItem Is Nothing) Then
If Not (TV.SelectedItem.Parent Is Nothing) Then
Set NNodest = TV.SelectedItem
Select Case Index
Case 0 'right
  If Not (NNodest.Previous Is Nothing) Then
  Set NNodest.Parent = NNodest.Previous
  TV.DropHighlight = NNodest
  TV.SelectedItem = NNodest
  End If
Case 1 'left
  If Not (NNodest.Parent.Parent Is Nothing) Then
  Set NNodest.Parent = NNodest.Parent.Parent
  TV.DropHighlight = NNodest
  TV.SelectedItem = NNodest
  End If
Case 2 'up
  If Not (NNodest.Previous Is Nothing) Then
    Set NNodeend = TV.Nodes.Add(NNodest.Previous.Index, tvwPrevious, , NNodest.text, 1, 1)
    NNodeend.Tag = NNodest.Tag
    Do While Not (NNodest.Child Is Nothing)
    Set NNodest.Child.LastSibling.Parent = NNodeend
    Loop
  TV.Nodes.Remove NNodest.Index
 
  TV.DropHighlight = NNodeend
  TV.SelectedItem = NNodeend
  End If

Case 3
  If Not (NNodest.Next Is Nothing) Then
    Set NNodeend = TV.Nodes.Add(NNodest.Next.Index, tvwNext, , NNodest.text, 1, 1)
    NNodeend.Tag = NNodest.Tag
    Do While Not (NNodest.Child Is Nothing)
    Set NNodest.Child.LastSibling.Parent = NNodeend
    Loop
  TV.Nodes.Remove NNodest.Index
 
  TV.DropHighlight = NNodeend
  TV.SelectedItem = NNodeend
  End If

End Select
End If
End If
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)


Вернуться в Компоненты

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

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

    TopList