Среда, 21.11.2018, 06:21
IMHO - есть мнение?
Главная | RSS
Меню сайта
Категории раздела
Личное [12]
Личный блог
ОСь [3]
Обзор, статьи по различным ОС
Игры [1]
Обзор и статьи про игры
Программы [5]
Обзор, статьи по разным программам
Программирование [6]
1С, Delphi и др.
Железо [3]
Обзор компьютерного железа
Прочее [13]
Различные статья на разные темы
ПДД [3]
ПДД, разбор ситуаций, прочее
Статусы [1]
Статусы для постинга в соцсетях
Случайный опрос
Поддерживаете ли Вы запрет суррогатного материнства?
Всего ответов: 1
Администрация
396-160-722


Внимание спамерам! Антиспамбот включен!
Жизнь сайта
Статистика
Облако тэгов
Реклама
Главная » 2010 » Май » 16 » Как в Delphi изменить иконку у директории
15:10
Как в Delphi изменить иконку у директории

Обычно, для изменения вида папок в Проводнике используется файл 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;

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

Оригинал статьи: http://www.codenet.ru/progr/delphi/stat/ddicon.php

Категория: Программирование | Просмотров: 174 | Добавил: Vurdalak | Теги: delphi | Рейтинг: 0.0/0 | Обсудить
Поиск
Календарь
«  Май 2010  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Событие

    До Нового Года:
    Погода от GisMeteo
    UBUNTU 12.04
    Все права защищены © 2009-2018 Соколов Денис