Вверх ↑
Этот топик читают: Гость
Ответов: 165
Рейтинг: 6
#1: 2017-02-09 13:19:36 ЛС | профиль | цитата
Необходим TreeView с CheckBox'ами, как в TreeViewEx и Dran'n'Drop'ом, как в TreeViewTrain.
Есть идеи, как реализовать?

Мой не очень изящный вариант (ещё надо как-то контролировать количество и соответствие чек боксов):
Add(MainForm,497509,532,322)
{
Width=199
Height=283
Color=16777215
Caption="Example"
Position=1
link(onCreate,12854978:doEnum,[])
}
Add(TreeViewTrain,3816523,840,336)
{
Left=5
Width=65
Height=241
WinStyle=1
Name="nn"
DragDrop=0
CaptionIndex=1
ParentIDIndex=2
IconIndex=3
Point(DropAccept)
Point(doExpand)
link(DropAccept,2693753:Value,[])
}
Add(TVT_AddNode,8029303,749,329)
{
TreeView="nn"
}
Add(ArrayEnum,12854978,602,336)
{
link(onItem,10640493:doMT,[])
link(onEndEnum,1952027:doEvent1,[])
link(Array,158662:Array,[])
}
Add(MT_String,10640493,693,329)
{
link(onResult,8029303:doAddNode,[])
}
Add(StrList,158662,588,266)
{
Strings=#11:0;X 1;-1;-1|10:1;Y 1;0;-1|10:2;Y 2;0;-1|10:3;Y 3;0;-1|10:4;Y 4;0;-1|10:5;Y 5;0;-1|10:6;Y 6;0;-1|11:7;X 2;-1;-1|10:8;Y 1;7;-1|10:9;Y 2;7;-1|11:10;Y 3;7;-1|11:11;Y 4;7;-1|11:12;Y 5;7;-1|11:13;Y 6;7;-1|
}
Add(Memory,2693753,840,273)
{
Default=Integer(1)
}
Add(ChildPanelEx,8029692,840,434)
{
Mode=1
link(index,8029692:##index,[(846,423)(880,423)(880,478)(846,478)])
}
BEGIN_SDK
Add(EditMultiEx,15386605,21,21)
{
WorkCount=#5:##add|
VarCount=#7:##index|
DataCount=#5:index|
VOffset=70
HOffset=70
Point(##add)
Point(##index)
link(##add,13635941:doOperation,[])
}
Add(Panel,14073540,140,84)
{
Left=70
Width=15
Height=15
Color=-16777211
Ctl3D=0
WinStyle=1
Layout="parent.CB"
BorderWidth=0
BevelInner=0
BevelWidth=0
Point(doTop)
}
Add(CheckBox,164445,224,84)
{
Width=15
Height=15
Color=-16777211
Ctl3D=0
WinStyle=1
Caption=""
}
Add(Math,13635941,84,91)
{
OpType=2
Op1=16
ResultType=0
link(onResult,14073540:doTop,[])
link(Op2,15386605:index,[])
}
END_SDK
Add(For,5786447,777,434)
{
IncludeEnd=1
link(onEvent,8029692:##add,[])
link(End,158662:Count,[(790,372)(601,372)])
}
Add(Hub,1952027,651,343)
{
link(onEvent1,3816523:doExpand,[])
link(onEvent2,5786447:doFor,[(685,356)(685,440)])
}


Редактировалось 2 раз(а), последний 2017-02-09 13:23:37
карма: 4

0
vip
#1.1контекстная реклама от партнеров
Ответов: 497
Рейтинг: 16
#2: 2017-02-09 18:48:16 ЛС | профиль | цитата
думаю будет легче сделать Dran'n'Drop на TreeViewEx по примеру ListBox. doReplace можно заменить на doInsert + doDelete.
карма: 1
        ]  
0
Ответов: 165
Рейтинг: 6
#3: 2017-02-09 19:38:50 ЛС | профиль | цитата
RAWY_EX, неплохая идея, попробую реализовать!
карма: 4

0
Ответов: 165
Рейтинг: 6
#4: 2017-02-09 20:39:17 ЛС | профиль | цитата
Вот, что получилось, но есть баг и минус
Баг: по данному алгоритму клик по CheckBox'у тоже срабатывает и удаляет всё подряд
Минус: переносить можно, но без вложенных пунктов

Есть идеи, как поправить и баг, и минус?

Add(LineBreakEx,9777673,1099,350)
{
Caption="item_sel"
}
Add(MainForm,497509,392,343)
{
Width=228
Height=278
Color=16777215
Caption="Example"
Position=1
link(onCreate,7225485:doFor,[])
}
Add(TreeViewEx,8406005,721,322)
{
Width=255
Height=280
WinStyle=1
Strings=#3:X 1|1:(|3:Y 1|3:Y 2|3:Y 3|3:Y 4|3:Y 5|3:Y 6|1:)|3:X 2|1:(|3:Y 1|3:Y 2|3:Y 3|3:Y 4|3:Y 5|3:Y 6|1:)|
TrackSelect=0
CheckBoxes=0
IconsState=[]
Icons=[]
Point(onMouseDown)
Point(onMouseUp)
Point(Index)
Point(ItemAtPos)
Point(doExpand)
Point(doSelect)
link(onMouseDown,2942920:doWork,[])
link(onMouseUp,1299426:doWork,[])
}
Add(For,7225485,462,357)
{
IncludeEnd=1
link(onEvent,8406005:doExpand,[])
link(End,8406005:Count,[(475,345)(506,345)(506,388)(727,388)])
}
Add(LineBreakEx,6479060,742,441)
{
Caption="item_xy"
Type=3
link(_Data,8406005:ItemAtPos,[])
}
Add(LineBreakEx,7806054,735,420)
{
Caption="item_sctd"
Type=3
link(_Data,8406005:Index,[])
}
Add(LineBreakEx,6806421,728,399)
{
Caption="item_arr"
Type=3
link(_Data,8406005:Array,[])
}
Add(LineBreakEx,5336192,637,336)
{
Caption="item_del"
Type=1
link(OnEvent,8406005:doDelete,[])
}
Add(LineBreakEx,6581554,637,322)
{
Caption="item_add"
Type=1
link(OnEvent,8406005:doAdd,[])
}
Add(LineBreakEx,15170680,1099,343)
{
Caption="item_add"
}
Add(LineBreakEx,7740805,1099,336)
{
Caption="item_del"
}
Add(LineBreakEx,6127875,637,364)
{
Caption="item_sel"
Type=1
link(OnEvent,8406005:doSelect,[])
}
Add(MultiElementEx,10212347,1043,336)
{
@Hint=#26:Replace line under XY.line|
Name="REP"
link(onItemDel,7740805:doWork,[])
link(onItemAdd,15170680:doWork,[])
link(onItemSel,9777673:doWork,[])
link(ItemSctd,15115863:getVar,[])
link(ItemArr,3929236:getVar,[])
link(ItemXY,12360943:getVar,[])
}
BEGIN_SDK
Add(EditMultiEx,9108391,21,21)
{
WorkCount=#11:doMouseDown|9:doMouseUp|
EventCount=#9:onItemDel|9:onItemAdd|9:onItemSel|
DataCount=#8:ItemSctd|7:ItemArr|6:ItemXY|
Width=776
Height=368
VOffset=70
HOffset=210
link(doMouseDown,16429364:doValue,[])
link(doMouseUp,9254422:doCompare,[(63,104)(63,146)])
}
Add(Memory,16429364,161,91)
{
}
Add(If_else,3289069,161,140)
{
Op2=Integer(0)
@IsLib=True
link(onTrue,11422125:doCompare,[])
link(Op1,16429364:Value,[])
}
Add(If_else,11422125,217,140)
{
Type=5
link(onTrue,13507683:doRead,[])
link(Op1,11449850:getVar,[])
link(Op2,13531940:getVar,[])
}
Add(LineBreakEx,13531940,224,91)
{
Caption="item_xy"
Type=2
}
Add(LineBreakEx,11449850,217,112)
{
Caption="item_sctd"
Type=2
}
Add(LineBreakEx,3947963,301,112)
{
Caption="item_arr"
Type=2
}
Add(ArrayRW,13507683,301,140)
{
link(onRead,16543752:doCompare,[])
link(Array,3947963:getVar,[])
link(Index,10493216:getVar,[])
}
Add(LineBreakEx,10493216,308,91)
{
Caption="item_sctd"
Type=2
}
Add(If_else,9254422,105,140)
{
elink(3289069)
link(onTrue,3289069:doCompare,[])
}
Add(DoData,6630712,595,175)
{
link(onEventData,9108391:onItemAdd,[(712,181)(712,104)])
link(Data,3090372:getVar,[])
}
Add(LineBreakEx,6337669,98,98)
{
Caption="clean"
Type=1
link(OnEvent,16429364:doClear,[])
}
Add(LineBreakEx,14510905,560,336)
{
Caption="clean"
}
Add(LineBreakEx,3090372,595,147)
{
Caption="item_value"
Type=2
}
Add(LineBreakEx,8437136,301,189)
{
Caption="item_value"
Type=3
link(_Data,13507683:Item,[])
}
Add(Hub,8093167,560,175)
{
InCount=2
OutCount=1
link(onEvent1,6630712:doData,[])
}
Add(LineBreakEx,7270588,511,56)
{
Caption="item_sctd"
Type=2
}
Add(Hub,5403521,560,91)
{
InCount=2
OutCount=1
link(onEvent1,9108391:onItemDel,[])
}
Add(DoData,289072,595,245)
{
link(onEventData,9108391:onItemSel,[(712,251)(712,111)])
link(Data,15305917:getVar,[])
}
Add(LineBreakEx,15305917,595,217)
{
Caption="item_xy"
Type=2
}
Add(Hub,9077300,560,245)
{
InCount=2
OutCount=1
link(onEvent1,289072:doData,[])
}
Add(If_else,16543752,378,140)
{
Type=2
link(onTrue,10736067:doEvent1,[(446,146)(446,97)])
link(onFalse,15317324:doEvent1,[(446,153)(446,251)])
link(Op1,6987349:getVar,[])
link(Op2,14272877:getVar,[])
}
Add(Hub,10736067,469,91)
{
OutCount=4
link(onEvent1,1113143:doData,[])
link(onEvent2,9077300:doEvent1,[(521,104)(521,251)])
link(onEvent3,8093167:doEvent1,[(521,111)(521,181)])
link(onEvent4,9282981:doWork1,[(521,118)])
}
Add(Hub,15317324,469,245)
{
OutCount=5
link(onEvent1,16018485:doValue,[(493,251)(493,223)])
link(onEvent2,9077300:doEvent2,[])
link(onEvent3,8093167:doEvent2,[(521,265)(521,188)])
link(onEvent4,12872882:doData,[])
link(onEvent5,9282981:doWork2,[])
}
Add(LineBreakEx,14272877,385,91)
{
Caption="item_xy"
Type=2
}
Add(LineBreakEx,6987349,378,112)
{
Caption="item_sctd"
Type=2
}
Add(Memory,16018485,504,217)
{
Point(Data)
link(Data,5640563:Var1,[(510,82)])
}
Add(DoData,1113143,511,91)
{
link(onEventData,5403521:doEvent1,[])
link(Data,5640563:Var2,[])
}
Add(GetDataEx,5640563,511,77)
{
link(Data,7270588:getVar,[])
}
Add(HubEx,9282981,517,273)
{
Angle=1
link(onEvent,14510905:doWork,[(521,342)])
}
Add(DoData,12872882,504,266)
{
link(onEventData,5403521:doEvent2,[(555,272)(555,104)])
link(Data,16018485:Value,[])
}
Add(LineBreakEx,11340378,245,35)
{
Caption="item_xy"
Type=3
link(_Data,9108391:ItemXY,[])
}
Add(LineBreakEx,10834579,238,49)
{
Caption="item_arr"
Type=3
link(_Data,9108391:ItemArr,[])
}
Add(LineBreakEx,692083,231,63)
{
Caption="item_sctd"
Type=3
link(_Data,9108391:ItemSctd,[])
}
END_SDK
Add(LineBreakEx,2942920,777,336)
{
Caption="mouse_d"
}
Add(LineBreakEx,1299426,777,343)
{
Caption="mouse_u"
}
Add(LineBreakEx,13629241,959,343)
{
Caption="mouse_u"
Type=1
link(OnEvent,10212347:doMouseUp,[])
}
Add(LineBreakEx,12360943,1057,280)
{
Caption="item_xy"
Type=2
}
Add(LineBreakEx,3929236,1050,294)
{
Caption="item_arr"
Type=2
}
Add(LineBreakEx,15115863,1043,308)
{
Caption="item_sctd"
Type=2
}
Add(LineBreakEx,15441096,959,336)
{
Caption="mouse_d"
Type=1
link(OnEvent,10212347:doMouseDown,[])
}


Редактировалось 1 раз(а), последний 2017-02-09 20:40:35
карма: 4

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)