![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ShellTreeView и папка "Рабочий стол" [D7, XP]
igorium © (2012-05-11 09:11:00)Всем привет.
Есть дерево ShellTreeView, которое идет от Рабочего стола (root = rfDesktop).
Есть файл ini, из которого читается информация о том, какой каталог выбрать активным при загрузке программы (ShellTreeView.Path).
Соответственно при закрытии программы в ini-файл записывается путь к каталогу, который сейчас активен.
Все замечательно работает, но если выходить из программы и активный каталог будет "Рабочий стол" или "Мои документы" или их подкаталоги, то
в ini-файл записывается полный путь к Рабочему столу - С:\Documents and Settings\1234\Рабочий стол\. И соответственно открывается дерево не от root = Рабочий стол, а от С:\Documents and Settings\1234\Рабочий стол\
Как это решить я не придумал...
igorium (2012-05-12 13:22:00) [1]Медвежонок Пятачок
Согласен.
Так я ж так и писал:
> Буду использовать эту функцию и если оказывается Рабочим
> столом, то просто не буду задавать значение Path.
В любом случае меняется ТОЛЬКО Path. Root всегда остается прежнем и не меняется в программе.
В любом случае, спасибо за долготерпение и желание помочь.
Медвежонок Пятачок (2012-05-11 15:11:00) [2]пипец два раза.
просто потому чтобы перед элс было что-то.
сохраненный путь равен текущему пути до стола?
да! - нихрена не делаем.
нет? - делаем то что делал раньше
igorium (2012-05-11 15:01:00) [3]А зачем тогда
зен рут = rfDesktop
Медвежонок Пятачок (2012-05-11 14:27:00) [4]Рут НЕ меняется.
а у меня он меняется?
igorium (2012-05-11 14:19:00) [5]Медвежонок Пятачок
Зачем мне задавать рут, если он и так = rfDesktop.
Рут НЕ меняется.
У меня дерево всегдарисуется от рабочего стола.
Но активная папка может быть любой.
Сейчас у меня так, что если я сохраняю Путь в ини-файл, то при открытии ини-файла и обратном изменении Путь = значение из ини-файла в случае, если указан рабочий стол, то у меня активная папка становиться НЕ "Рабочий стол" (root) (по сути виртуальная папка), а вполне себе физическая папка, расположенная по адресу С:\Documents and Settings\1234\Рабочий стол\.
С учетом того, что root у меня по прежнему равен Рабочему столу, то выглядит это странно - Рабочий стол в Рут и еще один рабочий стол, который активен.
Медвежонок Пятачок (2012-05-11 14:13:00) [6]ну пипец.
и если оказывается Рабочим столом, то просто не буду задавать значение Path.
если в ини записана строка равная полученному при старте пути к столу, зен рут = rfDesktop
igorium (2012-05-11 14:04:00) [7]Мне кажется я чего-то недогоняю.
В дереве есть 2 переменные - root и path.
Root - это каталог, с которого показывается дерево
Path - Это каталог, который активен.
У меня Root = rfDesktop всегда.
Меняется только Path.
Dimka Maslov
Это очень близко к тому, что я хочу.
Спасибо.
Буду использовать эту функцию и если оказывается Рабочим столом, то просто не буду задавать значение Path.
Dimka Maslov (2012-05-11 13:38:00) [8]Что мешает получить путь к рабочему столу (SHGetSpecialFolderPath) и сравнить со строкой из ини-файла, после чего присвоить правильное значение root?
brother (2012-05-11 11:03:00) [9]> Это не совсем корректно.
ты о чем?
если Pos(ini, \Рабочий стол\) then рут = rfDesktop
igorium (2012-05-11 10:39:00) [10]Это не совсем корректно.
Т.к. при старте может быть начало с диска C, а перед закрытием выбрать Рабочий стол.
Кроме этого, root у меня всегда равен rfDesktop.
Меняется только path.
Медвежонок Пятачок (2012-05-11 09:37:00) [11]если в ини записана строка равная полученному при старте пути к столу, зен рут = rfDesktop
например