Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2015-06-01 09:58:14 ЛС | профиль | цитата
Добрый день!
У компонента TreeViewTrain есть свойство DragDrop (описание: Поддержка режима перетаскивания узлов)
Включаю DragDrop=true и перетаскивать узлы мышкой не могу, может как то они по другому должны перетаскиваться?
Если кто знает, расскажите как это делается?
В качестве примера можно взять вот это
%HiAsm%ElementsDelphiExampleFormsTreeViewTrainDataSource.sha
только включить DragDrop=true


карма: 1

0
Ответов: 2267
Рейтинг: 676
#2: 2015-06-01 13:28:46 ЛС | профиль | цитата
-= DriveR =-, не достаточно включить свойство DragDrop, нужно еще подать данные на точку DropAccept.
DropAccept - выдает узел на который бросаете и ждет разрешения (1), если запрет (0) или пусто, то сброс запрещен.
Add(MainForm,2953706,84,175)
{
Width=617
Height=435
Position=1
link(onCreate,1708341:doEnum,[])
}
Add(TreeViewTrain,3149664,308,252)
{
Left=60
Top=45
Width=255
Height=230
Name="myTrain"
DragDrop=0
CaptionIndex=1
ParentIDIndex=2
IconIndex=3
Point(doExpand)
Point(DropAccept)
link(DropAccept,10586540:GetData,[])
}
Add(StrList,3321548,126,126)
{
Strings=#13:10;Весна;-1;0|12:20;Лето;-1;0|13:30;Осень;-1;0|12:40;Зима;-1;0|11:1;кино;10;0|11:2;вино;10;0|13:3;домино;20;0|13:4;казино;20;0|0:|
}
Add(TVT_AddNode,1790397,231,182)
{
TreeView="myTrain"
}
Add(ArrayEnum,1708341,140,189)
{
link(onItem,11917601:doMT,[])
link(onEndEnum,3149664:doExpand,[(180,202)(180,265)])
link(Array,3321548:Array,[])
}
Add(MT_String,11917601,189,182)
{
link(onResult,1790397:doAddNode,[])
}
Add(Edit,16729505,462,140)
{
Left=340
Top=50
Width=250
}
Add(Label,5016728,308,133)
{
Left=340
Top=30
Caption="Узел для сброса:"
}
Add(EventFromData,10586540,308,175)
{
link(onEvent,148256:doEvent1,[])
}
Add(MT_String,1216101,420,140)
{
link(onResult,16729505:doText,[])
}
Add(Hub,148256,364,175)
{
link(onEvent1,1216101:doStr,[(402,181)(402,146)])
link(onEvent2,13889441:doSeparateMT,[(391,188)(391,258)])
}
Add(MT_MultiData,13889441,420,252)
{
From=2
Count=1
link(onData1,1056660:doCase,[])
}
Add(ChanelToIndex,8846363,504,252)
{
link(onIndex,10586540:doData,[(565,258)(565,93)(290,93)(290,181)])
}
Add(Case,1056660,462,252)
{
Value=Integer(-1)
link(onNextCase,8846363:doWork1,[])
link(onTrue,8846363:doWork2,[])
AddHint(3,-18,24,13,Value)
}
Add(InfoTip,12705280,399,196)
{
Info=#44:Разрешает бросать только в родительские (-1)|
Width=155
Height=116
Margin=5
}
карма: 11

1
Голосовали:-= DriveR =-
Ответов: 817
Рейтинг: 52
#3: 2015-06-01 15:04:10 ЛС | профиль | цитата
sla8a,
Спасибо за пример.
Чтобы не плодить мелких тем, задам еще один вопрос здесь.
Можно ли как то перемещать (менять местами) вверх/вниз ветки в дереве?
Например поменять местами "домино" и "казино" в вашем примере.
карма: 1

0
Ответов: 2267
Рейтинг: 676
#4: 2015-06-01 15:18:38 ЛС | профиль | цитата
-= DriveR =- писал(а):
Можно ли как то перемещать (менять местами) вверх/вниз ветки в дереве?
Такая возможность в элементах TVT не реализована.
карма: 11

0
Ответов: 2059
Рейтинг: 132
#5: 2015-06-01 15:56:22 ЛС | профиль | цитата
-= DriveR =-,
Можно ли как то перемещать (менять местами) вверх/вниз ветки в дереве?

Можно перемещать из одной в другую ветку.
Менять местами нельзя в компоненте.
В KOL есть функция SwapNodes( i, j ) - обменивает узлы с индексами i и j местами.
Но в TreeViewTrain она не прописана, так что будет сложно сделать по образу и подобию компонентов TVT_DeleteNode и TVT_AddNode.
Или можно задействовать компонент TVT_ChangeNode с промежуточным запоминанием имён и данных.
i -> A, j -> B, B -> i,A -> j.
карма: 6

0
Ответов: 817
Рейтинг: 52
#6: 2015-06-01 16:09:33 ЛС | профиль | цитата
flint2 писал(а):
Или можно задействовать компонент TVT_ChangeNode с промежуточным запоминанием имён и данных

Можно-то оно можно, но если в дереве 2-5 элементов, это еще терпимо, а если их там будет 50, да еще вложений куча.
Думаю схема разрастется не хило
карма: 1

0
Ответов: 2059
Рейтинг: 132
#7: 2015-06-01 16:49:36 ЛС | профиль | цитата
-= DriveR =-
Думаю схема разрастется не хило

Не понимаю, как это может быть связано с количеством элементов дерева?
Не вдаваясь в подробности, примерно так:
code_35786.txt
карма: 6

0
файлы: 1code_35786.txt [1.3KB] [420]
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)