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

Проблема с callback при выделении ноды в treeview

Тема в разделе "MAXScript", создана пользователем astron, 16 янв 2015.

Модераторы: Savin Denis
  1. astron

    astron Пользователь сайта

    С нами с:
    15.12.2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    пытаюсь выделить ноду при выделении объекта в вьюпорте. При первом запуске скрипта колбек не срабатывает и выделение ноды в списке не происходит. Но при последующих запусках скрипта все работает. не понимаю в чем проблема.
    Код:
    dotnet.loadAssembly ("C:\\CodersLabWindowsControlsTreeView.dll")
    ObjListArr=#()
    fn tvChildOfRootNodes nd selObj =
    (  
        for i=0 to nd.nodes.count-1 do
        (   print "slect"
            if selObj==nd.nodes.item[i].tag.value do (TreeViewRoll.TreeView.selectedNodes.Add TreeViewRoll.TreeView.nodes.item[i] )
         
        )
    )
    
    fn CHandler =(
      try(
    
            obj=selection as array
            print obj
            for h=obj.count to 1 by -1 do  ( if finditem ObjListArr obj[h]==0 do deleteItem obj h     )
           
              if obj.count > 0 then
            (
              if  TreeViewRoll.TreeView.selectedNodes!=undefined do
                for h=TreeViewRoll.TreeView.selectedNodes.count-1 to 0  by -1 do  TreeViewRoll.TreeView.selectedNodes.remove TreeViewRoll.TreeView.selectedNodes.item[h]
                print "test"
                for i=1 to obj.count do 
                (tvChildOfRootNodes TreeViewRoll.TreeView obj[i] )
            )
            else
            if  TreeViewRoll.TreeView.selectedNodes!=undefined do
                for h=TreeViewRoll.TreeView.selectedNodes.count-1 to 0  by -1 do  TreeViewRoll.TreeView.selectedNodes.remove  TreeViewRoll.TreeView.selectedNodes.item[h]
            )
            catch(print"error!!!!!!!")
       )
    rollout TreeViewRoll "MultiSelect" width:300 height:200
    (
        
       dotNetControl treeView "CodersLab.Windows.Controls.treeView" height:192 width:292 pos:[4,4]
       
       on TreeViewRoll open do
       (  
           ms = (dotnetclass "CodersLab.Windows.Controls.TreeViewSelectionMode")
           treeView.SelectionMode = ms.MultiSelect
           for obj in objects do
           (   callbacks.addScript #selectionSetChanged "CHandler()" id:#test
               newNode = (dotNetObject "System.Windows.Forms.TreeNode" obj.name)
               treeView.nodes.add newNode
               newNode.tag = dotNetMXSValue obj
               append ObjListArr obj
           )
       )
         on TreeViewRoll close do
             (
                callbacks.removeScripts id:#test
             )
    
    )
    createDialog TreeViewRoll
    
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Иван Иванчин и astron нравится это.
Модераторы: Savin Denis

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