Форум программистов, компьютерный форум, киберфорум
Alex_pac
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
Рейтинг: 4.00. Голосов: 1.

Использование ресурсов в Delphi

Запись от Alex_pac размещена 05.11.2012 в 22:29
Обновил(-а) Alex_pac 10.11.2012 в 03:39

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

1) Картинки
2) Файлы различных форматов
3) Курсоры
4) Шрифты

И вот вобщем то и все. Со строками удобнее работать через INI файлы или XML. Так что строки как ресурсы лучше не использовать имхо.

*********************

Использование ресурсов в Delphi
Компилятор brcc32.exe можно найти в bin каталоге вашей Delphi

Bitmap

Или Картинка формата BMP, синтаксис файла ресурсов:

ИМЯ BITMAP "ПУТЬ К КАРТИНКЕ"

Delphi
1
2
3
4
5
6
{$R myres2.res}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 Image1.Picture.Bitmap.LoadFromResourceName(HInstance,'r1');
end;
RCDATA
Абсолютно любой файл, музыка, текстовый файл, картинка и прочее

ИМЯ RCDATA "ПУТЬ К ФАЙЛУ"

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
{$R myres2.res}
 
procedure TForm1.FormCreate(Sender: TObject);
var j: TJPEGImage; r: TResourceStream;
begin
 j:=TJPEGImage.Create;
 r:=TResourceStream.Create(HInstance,'r2',RT_RCDATA);
 j.LoadFromStream(r);
 j.DIBNeeded;
 Image1.Picture.Bitmap.Assign(j);
 j.free;
 r.free;
end;
Дополнительно примеры загрузки PNG
Применяется также RCDATA

Delphi
1
2
3
4
5
6
7
8
9
10
{$R myres2.res}
 
procedure TForm1.FormCreate(Sender: TObject);
var p: TPngImage;
begin
  p:=TPngImage.Create;
  p.LoadFromResourceName(HInstance,'png1');
  Image1.Picture.Assign(p);
  p.free;
end;
CURSOR
Неанимированный курсор

ИМЯ CURSOR "ПУТЬ К ФАЙЛУ"

Delphi
1
2
3
4
5
6
7
8
9
10
const  MyCur = 77;
 
{$R myres2.res}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 //LoadCursor
 Screen.Cursors[MyCur]:=LoadCursor(HInstance,'r3');
 self.Cursor:= MyCur;
end;
Анимированный курсор
brcc32.exe не знает тип курсора который отвечает за анимированный курсор, поэтому задаем тип явно

ИМЯ 21 "ПУТЬ К ФАЙЛУ"

Синтаксис Delphi идентичен неанимированному

FONT
Шрифт сам по себе, чтобы быть использованным должен быть сохранен ввиде файла. Это требует сама операционная система.
Однако есть способ использовать без файла, но он немного проблемный
http://decoding.narod.ru/faq/font/font001.html#001

Поэтому файлы шрифтов это обычные файлы RCDATA

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{$R *.dfm}
{$R myres2.res}
 
procedure TForm1.FormCreate(Sender: TObject);
var r: TResourceStream;
begin
 r:=TResourceStream.Create(HInstance,'PerfoCone',RT_RCDATA);
 r.SaveToFile('PerfoCone.ttf');
 r.free;
 AddFontResource(PChar('PerfoCone.ttf'));
 SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
 Label1.Font.Name:='PerfoCone';
end;
 
// также при закрытии приложения следует снять регистрацию
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  RemoveFontResource(PChar('PerfoCone.ttf'));
  SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
************

Также прилагается программа, которая упрощает компиляцию файлов ресурсов

Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 765
Размер:	67.8 Кб
ID:	1466

- работа во вкладках сразу с несколькими файлами ресурсов
- пытается установить относительные пути к файлам внутри текста ресурса
- запоминает все вкладки и текст в них после закрытия
- Drag и Drop *.rc файлов для открытия файла ресурсов
Вложения
Тип файла: rar Тест ресурсов.rar (1.10 Мб, 537 просмотров)
Размещено в Без категории
Показов 12451 Комментарии 3
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Аватар для Alex_pac
    PNG добавлен
    Запись от Alex_pac размещена 10.11.2012 в 03:43 Alex_pac вне форума
  2. Старый комментарий
    Аватар для Avazart
    Так а зачем? RAD Studio есть встроенный редактор ресурсов, на крайний случай блокнот+консоль
    Запись от Avazart размещена 03.02.2014 в 16:23 Avazart вне форума
  3. Старый комментарий
    Аватар для noname_club
    Цитата:
    Так а зачем? RAD Studio есть встроенный редактор ресурсов, на крайний случай блокнот+консоль
    если нравится в блокноте писать - пиши.
    как удобнее так и пользуйся. Программа делает тоже самое, составляет файл ресурсов и через консольную команду отправляет его на компиляцию.
    Запись от noname_club размещена 03.02.2014 в 22:15 noname_club вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru