Валерий Борисок - Delphi. Трюки и эффекты

Здесь есть возможность читать онлайн «Валерий Борисок - Delphi. Трюки и эффекты» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Delphi. Трюки и эффекты: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Delphi. Трюки и эффекты»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Delphi. Трюки и эффекты — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Delphi. Трюки и эффекты», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

На самом деле функция из листинга 4.35 может определять значки не только файлов, но и каталогов, дисков и виртуальных папок ( Мой компьютер, Рабочий стол, Панель управленияи т. д.). Правда, в последнем случае используемая в листинге API-функция SHGetFilelnfo требует первый параметр специального вида (не строка). Частично работа с таким представлением путей рассмотрена в подразд. «Окно выбора папки» разд. 2.4.

В заключение скажем несколько слов о прочих полезных возможностях API-функции SHGetFileInf о. Недаром она называется не SHGetFilelcon или что-то подобное: она позволяет получить гораздо больше информации, нежели просто значок файла. Эта информация зависит от набора флагов, передаваемых в функцию в качестве последнего параметра. Но сначала рассмотрим, из каких полей состоит структура SHFILEINFO, потому что результат (за редким исключением) помещается именно в ее поля:

• hIcon (типа HICON) – дескриптор значка заданного путем объекта (первый параметр функции SHGetFilelnfo);

• iIcon (типа Integer) – номер значка в системном компоненте ImageList;

• dwAttributes (типа DWORD) – атрибуты заданного путем объекта;

• szDisplayName (типа array [0. МАХ_РАТН-1] of AnsiChar) – буфер для имени заданного объекта (например, сочетание имени и метки диска, отображаемое в ПроводникеWindows);

• szTypeName (типа array [0..79] of AnsiChar) – буфер для названия типа файла (например, Документ Microsoft Word).

На полях dwAttributes и ilcon подробно останавливаться не будем, зато рассмотрим, как заставить функцию SHGetFilelnfo заполнить остальные поля структуры (их проще всего использовать в Delphi). Вот используемые для этого флаги (имена целочисленных констант):

• SHGFIICON – поле hlcon заполняется дескриптором значка, ассоциированного с объектом; если при использовании дескриптор не сохраняется в каком-либо контейнере или прочем объекте, автоматически удаляющем ненужные значки (как в листинге 4.36), то после использования значок нужно удалить вручную (API-функция Destroylcon);

• SHGFI_LARGEICON, SHGFI_SMALLICON – ОНИ применяются В комбинации с SHGFIICON для получения большого или малого значков соответственно; использование флагов вместе не имеет смысла (будет получен малый значок);

• SHGFI_DISPLAYNAME—при наличии этого флага поле szDisplayName будет содержать дружественное пользователю имя объекта (например, System (С:));

• SHGFI_EXETYPE – при наличии этого атрибута полез zTypeName будет заполнено текстовым описанием типа файла.

Значения в приведенном списке можно, если не сказано иное, комбинировать при помощи операции битового ИЛИ (or).

Извлечение значков из ЕХЕ– и DLL-файлов

Наверняка вы знаете, что исполняемый файл, помимо кода программы, данных и прочей системной информации, может содержать также ресурсы. Так, из секции ресурсов берутся значки для ЕХЕ-файлов. Также в ЕХЕ– или DLL-файлах помещаются значки, используемые для ассоциированных с приложениями документов. Итак, в завершение главы рассмотрим еще один графический пример: создадим программу, способную извлекать упомянутые значки из DLL– или ЕХЕ-файлов (работает также и для ICO-файлов).

Пусть мы имеем путь файла, а также два списка (TImageList) для больших и малых значков соответственно. Тогда процедура, заполняющая списки значками, извлеченными из файла, может выглядеть следующим образом (листинг 4.37).
...

Листинг 4.37.

Составление списков значков

procedure LoadIcons(filename: String; lgImages,

smImages: TImageList);

var

icon: TIcon;

smIconHandle, lgIconHandle: HICON;

i: Integer;

begin

//Загрузка каждого значка (неоптимально, но просто)

i := 0;

while Integer(

ExtractIconEx(PAnsiChar(filename), i, lgIconHandle,

smIconHandle, 1)

) > 0 do

begin

Inc(i);

//Большой значок

icon := TIcon.Create;

icon.Handle := lgIconHandle;

lgImages.AddIcon(icon);

//Малый значок

icon := TIcon.Create;

icon.Handle := smIconHandle;

smImages.AddIcon(icon);

end;

end;

В листинге 4.37 для извлечения значков из файла используется очередная полезная функция модуля ShellApi – Extract IconEx. Прототип функции таков:

...

function ExtractIconEx(lpszFile: PChar; nIconIndex: Integer;

var phiconLarge, phiconSmall: HICON;

nIcons: UINT): UINT;

Функция ExtractlconEx принимает следующие параметры:

• lpszFile – путь файла, из которого извлекаются значки;

• nIconlndex – номер первого извлекаемого значка; нумерация начинается с нуля (если номер равен -1 и параметры piconLarge и piconSmall нулевые, то функция возвращает количество значков в файле);

• piconLarge, piconSmall – ссылки на переменные типа HI CON (либо на первые элементы массива array. of HICON) для помещения в них дескрипторов больших и малых значков соответственно;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Delphi. Трюки и эффекты»

Представляем Вашему вниманию похожие книги на «Delphi. Трюки и эффекты» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Delphi. Трюки и эффекты»

Обсуждение, отзывы о книге «Delphi. Трюки и эффекты» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x