Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите новичку с TreeView (заполнить из FullPath Добавлено: 02.10.08 15:02  

Автор вопроса:  Artur
Всем доброе время суток.

Такая проблема- нужно создать не большую базу данных, проект почти готов. Не могу ни как сообразить по написанию куска программы для того чтобы заполнить TreeView с помощью FullPath типа (город\район\дом\кв…). Написал модуль который каждую строчку разбивает в массив (по элементу).
Необходимо отсортировать массив и восстановить из него TreeView как структуру.

Годод\район1\улица1\дом1
Годод\район2\улица2\дом2

Город-
Район1 -
| | - Улица1-
| | - дом1…
        Район2-
| - Улица2-
| - дом2…

Понимаю это сложно, но хотелось бы универсальный модуль который заполнял дерево из наборов FullPath т.к считаю это удобно. Или я не прав, посоветуйте.

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Abriel



Вопросов: 18
Ответов: 37
 Профиль | | #1 Добавлено: 02.10.08 23:07
Возможно я не понял, но кажется нужно использовать рекурсию при сохранении веток "дерева" и последовательное считывание путей веток из файла и воссоздание их в TreeView. Надеюсь это подскажет:

  1. Private Sub AddPathToTree(Tree As TreeView, Path As String, SectionType As Integer)
  2.     Dim PathItem As String
  3.     Dim NewItem As String
  4.     Dim PathLen As Integer
  5.     Dim c As String * 1
  6.     Dim i As Integer
  7.     Dim N As Node
  8.     
  9.     'Добавляем обратный слэш в качестве разледителя
  10.     If Right$(Path, 1) <> "\" Then Path = Path & "\"
  11.  
  12.     PathLen = Len(Path)
  13.  
  14.     'Ищем в полном пути обратные слэши
  15.     For i = 1 To PathLen
  16.         c = Mid$(Path, i, 1)
  17.  
  18.         If c = "\" Then
  19.             If PathItem = "" Then
  20.                 'Добавляем корневую ветвь в дерево
  21.                 On Error Resume Next
  22.                 Set N = Main.Tree.Nodes.Add(, , "\" & NewItem, NewItem, 1, 2)
  23.                 N.Tag = "T"
  24.                 N.EnsureVisible
  25.                 PathItem = "\" & NewItem
  26.             Else
  27.                 'Добавляем следующую дочернюю ветвь
  28.                 If SectionType = 1 Then
  29.                     Set N = Main.Tree.Nodes.Add(PathItem, tvwChild, PathItem & "\" & NewItem, NewItem, 1, 2)
  30.                     N.Tag = "E"
  31.                     N.EnsureVisible
  32.                     PathItem = PathItem & "\" & NewItem
  33.                 ElseIf SectionType = 2 Then
  34.                     Set N = Main.Tree.Nodes.Add(PathItem, tvwChild, PathItem & "\" & NewItem, NewItem, 1, 2)
  35.                     N.Tag = "U"
  36.                     N.EnsureVisible
  37.                     PathItem = PathItem & "\" & NewItem
  38.                 End If
  39.             End If
  40.             NewItem = ""
  41.         Else
  42.             NewItem = NewItem & c
  43.         End If
  44.     Next i
  45. End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам