Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic

Войти
Регистрация
Восстановить пароль
 
SpellKeeper
0 / 0 / 0
Регистрация: 20.09.2007
Сообщений: 62
#1

TreeView.Как определить на каком узле при перетаскивании была отпущена кнопка мыши? - VB

06.11.2008, 15:54. Просмотров 743. Ответов 2
Метки нет (Все метки)

Я пытаюсь сделать в TreeView возможнность перетаскивания узлов с изменением их подчиненности.
Вот возникло несколько вопросов:
1. При выборе узла для перетаскивания (событие MouseDown), выбранный узел, вроде, подсвечивается курсором, но SelectedItem остается без изменения. Понятно, что это изменение происходит при событии NodeClick, которое происходит после MouseUp, но как тогда отлавливать узел, который я собирался перетащить?
2. Как определить на каком узле при перетаскивании была отпущена кнопка мыши?
Если у кого есть опыт, поделитесь. Заранее, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2008, 15:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос TreeView.Как определить на каком узле при перетаскивании была отпущена кнопка мыши? (VB):

Дан массив температур. Определите, в каком месяце была самая высокая температура, а в каком самая низкая - Visual Basic
Дан массив среднемесячных температур за год. Определите, в каком месяце была самая высокая температура, а в каком самая низкая, а также...

Как узнать в каком узле выбран node treeview - C#
Всем привет, как узнать каком узле выбран параметр в treeview ТО есть например, как узнать 1 1.1 1.2<- допустим выбираю этот, и...

Как определить, в какой именно форме была нажата кнопка? - C# ASP.NET
есть такой код: <% set cn = Server.CreateObject('ADODB.Connection') cn.CursorLocation = 3 'adUseClient cn.Open 'sup' ...

Как поменять текст в узле treeview во время выполнения программы? - C#
Не могу сделать. Помогите!

Как определить, что была нажата кнопка (крестик) закрытия формы - Visual Basic .NET
Как определить что была нажата кнопка закрытия формы непосредственно в событии FormClosing/FormClosed? Сейчас использую такой код, но...

Как определить нажата ли правая кнопка мыши? - Delphi
У меня есть палитра цветов из панелей и 2 отдельные панели что бы отображать цвет 1 и цвет 2. Вот мне нужно что бы при нажатии на одну из...

2
Korolana
0 / 0 / 0
Регистрация: 27.08.2008
Сообщений: 154
06.11.2008, 17:08 #2
''I use Treeview from ComctlLib,you can use Mscomctl as well

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Dim nodDragX as ComctlLib.Node ' dragging node (what Node to move) 
Dim oNode as ComctlLib.Node    ' hitting node  (where to move)
Dim inDdrag as Boolean       ' Flag of dragging operation
 
' Select Node for dragging
 
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
...Set nodDragX = TreeView1.HitTest(x, y) ' Set the item being dragged.
...If nodDragX Is Nothing Then Set nodDragX = TreeView1.SelectedItem
End Sub
 
' Begin Dragging
 
Private Sub TreeView1_MouseMove _
(Button As Integer, Shift As Integer, x As Single, y As Single)
If Not indrag Then ' Check if Drag operation already in process, if not -
...If Button = vbLeftButton Then ' Signal a Drag operation.
......indrag = True ' Set the flag to true.
......      ' Set the drag icon with the CreateDragImage method.
......TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
......TreeView1.Drag vbBeginDrag ' Drag operation.
...End If
End If
End Sub
 
' Dragging in process
 
Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, state As Integer)
if Source.Name = 'TreeView1' And indrag Then
...Set tvTreeView1.DropHighlight = tvTreeView1.HitTest(x, y) 'Highlight Nodes you moves over
End If
End Sub
 
' Drag operation is over
 
Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)
indrag = False
if Source.Name = 'TreeView1' 
...Set TreeView1.DropHighlight = tvTreeView1.HitTest(x, y)
...Set oNode = tvTreeView1.HitTest(x, y) ' your destination
...MoveNode oNode, nodDragX  
End if
     
Private sub MoveNode (oNode as ComctlLib.Node,nodDragX as ComctlLib.Node)
.....< Your code for moving Node nodDragX to oNode>   
End Sub
Enjoy! ))
0
SpellKeeper
0 / 0 / 0
Регистрация: 20.09.2007
Сообщений: 62
06.11.2008, 17:09  [ТС] #3
Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2008, 17:09
Привет! Вот еще темы с ответами:

Как определить, какая кнопка мыши нажата? - C++/CLI WinForms
Есть кнопка на форме и функция-обработчик нажатия. Так вот, как определить какой кнопкой мыши была нажата кнопка на форме?

Как определить зажата или отпущена клавиша? - Free Pascal
Всем привет, возникла проблема, для плавного передвижения персонажа в мини-игре не подходит readkey, есть ли какие-нибудь функции для...

Определить на каком языке была введена строка - C#
В DataGridView с клавиатуры в определенный столбец вводится строка. Как определить на каком языке была введена эта строка? Понимаю, что...

Размер шрифта в узле TreeView - Delphi
какой командой можно узнать размер шрифта узла в три вью?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.