Включение шрифта как ресурс в EXE
Идет как-то Товарищ Комманд Ком по диску, смотрит по сторонам и удивляется: ветки у деревьев поломаны, файлы дефрагментированы, что не разберешь где какой, Командир Нортон в архив запихнут!!! Ну, пожалел его Комманд Ком, вытащил из архива и спрашивает: - Кто ж это тебя так, бедненького?!! А командир Нортон ему и отвечает: - Какой ты, Товарищ Комманд Ком, добрый и заботливый... когда трезвый!!! |
Включение шрифта в ваш EXE:
- Используйте ваш любимый текстовый редактор, создайте *.rc файл, описывающий шрифт:
- Затем для создания *.res файла используйте компилятор командной строки BRCC32.EXE, поставляемый с Delphi. Если ваш файл на этапе 1 был назван MyFont.rc, командная строка в сеансе DOS должна выглядеть так:
- В вашей программе добавьте директиву компилятора, чтобы включить вновь созданный файл:
- Добавьте процедуру создания файла из ресурса, делающим шрифт доступным для использования. Пример:
- Теперь вы можете использовать данный шрифт в своем приложении:
MY_FONT ANYOL1 "Bauhs93.ttf" |
Первые два параметра могут быть любыми. Они будут использоваться в программе позже.
BRCC32 MyFont |
Программа добавит в компилируемый файл созданный ресурс .rc и создаст файл с тем же именем, за исключением расширения, которое будет .res: MyFont.res
{$R MyFont.res} |
Правильным будет разместить его в секции реализации после строчки {$R *.DFM}.
procedure TForm1.FormCreate(Sender: TObject); var Res : TResourceStream; begin Res := TResourceStream.Create(hInstance, 'MY_FONT', Pchar('ANYOL1')); Res.SavetoFile('Bauhs93.ttf'); Res.Free; AddFontResource(PChar('Bauhs93.ttf')); SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0); end; |
procedure TForm1.Button1Click(Sender: TObject); begin Button1.Font.Name := 'Bauhaus 93'; end; |
Приведенный пример не предусматривает никакой проверки и защиты от возможных ошибок.
Обратите внимание - имя файла НЕ такое же, как имя шрифта. Это допускает, что вы знаете имя шрифта и имя его ttf-файла. Вы можете определить это, дважды щелкнув на файле в окне Проводника.
Я рекомендую устанавливать файл шрифта в папку C:\WINDOWS\FONTS. Его легче отыскать потом именно там.
Ваш вновь установленный шрифт может быть удален программным путем, естественно, в случае, когда он никем не используется:
procedure TForm1.FormDestroy(Sender: TObject); begin RemoveFontResource(PChar("Bauhs93.ttf")) SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0); end; |
Для получения дополнительной справки по функциям AddFontResource и RemoveFontResource загляните в электронную справку по Win32.
Далее: Вставить программу внутрь EXE файла »»