| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Компонент ShellListView |
| Автор: Zero 13.11.2004, 19:47 |
| Народ, у меня возник очень важный для меня вопрос: Как сделать так, чтобы компонент, ShellListView отображал только те элементы рабочего стола, которые я захочу. Заранее спасибо всем за любую, помощь!!! |
| Автор: Alex 13.11.2004, 19:59 |
| Написать свой. |
| Автор: Zero 13.11.2004, 21:39 | ||
Я бы непротив, но тогда как получить список отдельных ярлыков, и пирикинуть их на форму или на то, на чём они должны отображатся??? |
| Автор: Alex 13.11.2004, 21:50 |
| Возьми ListView и создай в нем столько элементов, сколько тебе нужно, а картинку возьми из ярлыка (пример извлечения иконки из ярлыка есть в DRKB) |
| Автор: Girder 13.11.2004, 23:15 | ||||
1...
2. Неуверен что правильно тебя понял... но тем неменее... Прицепи к OnAddFolder вот енту процедуру...
Удачи. |
| Автор: Zero 13.11.2004, 23:25 |
| Упс, я извеняюсь, я не заметил, что Гирдер, мне уже выслал код...Это сообщение не к месту... Спасибо Гирдер, буду пробывать... |
| Автор: Zero 13.11.2004, 23:53 | ||
| Girder, спасибо конечно за процедуры, но что-то я не совсем понял, что они делают, и идентификатор Desktop, я пологаю должен быть типа string??? А то чё-то Процедура AddFolder не компилится так. Да кстати
На самом деле мне нужно сделать, чтобы при запуске приложения Delphi все ярлыки которые уже созданы, не отображались на ShellListView, а которые далее я создаю программным путём отображались. Всё уже сделано кроме правильного отображения информации в ShellListView... Пожалуйста, если знаешь как это исправить, то напиши мне ещё кусок кода, а то мне через неделю уже сдавать курсач, а у меня не сделана всего-лишь одна мелоч, но которая может существенно повлиять на оценку. |
| Автор: Zero 14.11.2004, 11:20 |
| Ладно народ, раз уж у меня не получилось сделать тем способом, то я придумал новый, если сделать двойной щелчок мышью по компоненту ShellListView, то появится окно где путь можно поменять на не стандартный (на свой), но проблема теперь в том что на разных компьютерах он может быть разным, и мне нужно чтобы его можно было устанавливать программно, но вот это почему-то не как не получается сделать... Может из вас кто-нибудь знает как это можно сделать, заранее благодарен. Замечание: Путь содержит сво-во Root, и его-то надо програмно изменить... |
| Автор: Alex 14.11.2004, 11:57 | ||
|
| Автор: Zero 14.11.2004, 12:30 |
| Alex, что то при компиляции выдаётся ошибка: [Error] Work_Table.pas(151): Undeclared identifier: 'AnsiReplaceText' Может здесь несоответствие типов??? И ещё здесь получается, что если путь ставить программно, то всё равно тот который стоит в константах, и получается что его нельзя будет изменять, т.е. У меня есть строка которая определяет путь, который должен отображатся компонентом ShellListView, но никак не получается её занести в свойство Root. |
| Автор: Alex 14.11.2004, 12:43 | ||||||
У тебя Delphi какой версии?
Ничего не понял
Покажи код |
| Автор: Zero 14.11.2004, 12:55 | ||||||||||
Delphi7
Короче, если говорить по руски, то это можно представить так:
Например при появлении формы, она присвоит какой-нибудь путь:
И потом неплохо было-бы если при написании такого кода компилятор мне не выдал бы сообщение об ошибке:
|
| Автор: Alex 14.11.2004, 13:40 | ||
100% работает:
|
| Автор: p0s0l 14.11.2004, 13:49 | ||
AnsiReplaceText - в юните StrUtils, Zero, я тебе уже говорил в теме про польскую запись, как находить модуль, в котором находится стандартная функция
|
| Автор: Zero 14.11.2004, 14:21 | ||
| Alex и PoSol, спасибо вам большое!!! Наконец, то зароботало...
А сейчас уже (когда заработало) я вспомнил, про то что надо навести курсор на слово и нажать <F1>, но доэтого когда в голове ещё то что срок через неделю, и такая мелкая ошибка с которой пол дня сижу, всё сразу вылетело. |
| Автор: p0s0l 14.11.2004, 14:31 | ||
(сорри за offtopic ) |
| Автор: Girder 14.11.2004, 17:35 | ||||
PS: Если хочеш добавить объект(то что в Edit-е) который не существует в файловой системе... то для ентого надо дополнительно создать его(можно виртуально), а также можно зарегистрировать для него CSIDL... *Файл ShellCtrls.pas удалять не надо... |
| Автор: Zero 14.11.2004, 19:39 |
| Girder, спасибо за SLV, там работает, даже более правильно чем то что я сделал у себя. Придётся похже опять мне переделать свою прогу... |