Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Как запомнить выбранный узел |
Автор: Pavelbej 5.12.2007, 20:05 |
Здравствуйте! В VirtualStringTree загружаю папки из выбранной директории. Получается древовидная структура. Так вот, как запомнить выбранный узел, и при следующем старте программы автоматически его выделить. Не могу понять, как это сделать? Куда копать? |
Автор: VICTAR 5.12.2007, 22:19 |
Скорей всего запомнить файл, который выделен. Потом при загрузке найти узел, "отвечающий" за этот файл и выделить. |
Автор: VICTAR 6.12.2007, 00:14 | ||
обычной рекурсией |
Автор: Alexeis 6.12.2007, 00:36 |
Деревья красиво сохраняются в виде XML. |
Автор: Pavelbej 6.12.2007, 01:41 |
Что-то я совсем запутался. Значит так, беру имя корневой папки - это RootNode, так? Дальше я должен искать дочерний узел с именем который идет после корневой папки (из сохраненного пути). Как только нашел, но путь не совпадает (т.е. длиннее сохраненный), лезем в него и ищем дальше в дочерних. Вроде так? Если все верно то с логикой все в порядке, а вот с чего начать писать код, ну никак не соображу, или может уже поздно. А зачем лишние маневры, проверки, если есть папки. |
Автор: AriX 6.12.2007, 17:13 | ||
Pavelbej
Сохранять выделенный нод можно, например, с помощью функции Path у VirtualStringView. Загружаешь сохраненный путь. Идёшь по нему циклом, поиск по разделителю (/ или \). Найдя имя очередной папки, ищещь ее в children'ах текущего parent-нода. Если найдешь - меняешь parent-нод на найденный; если нет - можно оставить выделенным последний найденный или сделать что-то другое. И так, пока в пути не будет найден разделитель -- т.е. дошли до имени файла. Опять же, ищешь его в текущем parent-ноде. |
Автор: Pavelbej 7.12.2007, 11:13 | ||||
Вот что удалось сделать: Функция поиска
При создании формы
Оказалось что код работает только для дочерних узлов Корнегого узла. То есть дочерние узлы этих дочерних узлов, не находит. Понимаю что ошибка в функции поиска, но где? |