Render.ru

xtraTreeList, клавиши и события

ASK'R

Активный участник
Рейтинг
5
#1
В документации от 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)
 

ASK'R

Активный участник
Рейтинг
5
#2
Вопрос решил перенеся дерево-лист на MaxCustomControls.MaxForm, всё заработало как задумано, правда писанины стало куда как больше. Кому надо подробности - вопросы в личку.
Тему можно закрывать.
 
Сверху