![]() |
|
|
#1
|
|||
|
|||
![]() Добрый день.
Имеется форма с деревом. хотела бы запоминать какие узлы были открытыми при закрытии формы и при ее открытии востанавливать состояние открытости/запкрытости узло. Как сохранить все настройки в *.ini |
#2
|
||||
|
||||
![]() Наверное обходом всех узлов и записью их состояния. А вот записывать можно по разному - тут полет фантазии.
Например имеем такое дерево: +-1 | |-1.1 | +-1.2 | +-1.2.1 +-2 | +-2.1 | +-2.1.1 +-3 Можно попробовать записать состояние по столбцам считая 1-столбцом 1 уровень, 2-столбцом второй и т.д. и состояние узла 0-свернут и 1-развернут (честно говоря так не пробовал, но вроде должно работать) Получим: 1-110 2-011 3-11 Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() А не проще просто пройти по узлам и сохранить открытые.
Код:
var Ini : TIniFile; ... For I := 0 To tvTree.Items.Count-1 Do If tvTree.Items[i].Expanded Then Ini.WriteBool('Section',tvTree.Items[i].Text,True); ... PS. Код писал по памяти - с деревьями давно не работал. Может там не Text, а Caption и не Items, а Nodes. но это не меняет принципа. PPS. А вот восстанавливать состояние дерева интереснее. Надо прочитать список имен узлов в список строк, потом идти по этому списку, получать сохраненное значение, находить узел с нужным именем и раскрывать его. |