Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение системной иконки, ассоциированной с файлом в данной системе

Delphi , Графика и Игры , ICO

Получение системной иконки, ассоциированной с файлом в данной системе

Автор: Дмитрий Баранов
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение системной иконки, ассоциированной с файлом в данной системе

Функция позволяет получить такую же иконку любой директории или любого файла,
какую вы видите в "проводнике". Размеры - 16 * 16 (по умолчанию) или 32 * 32
(второй параметр - itLarge)

Зависимости: Юниты VCL + ComObj, ActiveX, ShellApi, ShlObj;
Автор:       Дмитрий Баранов, kda@pisem.net, Москва
Copyright:   Взято из MSDN
Дата:        20 мая 2002 г.
***************************************************** }

type
  TIconType = (itSmall, itLarge);

function GetIcon(const FileName: string; const IconType: TIconType = itSmall):
  TIcon;
var
  FileInfo: TShFileInfo;
  ImageList: TImageList;
  IT: DWORD;
begin
  // CoInitialize; лучше - поместите вызов этой ф. в раздел initialization
  IT := SHGFI_SMALLICON;
  Result := TIcon.Create;
  ImageList := TImageList.Create(nil);
  if (IconType = itLarge) then
  begin
    IT := SHGFI_LARGEICON;
    ImageList.Height := 32;
    ImageList.Width := 32;
  end;
  FillChar(FileInfo, Sizeof(FileInfo), #0);
  ImageList.ShareImages := true;
  ImageList.Handle := SHGetFileInfo(
    PChar(FileName),
    SFGAO_SHARE,
    FileInfo,
    sizeof(FileInfo),
    IT or SHGFI_SYSICONINDEX
    );
  ImageList.GetIcon(FileInfo.iIcon, Result);
  ImageList.Free;
  { Не забывайте освободить полученную иконку }
end;

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
var
  Icon: TIcon;
begin
  Self.Icon := GetIcon('C:\');
end;

Код на языке Delphi!

Функция GetIcon извлекает системный иконку, связанную с файлом или директории в текущей системе. Функция принимает два параметра: FileName (путь к файлу или директории) и IconType (опциональный параметр, который specifies размер иконки, либо маленький (16x16), либо большой (32x32)).

Разбивка кода:

  1. Определение перечисления типа TIconType с двумя значениями: itSmall и itLarge.
  2. Определение функции GetIcon, которая принимает параметр FileName и опциональный параметр IconType (по умолчанию равен itSmall). Функция возвращает объект TIcon.
  3. Внутри функции:
    • Инициализация переменных: FileInfo типа TShFileInfo, ImageList типа TImageList и IT как DWORD-значение.
    • Если IconType установлен в itLarge, то IT устанавливается в SHGFI_LARGEICON и размер ImageList корректируется соответственно.
    • Заполнение структуры FileInfo нулями с помощью FillChar.
    • Создание списка изображений (ImageList) и установка свойства "shared images" в true.
    • Вызов функции SHGetFileInfo, передавая имя файла, некоторые флаги (включая SFGAO_SHARE и SHGFI_SYSICONINDEX) и структуру FileInfo. Функция возвращает handle иконки.
    • Получение иконки из списка изображений с помощью ImageList.GetIcon и присваивание ее переменной Result.
    • Очистка списка изображений (ImageList.Free) и возврат полученной иконки (Result).
  4. Последняя секция предоставляет простой пример использования функции GetIcon в обработчике события клика кнопки формы.

Обратите внимание, что этот код требует следующих модулей: VCL, ComObj, ActiveX, ShellApi и ShlObj. Кроме того, автор рекомендует вызвать функцию CoInitialize в разделе инициализации вашего проекта Delphi для обеспечения правильной инициализации компонентов COM.

Функция получения системной иконки, ассоциированной с файлом в данной системе, позволяет получать иконку любой директории или файла, какую видят в "проводнике", размером 16*16 или 32*32 пикселей.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: ICO ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:58:35/0.0036568641662598/0