Работа с ресурсами в Delphi |
||||
---|---|---|---|---|
Windows поддерживает такие виды ресурсов: RT_ACCELERATOR Accelerator table Самый простой из них это RT_STRING - то есть строковый. Для работы с ним
предусмотрено специальное зарезервированное слово -
resourcestring. ================================================== Например: ================================================== procedure TForm1.Button1Click(Sender: TObject); var S: array [0..255] of Char; begin LoadString(HInstance, SLineTooLong, S, SizeOf(S)); ShowMessage(S); end;================================================== Второй способ сделать то же самое немного сложнее, но он показывает принцип работы с ресурсами вообще. Для этого нам нужно создать включаемый файл myres.inc и в теле прописать константы, по которым мы будем обращаться к строковым ресурсам. ================================================== Еще нам нужно создать ресурсный текстовый файл myres.rc. ================================================== Обратите внимание, что теперь текст нужно брать в двойные кавычки. Теперь нам необходимо откомпилировать наш файл ресурсов. Создаем для удобства простой пакетный файл myres.bat, в который записываем такую строку ================================================== brcc32.exe myres.rc ================================================== Запускаем его на выполнение. Он должен создать скомпилированный файл ресурса
myres.res. Теперь подключаем myres.inc и myres.res в наш
Main.pas. ================================================== Теперь попробуем подключить к приложению свой курсор. Для этого необходимо: 1. Сначала в Image Editor'е или другом редакторе ресурсов создать свой курсор. Сохранить его под именем, например, Cursor.cur 2. Создаем файл MyCursor.rc, в теле которого записываем строку MyCursor CURSOR "cursor.cur" 3. Компилируем наш файл ресурса, набрав в командной строке brcc32 MyCursor.rc и получаем на выходе скомпилированный файл ресурса MyCursor.res. 4. В *.pas-файле добавляем ссылку на наш файл ресурса. {$R MyCursor.res} 5. Объявляем константу, по которой будем обращаться к нашему курсору. const Замечание. Для своих курсоров можно использовать только положительные значения. 6. Добавляем в список курсоров новый... Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'MyCursor'); 7. Подключаем, вместо курсора по умолчанию, свой курсор. Cursor := crMyCursor; 8. Запускаем приложение. //============================================ Подключение иконок и bitmap-ресурсов аналогично подключению курсоров. Мы попробуем подключить стандартные иконки и bitmap'ы. Это делается так. Image1.Picture.Icon.Handle := LoadIcon(0,
PChar(IDI_APPLICATION)); Для более подробной информации смотрите соответствующие функции
WinApi. Теперь мы перешли к работе с определенными пользователем ресурсами. Мы попробуем подключить текстовый и *.avi-файл. 1. Берем из примеров Delphi файл cool.avi, который находится в
каталоге 2. Создаем любой текстовый файл с именем app.txt и помещаем эти файлы к каталог нашего проекта. 3. Создаем текстовый файл ресурса MyRes.rc с телом MyText Text APP.TXT brcc32 myres.rc 5. Делаем изменения в *.pas-файле. 6. Запускаем. {*******************************************************} unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Animate1: TAnimate; Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } procedure TextResource; procedure AVIResource; end; var Form1: TForm1; implementation {$R *.DFM} {$R MyRes.res} procedure TForm1.AVIResource; begin Animate1.ResName := 'CoolAvi'; Animate1.Active := True; end; procedure TForm1.FormCreate(Sender: TObject); begin TextResource; AVIResource; end; procedure TForm1.TextResource; var Resource: THandle; begin Resource := LoadResource(hInstance, FindResource(hInstance, 'MyText', 'TEXT')); Memo1.Lines.Text := PChar(LockResource(Resource)); UnLockResource(Resource); FreeResource(Resource); end; end. | ||||