Как в Delphi изменить иконку у директории.
Компилятор: Delphi 4.x, 5.x
Обычно, для изменения вида папок в Проводнике
используется файл desktop.ini.
Сперва необходимо
создать файл Desktop.ini и поместить в ту директорию,
иконку которой мы хотим изменить. В программе для
этого можно воспользоваться классом TIniFile и
передать в него путь директории.
Теперь нам необходимо записать в .ini файл пары
<key>=<value>. В Desktop.ini эти пары выглядят
следующим образом (самое главное, это указать
иконку и её индекс):
[.ShellCLassInfo]
IconFile=C:LocationofFolder.ico
IconIndex=0
InfoTip=Delphi is the coolest IDE ever!
Значение IconFile это путь к .dll, .ico, или .exe. В Delphi это
выглядит так:
with iniFile do
begin
//Следующие строки меняют иконку
WriteString('.ShellClassInfo', 'IconFile', editIconPath.Text);
WriteString('.ShellClassInfo', 'IconIndex', editIconIndex.Text);
WriteString('.ShellClassInfo', 'InfoTip', 'Use Delphi because it
rocks!');
UpdateFile;
end;
Теперь, когда файл 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;
Теперь можно открыть Проводник и посмотреть в
левой панели на значёк директории.
|