Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 78
1

Работа с элементом TreeView

30.04.2012, 21:05. Показов 5865. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста. Как сделать дерево, чтобы внем было больше двух подуровней папок. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2012, 21:05
Ответы с готовыми решениями:

Работа с элементом "Вкладки" в access 2007
Всем доброго дня! Подскажите по вкладкам, пожалуйста! Создаю элемент "Набор вкладок", в первой...

Макрос не работает с элементом управления Treeview на других ПК
Доброго времени суток. .. короче форма использует элемент управления treeview, макрос работает без...

Treeview описание методов работы с данным элементом
Есть ли у кого-нибудь описание на русском языке по работе с treeview? или работающего примера на...

работа с TreeView
доброго времени суток. подскажите как добавить дочерний элемент выбранного элемента? и так же его...

3
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 54
02.05.2012, 13:14 2
http://am.rusimport.ru/MsAccess/topic.aspx?ID=128

http://am.rusimport.ru/MsAccess/topic.aspx?ID=438

http://am.rusimport.ru/MsAccess/topic.aspx?ID=297

http://am.rusimport.ru/MsAccess/use.search.please
0
1 / 1 / 0
Регистрация: 13.01.2011
Сообщений: 21
16.05.2012, 00:31 3
Как-то году в 1996 ломал голову над проблемой построения дерева, хранения его в таблице и т.д. и т.п. Если кому поможет мое решение - буду рад.
Поскольку код писал очень давно, восстановить логику и откомментиовать код полностью затруднительно. Кратко изложу идею. Можете украсить и добавить универсальности.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Private Sub LoadtvTree()
 Dim db As Database
 Dim rst As Recordset
 Dim Index As Long
 Dim SQL As String
 Dim colNodes As New Collection
 Dim colLevel As New Collection
 Dim ThisNode As New MyNode
 
On Error GoTo Err_cmd
 
' Вытаскиваю из таблицы все папки, упорядоченные по ParentID
 Set db = CurrentDb
 SQL = "SELECT * FROM OutSections ORDER BY ParentID;"
 Set rst = db.OpenRecordset(SQL, dbOpenSnapshot)
 
 With Me!tvTree
    'удаляю все папки из контрола 
    .Nodes.Clear
 
    'добавляю корневую папку в контол
    ThisNode.ID = 0
    ThisNode.ParentID = 0
    ThisNode.Name = "Корневая папка"
    .Nodes.Add , , "Nod" & CStr(ThisNode.ID), ThisNode.Name, "Folder", "OpenFolder"
 
    'добавляю папку в коллекцию 'уровень'
    colLevel.Add ThisNode, CStr(ThisNode.ID)
    Set ThisNode = Nothing
    'все папки из таблицы - в colNodes
    Do While Not rst.EOF
        ThisNode.ID = rst!ID
        ThisNode.ParentID = rst!ParentID
        ThisNode.Name = rst!OutSection
        colNodes.Add ThisNode, CStr(ThisNode.ID)
        Set ThisNode = Nothing
        rst.MoveNext
    Loop
    rst.Close
    
 ' Дальнейший код могу описать только на уровне идеи 
 ' Дерево строиться по уровням, от корня.
 ' Пользуясь возможностью добавлять в коллекцию элеменыт 
 ' на указанное место, за один проход по colLevel добавляю в Me.tvTree
 ' и в  colLevel  все папки, подчиненные текущей, но добавляю их перед ней
 ' (в  colLevel), а из colNodes я их удаляю.
 ' В результате у меня в colLevel набирается следующий уровень.
 ' Когда colLevel  опустел - все папки в Me.tvTree.
 ' 
 ' Алгоритм делал еще в VB5, там было и перетаскивание -
 ' меняется только ParentID. Работает железно. 
 ' Если из других мест ParentID не менять, то потерянные ветки не появляются
 ' принципиально!
    
    Index = 1
    Set ThisNode = Nothing
    'Внешний цикл по colLevel
    Do While Index <= colLevel.Count
    'Внутренний цикл по colNodes
        For Each ThisNode In colNodes       
            If ThisNode.ParentID = colLevel.Item(Index).ID Then
        ' ВЫбрана папка (ThisNode), 
        ' подчиненная текущей папке в colLevel,
        ' добавляю ее в Me.tvTree, 
                Me.tvTree.Nodes.Add "Nod" & CStr(colLevel.Item(Index).ID), 
                tvwChild, "Nod" & ThisNode.ID,
                ThisNode.Name, "Folder", "OpenFolder"
        ' Добавляю ее в colLevel
                colLevel.Add ThisNode, CStr(ThisNode.ID), CStr(colLevel(Index).ID)
        'Инкремент переменной Index
                Index = Index + 1
        'Удаляю папку из colNodes
                colNodes.Remove (CStr(ThisNode.ID))
            End If
    ' Перехожу к следующей папке в colLevel
        Next ThisNode
    'Если в colLevel еще есть элементы
        If colLevel.Count <> 0 Then
        ' Удаляю папку, для которой добавил все подчиненные 
        ' папки из colNodes с удалением их из colNodes
            colLevel.Remove (Index)
            Index = 1
        Else
            Index = 0
        End If
    
    Loop ' Index <= colLevel.Count
    
 End With
 
Exit_cmd:
    Exit Sub
 
Err_cmd:
    MsgBox Err.Description
    Resume Exit_cmd
 
End Sub
0
1 / 1 / 0
Регистрация: 13.01.2011
Сообщений: 21
17.05.2012, 00:05 4
Вот здесь http://relib.com/forums/thread842335.aspx уже отвечал на вопрос. Подробно все расписано. Удачи!
0
17.05.2012, 00:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2012, 00:05
Помогаю со студенческими работами здесь

Работа с TreeView
Привет всем! Помогите пожалуйста. Необходимо чтобы элементы с TreeView(левая сторона) отображались...

Работа с TreeView
Подскажите как организовать поиск нужного item в TreeView.

Работа с TREEVIEW
Кто нибудь может дать код, как узнать &quot;путь&quot; до пункта, то есть имена всех родительских пунктов...

Работа с TreeView
Доброго времени суток! Делаю справку для программу, используя TreeView и текстовик. Собственно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru