Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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

например


Наверх

Титульная страница Поиск, карта сайта Написать письмо