Пятница, 20.06.2025
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нашли свой исходник?
Всего ответов: 94
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Разные » Примеры Delphi

Как изменить иконку у директории?

Обычно для изменения вида папок в Проводнике используется файл desktop.ini.

Сперва необходимо создать файл desktop.ini и поместить его в ту директорию, иконку которой мы хотим изменить. В программе для этого можно воспользоваться классом TIniFile и передать в него путь директории.

Теперь нам необходимо записать в .ini-файл пары значений. В desktop.ini эти пары выглядят следующим образом:

[.ShellCLassInfo] 
IconFile=C:\folder.ico 
IconIndex=0 
InfoTip=Folder info tip

Самое главное - это указать иконку и её индекс.

Значение IconFile - это путь к .dll, .ico, или .exe файлу. В Delphi это выглядит так:

var iniFile: TIniFile; 
... 
iniFile:=TIniFile.Create(edFolderPath.Text); 
with iniFile do 
 begin 
 //Следующие строки записывают в desktop.ini все необходимые параметры 
 WriteString('.ShellClassInfo', 'IconFile', editIconPath.Text); 
 WriteString('.ShellClassInfo', 'IconIndex', editIconIndex.Text); 
 WriteString('.ShellClassInfo', 'InfoTip',editInfoTip.Text); 
 UpdateFile; 
 end; 
iniFile.Free;

Примечание: здесь editFolderPath, editIconPath, editIconIndex и editInfoTip - элементы TEdit, в которые вводятся все необходимые данные - путь к директории, иконку которой следует изменить, путь к файлу с иконкой, индекс иконки и всплывающая подсказка для директории (подсказка не обязательна).

Теперь, когда файл desktop.ini создан, необходимо изменить атрибуты папки и добавить системный флаг. Чтобы иконка отображалась правильно, желательно установить системный флажок как для папки, так и для её родителя. Для установки атрибутов воспользуемся функцией SetFileAttribue():

//Устанавливаем системные атрибуты для папки и её родителя 
SetFileAttributes(PChar(edFolderPath.Text), FILE_ATTRIBUTE_SYSTEM); 
if Length(edFolderPath.Text) > 3 then //Если директория не корневая... 
begin 
 //функция LastChar возвращает индекс последнего вхождения символа 
 //в строку. Этот способ позволяет быстро получить путь родительской 
 //директориии, если, конечно, директория не является корневой на диске... 
 tempDir := Copy( edFolderPath.Text, 1,LastChar(edFolderPath.Text, '')-1); 
 SetFileAttributes(PChar(tempDir), FILE_ATTRIBUTE_SYSTEM); 
end;

Теперь можно открыть Проводник и посмотреть на значок.

Получить ссылку на материал

Категория: Примеры Delphi | Добавил: Барон (20.12.2011)
Просмотров: 1184 | Теги: иконка, директория | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Delphi.NET [3]
Kylix Delphi for Linux [9]
Советы Дельферу [6]
Хитрости в Delphi [2]
Обзор Delphi [45]
Инсталлятор [11]
Пользовательский интерфейс [18]
Примеры Delphi [93]
Функции и процедуры [15]
Разные [31]
Королевство Delphi © 2010-2025
Яндекс цитирования