Страница: 1 |
Здравствуйте! Вот мой вариант, можете попробовать 'Сохранение Open App.Path & "\TreeView.txt" For Output As #1 'Загрузка TreeView.Nodes.Clear Желаю удачи! Выглядит весьма неплохо. А что тебя не устраивает? Я допустим все подобные вещи в базе храню если есть возможность(в смысле база), но она то в текущем проэкте большая поэтому +/- роли не играет. А вот тебе ради одного дерева связыватся смысла конечно нет Страница: 1 |
Вопрос: TreeView в каком виде сохранять?
Добавлено: 01.04.03 19:35
Автор вопроса: mc-black | Web-сайт:
Использую TreeView, сохраняю полное описание дерева в текстовом файле, в тэгах типа html-комментариев. Какой формат предпочесть и может вообще по-другому сохранять состояние дерева? Требуется очень шустро работать с древовидной структурой. Может у кого есть какие наработки, поделитесь, плс.
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
PeterS
Вопросов: 24
Ответов: 109
Профиль | | #1
Добавлено: 01.04.03 21:46
Dim lngIndex As Long, arrData() As String
On Error Resume Next
ReDim arrData(1 To TreeView.Nodes.Count)
For lngIndex = 1 To TreeView.Nodes.Count
If TreeView.Nodes(lngIndex).Parent Is Nothing Then
arrData(lngIndex) = 0 & Chr(1) & TreeView.Nodes(lngIndex).Text
Else
arrData(lngIndex) = TreeView.Nodes(lngIndex).Parent.Index & Chr(1) & TreeView.Nodes(lngIndex).Text
End If
Next
Print #1, Join(arrData, Chr(0));
Close
On Error Resume Next
Open App.Path & "\TreeView.txt" For Binary Access Read As #1
strData = Space(LOF(1))
Get #1, , strData
Close
arrData = Split(strData, Chr(0))
For lngIndex = LBound(arrData) To UBound(arrData)
arrTemp = Split(arrData(lngIndex), Chr(1))
If arrTemp(0) = "0" Then
TreeView.Nodes.Add , , , arrTemp(1), 1, 2
Else
TreeView.Nodes.Add CLng(arrTemp(0)), tvwChild, , arrTemp(1), img, imgsel
End If
Next
Номер ответа: 2
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #2
Добавлено: 01.04.03 23:41
Номер ответа: 3
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #3
Добавлено: 02.04.03 08:25
Если сохранять дерево, то лучше XML формат и воспользоваться для этого DOMDocument из библиотеки MSXML (msxml.dll)
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 02.04.03 11:48
Спасибо всем! PeterS, код выглядит оччень элегантно! На досуге попробую. Только дорабатывать все равно придется: там я использую все три типа картинок и много чего до кучи. Это не трудно. Magnus, с базами я связываться не стану. Деревьев будет много, но хранить по одному дереву в одной базе не стоит (наверное). boevik, чует мое сердце, что xml - хороший выход, но я, сорри, с ним не работал и мало представляю что делать.
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 07.04.03 09:23
Привет снова, PeterS! Опробовал твой способ, немного дорабатывал под свой, все работает. Мне так понравилось! Как я сам не додумался до Join/Split? Если хочешь, могу прислать незаконченный исходник программки. Ессно, при условии не распространения. Хочу еще дорабатывать формат файла, н-р, чтобы он содержал заголовочную часть и т.п. Как будут изменения я тебе сообщу (если хочешь). С наилучшими!