Карта сайтаСсылкиКонтакты

Хостинг


Glyph из ресурсов DLL

PDF Печать
Статьи

Если Вы хотите делать приложения, которые будут иметь скины, менять внешний вид без сторонных компонентов, то изображения удобнее всего хранить в Dll с ресурсами, чтобы пользователь не смог изменить файлы изображений, а также случайно удалить. Но как же извлечь глифы для кнопок (TBitBtn, TSpeedButton и т.д.)? Ответ ниже, в исходном коде. Код простой, поэтому без комментариев:

Глиф на кнопке и изображение в Image из ресурсов

uses
  { ... }, JPEG;
  
  { ... }
  private
    { Private declarations }
    procedure LoadGlyph(Sender: TObject);

{ ... }

var
  Form1: TForm1;
  h: HWND;

{$IFDEF WIN32}
  const BadDllLoad = 0;
{$ELSE}
  const BadDllLoad = 32;
{$ENDIF}

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  h:= LoadLibrary('appres.dll');
  if h <= BadDllLoad then
    ShowMessage('Не могу загрузить DLL!')
  else
    LoadGlyph(Self);
end;

procedure TForm1.LoadGlyph(Sender: TObject);
var
  strm: TResourceStream;
  image: TJPEGImage;
  bmp: TBitmap;
begin
  image:= TJPEGImage.Create;
  strm:= TResourceStream.Create(h, '#4', RT_RCDATA);
  strm.Seek(0, soFromBeginning);
  image.LoadFromStream(strm);
  Image1.Canvas.Draw(0, 0, image);
  image.Free;
  strm.Free;

  image:= TJPEGImage.Create;
  bmp:= TBitmap.Create;
  strm:= TResourceStream.Create(h, '#3', RT_RCDATA);
  strm.Seek(0, soFromBeginning);
  image.LoadFromStream(strm);
  bmp.Assign(image);
  BitBtn1.Glyph:= bmp;
  bmp.Free;
  strm.Free;
  image.Free;
end;

Изображения в ресурсах находятся в JPG формате, так они занимают меньше места, чем BMP.

И не забудьте уничтожить дескриптор библиотеки при закрытии приложения!


 

Комментарии   

 
0 #1 Juliet 23.12.2014 01:13
Peculiar article, exactly what I needed.
Цитировать
 
 
0 #2 buy instagram 31.12.2014 07:14
First off I would like to say terrific blog!
I had a quick question in which I'd like to ask if
you don't mind. I was interested to find out how you center
yourself and clear your mind prior to writing. I've had trouble clearing my thoughts in getting my
thoughts out there. I truly do take pleasure in writing but it just seems like the
first 10 to 15 minutes tend to be lost just trying to figure
out how to begin. Any suggestions or tips? Cheers!
Цитировать
 

Добавить комментарий


Защитный код
Обновить