Render.ru

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

astron

Пользователь сайта
Рейтинг
2
#1
пытаюсь выделить ноду при выделении объекта в вьюпорте. При первом запуске скрипта колбек не срабатывает и выделение ноды в списке не происходит. Но при последующих запусках скрипта все работает. не понимаю в чем проблема.
Код:
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
 
Сверху