В документации от Devexpress указано, что перемещение по сетке осуществляется стрелками, а разворачивание/сворачивание узлов ctrl+стрелку влево/вправо - в данном случае вообще не реагирует на стрелки (по первому нажатию что-то происходит), хоть с контролом, хоть без - что я не включил или включив/не выключив сломал навигацию?
Не нашел никаких примеров по синхронизации выделения - дерево/сцена (то, что это повесить на коллбек изменения выделения - понимаю, а как программно навыделять/снять выделение со строк?) и не ясно как по изменению ячейки делать что-либо с объектом соответствующим (соответствие само и то, какой столбец).
Неясно также, что с множественным выделением - если мышью с шифтом или контролом навыбирать, то при клике только один чексбокс отрабатывает, - самому пробегатся по выделению и выставлять?
Сборная солянка кода с разных мест надергана и немного адаптирована под мою задачу:
Не нашел никаких примеров по синхронизации выделения - дерево/сцена (то, что это повесить на коллбек изменения выделения - понимаю, а как программно навыделять/снять выделение со строк?) и не ясно как по изменению ячейки делать что-либо с объектом соответствующим (соответствие само и то, какой столбец).
Неясно также, что с множественным выделением - если мышью с шифтом или контролом навыбирать, то при клике только один чексбокс отрабатывает, - самому пробегатся по выделению и выставлять?
Сборная солянка кода с разных мест надергана и немного адаптирована под мою задачу:
Код:
try(destroyDialog testR)catch()
rollout testR "Test"
(
dotNetControl xtl "DevExpress.xtraTreeList.treeList" height:500
button btn_Refresh "Refresh"
fn addChildren xtl theNode theChildren =(
for c in theChildren do (
-- name, export, link, morph, texture, copy tex, start frame, end frame
newNode = xtl.appendNode #( c.name, false,false,false,false,false,0,100) theNode.id
addChildren xtl newNode c.children
)
)
fn initXtl xtl=(
xtl.OptionsSelection.MultiSelect = true
xtl.OptionsView.ShowRoot =true
xtl.OptionsView.ShowIndicator = true
xtl.OptionsView.AutoWidth = true
col=xtl.columns.add()
col.visible=true
col.caption="Objects"
col.OptionsColumn.AllowEdit=false
xtl.columns.item[0].fixed = xtl.columns.item[0].fixed.none
col=xtl.columns.add()
col.visible=true
col.caption="Export"
col.width=30
local riCheck=dotNetObject "DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit"
xtl.RepositoryItems.add riCheck
col.columnEdit=riCheck
col=xtl.columns.add()
col.visible=true
col.caption="Anim Link"
col.width=40
col.columnEdit=riCheck
col=xtl.columns.add()
col.visible=true
col.caption="Anim Morph"
col.width=55
col.columnEdit=riCheck
col=xtl.columns.add()
col.visible=true
col.caption="Texture"
col.width=30
col.columnEdit=riCheck
col=xtl.columns.add()
col.visible=true
col.caption="Copy texture"
col.width=55
col.columnEdit=riCheck
col=xtl.columns.add()
col.visible=true
col.caption="Start frame"
col.width=45
local xTraSpinner=dotNetObject "DevExpress.XtraEditors.Repository.RepositoryItemSpinEdit"
xTraSpinner.SpinStyle=xTraSpinner.SpinStyle.vertical
xTraSpinner.minValue=0.0
xTraSpinner.maxValue=1.0
xTraSpinner.Increment=.1
xTraSpinner.UseCtrlIncrement=true
xTraSpinner.isFloatValue=true
xTraSpinner.AllowNullInput=xTraSpinner.AllowNullInput.false
xTraSpinner.nulltext="--- "
xtl.RepositoryItems.add xTraSpinner
col.columnEdit=xTraSpinner
col.UnboundType=col.UnboundType.Decimal
col=xtl.columns.add()
col.visible=true
col.caption="End frame"
col.width=40
local xTraSpinner=dotNetObject "DevExpress.XtraEditors.Repository.RepositoryItemSpinEdit"
xTraSpinner.SpinStyle=xTraSpinner.SpinStyle.vertical
xTraSpinner.minValue=0
xTraSpinner.maxValue=100
xTraSpinner.Increment=1
xTraSpinner.UseCtrlIncrement=true
xTraSpinner.isFloatValue=false
xTraSpinner.AllowNullInput=xTraSpinner.AllowNullInput.false
xTraSpinner.nulltext="--- "
xtl.RepositoryItems.add xTraSpinner
col.columnEdit=xTraSpinner
col.UnboundType=col.UnboundType.Decimal
)
fn addTargetNamesToEtl xtl =(
xtl.ClearNodes()
theNodes=objects as array
n=#()
theRoot = xtl.appendNode #("root",false) -1
rootNodes =for o in objects where o.parent == undefined collect o
addChildren xtl theRoot rootNodes
)
/*
on xtl SelectionChanged senderArg arg do (
-- formatProps senderArg
for i = 1 to senderArg.selection.count do (
format "Index: % Value: % Display Text: %\n" columnIndex (senderArg.selection.item[i-1].getValue 1) (senderArg.selection.item[i-1].GetDisplayText 1)
)
)
on xtl CellValueChanged senderArg arg do (
print (senderArg.selection.item[0].GetDisplayText 1)
--senderArg.selection.item[0].setvalue 1 ((senderArg.selection.item[0].GetDisplayText 1) as float)
)
*/
on testR open do (
clearListener()
initXtl xtl
addTargetNamesToEtl xtl
xtl.ExpandAll()
)
on testR resized size do (
xtl.size=dotNetObject "System.Drawing.Size" (size.x-26) (size.y-35)
btn_Refresh.pos.y=size.y-25
)
on btn_Refresh pressed do (
addTargetNamesToEtl xtl
xtl.ExpandAll()
)
)
createDialog testR width:700 style:#(#style_resizing,#style_titlebar,#style_sysmenu)