1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "MAXScript", создана пользователем ASK'R, 5 сен 2012.

Модераторы: Savin Denis
  1. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    В документации от 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)
     
  2. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    Вопрос решил перенеся дерево-лист на MaxCustomControls.MaxForm, всё заработало как задумано, правда писанины стало куда как больше. Кому надо подробности - вопросы в личку.
    Тему можно закрывать.
     
Модераторы: Savin Denis

Поделиться этой страницей