Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП (13.динамические библиотеки у.doc
Скачиваний:
1
Добавлен:
11.11.2019
Размер:
135.68 Кб
Скачать

Розміщуємо власні ікони в динамічній бібліотеці

Перш за все необхідно навчитися створювати самі значки (хоча, якщо вам лінь, то в інтернеті можна знайти сотні готових значків). У Delphi для цього служить Редактор зображень (Image Editor). Для цього:

1. У рядку меню Delphi виберіть команду Tools Image Editor Запуститься Редактор зображень. Його можливості досить обмежені, зате він доступний у всіх версіях і редакціях Delphi.

2. З меню Редактора зображень виберіть команду File New Resource File. Відкриється вікно редагування ресурсів.

3. З меню Редактора зображень виберіть команду Resource New Icon. У діалоговому вікні властивостей значка (рис 12 3), що з'явилося, залиште запропоновані значення і натисніть ОК.

У вікні ресурсів з'явиться ім'я нового значка (Icon1). Значок можна перейменувати, клацнувши по його імені. Для прикладу в наступному параграфі нам потрібно, щоб ім'я значка складалося із заголовних букв, тому перейменуйте його в ICON1. Подвійне клацання по цьому імені відкриє вікно редагування значка. Закінчивши малювання значка, закрийте вікно редагування.

5. Таким же чином можете додати в поточний файл ресурсів ще не скільки значків. Коли всі значки будуть готові, виберіть в меню Редактора зображень команду File - Save і збережете файл під ім'ям, наприклад, MYICON.RES.

Створення файлу ресурсів, що містить значки, на цьому закінчене. Залишилося розмістити ці ресурси в динамічній бібліотеці.

1. У рядку меню Delphi виберіть команду File New Other. У діалоговому вікні, що з'явилося, перейдіть на вкладку New і виберіть DLL Wizard. Delphi автоматично створить заготівку початкової коди нової бібліотеки.

2. Додайте у відведене для вказівки ресурсів місце початкової коди ім'я тільки що створеного файлу ресурсів:

{$R myicon.res }

3. Збережіть проект бібліотеки в якій-небудь теці і скопіюйте файл MYICON.RES у цю ж теку.

4. Скомпілюйте бібліотеку командою Project Compile.

Бібліотека створена. Можна переписати програма, створене в попередньому пункті, так, щоб замість системної бібліотеки Shell32.dll воно читало значки з вашої бібліотеки (мал. 4.).

мал. 4

Читаємо з бібліотеки іменовану ікону

Програма, код якого приведений в лістингу 3, завантажувало з бібліотеки всі значки, які в ній зберігаються. Тепер ми дізналися, що у файлі ресурсів, який ми «перетворили» в динамічну бібліотеку, значки зберігаються під іменами. Чи можна витягувати з бібліотеки конкретний значок, знаючи його ім'я? Продемонструємо, як це зробити, і заразом покажемо приклад явної компоновки — завантаження бібліотеки а на вимогу і вивантаження, коли вона більше не потрібна.

Створіть нову програму і помістіть на форму кнопку, після натиснення якої програма витягуватиме з бібліотеки, створеної в попередньому параграфі (Projectl.dll), значок на ім'я ICON1 і намалює його в лівому верхньому кутку вікна.

Наступний код припускає, що бібліотека Projectl.dll скопійована в теку проекту:

procedure Tform1.Button1Click(Sender: TObject);

var

Icon: TIcon, -HandleDLL: THandle;

begin

// створюємо об'єкт для маніпуляцій із значком

Icon := TIcon.Create;

// завантажуємо бібліотеку

HANDLEDLL := LoadLibrary('Projectl.dll');

if HANDLEDLL = 0 then

MessageDlg('Помилка: бібліотека не знайдена', mtError, [mbOk], 0) else begin

// читаємо значок по імені

Icon.Handle := Loadlcon(HANDLEDLL, 'ICON1');

// малюємо значок

Canvas.Draw(10, 10, Icon);

// бібліотека більше не потрібна: вивантажуємо її

FreeLibrary(HANDLEDLL);

// об'єкт значка теж не потрібний

Icon.Free; end; end;

Для звернення до значка в бібліотеці по його імені служить функція Loadlcon, аргументами якої є дескриптор завантаженої бібліотеки, повернений функцією LoadLibrary, і ім'я значка.

Контрольні запитання:

  1. Дати визначення бібліотекі DLL. Поясніть доцільність її приложення.***

  2. Як створити динамічну бібліотеку.***

  3. Наповнення бібліотеки вмістом***

  4. Підключення бібліотеки до програми***

  5. Завантаження бібліотеки в пам'ять***

  6. Як зберегти ресурси в динамічній бібліотеці.****

Література:

  1. Архангельский А.Я. Программирование в Delphi 7, М.,: ООО «Бином-Пресс», 2003 г. – 1152 с.

  2. Дарахвелидзе П. Г., Марков Е. П. Программирование в Delphi 7. — СПб.: БХВ-Петербург, 2003. — 784 с: ил.

  3. Колосов С.В. Программирование в среде Delphi., - Мн.: БГУИР, 2005, - 164 с.

  4. Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование: Учеб. Для вузов / Под ред. Г.С.Ивановой. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2001 – 320с.

  5. Пестриков В.М., Маслобоев А.Н., Delphi на примерах. – СПб.: БХВ – Петербург, 2005. 496 с.

6