ICSDNAxDbTree Наследование  Функции и процедуры


Интерфейс дерева для отображения данных на форме


Пример: Создадим форму, добавим на нее контрол "AxdbTree" и контрол "AxDbForm".

В редакторе кода напишем такой код:
    
'<doc
'<par As ITCSForm>
'<par As Long>
'Отображает номенклатуру по ID класса
'>
Sub ShowNmk(Form, ID)
'NMK as INomenclatures Номенклатура
    Set NmkForm = Form.c_AxDbForm_0  
    Set Nmk = Nothing
    
    Idx = Form.UserData.IndexOf( "NMK" )  
    If idx>=0 Then 
    Set Nmk = Form.UserData.TagValues( idx )
    Else 
      Idx = Form.UserData.Add( "NMK" )
    End If
    
    If Not Nmk Is Nothing Then 
      Nmk.Hide
      Call Form.UnRegisterModuleEvent( "NMK" )
      TCSApp.DeleteModuleByUserModuleName( Nmk.UserModuleName )
    End If
    
    Form.UserData.TagValues( idx ) = Nothing  
    Set NMk = Nothing
    
    If ID <> -1 Then Set NMK = TCSApp.Nomenclatures( ID )      'Получаем номенклатуру по ID класса
    If Not Nmk Is Nothing Then 
        Nmk.UserModuleName = Nmk.UniqueUserModuleName
        NmkForm.Visible = True
        Form.UserData.TagValues( idx ) = Nmk
        Call Nmk.Show( NmkForm )
        Call Form.RegisterModuleEvent( Nmk, "NMK" )
    Else
        NmkForm.Visible = False
  End If
End Sub
'<doc
'<par As ITCSForm>
'Обработчик события создания формы
'>
Sub FormEvent_OnFormCreate(Form)
'Form As ITCSForm Форма
'Tree As ICSDNAxDbTree Дерево 
'DBTree as IDBTree Интерфейс дерева
'NmkCls as INmkClasses Классы номенклатуры
    Set Tree = Form.c_AxDbTree_0         
    Set DBTree = Tree.DbTree                 'Получаем интерфейс дерева
    Set PNode = DBTree.Selected              'Получаем выбранную ноду дерева
 
    Set NmkCls = TCSApp.NmkClasses 
    Set RootNode = Tree.AddNode("Справочники", Nothing) 'Добавляем корневую ноду
    RootNode.ImageIndex = -1
    RootNode.NodeTag = -1
    NmkCls.First                     
    Do 
        Note = NmkCls.p_NOTE.AsSafeString        
        ID = NmkCls.p_ID.value                          'ID класса номенклатуры
        Set NewNode = Tree.AddNode(Note, RootNode)      'Создаем новую ноду
        NewNode.NodeTag = ID                            'Запоминаем ID класса в свойстве NodeTag
        NewNode.ImageIndex = -1
        NmkCls.Next
    Loop While Not NmkCls.Eof    
    Tree.FullExpand                                     'Разворачиваем ноды дерева
    
    Set Node = Tree.GetNode(1)                          
    Call ShowNmk(Form, RootNode.NodeTag)
    
End Sub
Sub FormEvent_OnFormDestroy(Form)
'Form As ITCSForm
    Call ShowNmk( Form, -1 )
End Sub
'<doc
'<par As ITCSForm>
'<par As string>
'Обработчик события смены ноды дерева
'>
Sub FormEvent_AxDbTree_0_OnOnChange( Form, ObjName )
'Form As ITCSForm, ObjName As String
'Tree As ICSDNAxDbTree Дерево
'DBTree as IDBTree Интерфейс дерева
'Node as IDBNodeEx Расширенный интерфейс ноды дерева
        
    Set Tree = Form.c_AxDbTree_0
    Set DBTree = Tree.DBTree
    Set Node = DBTree.Selected                         
    ClsID = Node.NodeTag             'Получим ID класса номенклатуры    
    Call ShowNmk (Form, ClsID)       'Вызываем отображение номенклатуры по ID класса
End Sub