Как Delphi използва файлове с ресурси

От растерни картинки до икони до курсори до таблични низове всяка програма на Windows използва ресурси. ресурси са тези елементи на програма, които поддържат програмата, но не са изпълним код. В тази статия ще разгледаме някои примери за използването на растерни, икони и курсори от ресурси.

Местоположение на ресурсите

Поставянето на ресурси във .exe файла има две основни предимства:

  • Достъпът до ресурсите може да бъде по-бърз, защото отнема по-малко време за намиране на ресурс в изпълнимия файл, отколкото за зареждането му от дисков файл.
  • Програмният файл и ресурси могат да се съдържат в едно устройство (.exe файла), без да са необходими много поддържащи файлове.

Редакторът на изображения

На първо място, трябва да създадем файл с ресурси. Разширението по подразбиране за файлове с ресурси е.ВЕИ. Ресурсните файлове могат да бъдат създадени с редактора на изображения на Delphi.

Можете да наречете файла с ресурс всичко, което искате, стига да има разширението ".RES", а името на файла без разширението не е същото като всяко име на файл или проект. Това е важно, защото по подразбиране всеки

instagram viewer
Проект Delphi който се компилира в приложение, има ресурсен файл със същото име като файла на проекта, но с разширението ".RES". Най-добре е да запазите файла в същата директория като файла на вашия проект.

Включване на ресурси в приложенията

За да имаме достъп до нашия собствен ресурсен файл, трябва да кажем на Delphi да свърже нашия ресурсен файл с нашето приложение. Това се постига чрез добавяне на директива за компилатор към изходния код. Тази директива трябва незабавно да следва директивата за формуляра, както следва:

{$ R * .DFM} 
{$ R DPABOUT.RES}

Не изтривайте случайно {$ R * .DFM} част, тъй като това е редът на кода, който казва на Delphi да се свърже във визуалната част на формата. Когато избирате растерни карти за бутони за скорост, компоненти на изображението или компоненти на бутона, Delphi включва файла с растерна карта, който сте избрали като част от ресурса на формата. Delphi изолира елементите на вашия потребителски интерфейс във .DFM файла.

За да използвате реално ресурса, трябва да направите няколко API на Windows призовава. Растерните, курсорите и иконите, съхранявани във ВЕИ файлове, могат да бъдат извлечени с помощта на функциите на API LoadBitmap, LoadCursor, и LoadIcon съответно.

Снимки в ресурси

Първият пример показва как да заредите растерна карта, съхранявана като ресурс, и да я покажете в a TImage компонент.

процедура TfrMain.btnCanvasPic (Подател: TObject);
Var bBitmap: TBitmap;
започвам
bBitmap: = TBitmap. Създаване;
опитвам
bBitmap. Дръжка: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Ширина;
Image1.Height: = bBitmap. Ръст;
Image1.Canvas. Равенство (0,0, bBitmap);
накрая
bBitmap. Безплатно;
край;
край;

Забележка: Ако растерната карта, която ще бъде заредена, не е във файла с ресурси, програмата ще продължи да работи, тя просто няма да покаже растерната карта. Тази ситуация може да се избегне чрез тестване, за да се види дали bBitmap. дръжка е нула след повикване до LoadBitmap () и предприемане на подходящи стъпки. Най- опитайте / най-накрая част от предишния код не решава този проблем, просто тук е да се уверите, че bBitmap е унищожен и свързаната му памет е освободена.

Друг начин, който можем да използваме за показване на растерна карта от ресурс, е следният:

процедура TfrMain.btnLoadPicClick (Подател: TObject);
започвам
Image1.Picture. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
край;

Курсори в ресурси

Screen. Бърз [] е масив на курсори, доставени от Delphi. Използвайки файлове с ресурси, можем да добавим персонализирани курсори към свойството Cursors. Освен ако не желаем да заменим някоя от настройките по подразбиране, най-добрата стратегия е да използваме номера на курсора, започващи от 1.

процедура TfrMain.btnUseCursorClick (Подател: TObject);
конст NewCursor = 1;
започвам
Screen. Курсори [NewCursor]: =
LoadCursor (hInstance, „CURHAND“);
Image1.Cursor: = NewCursor;
край;

Икони в ресурси

Ако погледнем този на Delphi Проект-Options-Application настройки, можем да открием, че Delphi доставя иконата по подразбиране за проект. Тази икона представлява приложението в Windows Explorer и когато приложението е сведено до минимум. Лесно можем да променим това, като кликнем върху бутона „Зареждане на иконата“.

Ако искаме например да анимираме иконата на програмата, когато програмата е сведена до минимум, следният код ще свърши работата.

За анимацията се нуждаем от TTimer компонент във формуляр. Кодът зарежда две икони от ресурсния файл в масив от TIcon обекти; този масив трябва да бъде деклариран в публичната част на основната форма. Ще се нуждаем също NrIco, това е тип Integer променлив, обявена в обществен част. Най- NrIco се използва за следене на следващата икона за показване.

обществен
nrIco: Целочислено;
MinIcon: масив [0..1] от TIcon;
...
процедура TfrMain. FormCreate (подател: TObject);
започвам
MinIcon [0]: = TIcon. Създаване;
MinIcon [1]: = TIcon. Създаване;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
край;
...
процедура TfrMain. Timer1Timer (подател: TObject);
beginif IsIconic (Приложение. дръжка) тогавазапочвам
NrIco: = (NrIco + 1) моден 2;
Приложение. Икона: = MinIcon [NrIco];
край;
край;
...
процедура TfrMain. FormDestroy (подател: TObject);
започвам
MinIcon [0] .Free;
MinIcon [1] .Free;
край;

В Timer1.OnTimer мениджър на събития, IsMinimized функция се използва, за да видим дали трябва да анимираме основната си икона или не. По-добър начин за постигане на това би било да заснемете бутоните за максимално / минимизиране и след това да действате.

Заключителни думи

Можем да поставим всичко (е, не всичко) във файлове с ресурси. Тази статия ви показа как да използвате ресурси за използване / показване на растерна карта, курсор или икона във вашето приложение Delphi.

Забележка: Когато записваме проект на Delphi на диска, Delphi автоматично създава един .RES файл, който има същото име като проекта (ако не друго, основната икона на проекта е вътре). Въпреки че можем да променим този файл с ресурси, това не е препоръчително.

instagram story viewer