Форум — Ответы     (  К темам )
 ?  IMP: как правильно добавить в ресурсы свой файл шрифтов... (26-04-2003 03:18:36)
как правильно добавить в ресурсы свой файл шрифтов и затем использовать , к примеру в RichEdit ?
 Павел (27-04-2003 11:49:39)
Если правильно, то свой шрифт вы должны установить в соответствующую папку
Windows, например при инсталляции вашей программы на компьютер пользователя

А использовать в каком-либо компоненте

RichEdit1->Font->Name = "TimesNewRoman"; // имя шрифта

или

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(FontDialog1->Execute()){
RichEdit1->Font->Assign(FontDialog1->Font);
}
}
 IMP (28-04-2003 03:45:31)
Шрифт должен быть доступен только в моей программе.
Наверно нужно как-то засунуть его в ресурсы и загружать во время работы , только
как это делается ?(вспоминается CreateFontInDirect,LoadFont...)
 Павел (29-04-2003 16:02:20)
Можно сделать так:

Создайте файл ресурсов например mf.rc,
впишите в него :
myFont EXEFILE cbook3.fon
и присоедените к проекту

Далее в программе:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char buf[100];
GetWindowsDirectory(buf,100);
AnsiString s = (AnsiString)buf+"\\\\Fonts\\\\cbook3.fon";
if(!FileExists(s)){ // проверяем, шрифт уже установлен или нет
char *Resu = "EXEFILE"; // если нет — устанавливаем
TResourceStream* Res = new TResourceStream((int)HInstance, "myFont", Resu);
Res->SaveToFile(s); // записываем наш файл шрифтов из ресурса в Font
delete Res;
}

RichEdit1->Font->Size = 12;
RichEdit1->Font->Style<<fsBold;
RichEdit1->Font->Name = "CBook # 3"; // имя нашего шрифта
}
//-------------------------------------------------------------
// При выходе из программы, например в событии главной формы onClose
// можете удалить этот файл, DeleteFile(FileName)
// если у вас есть права Администратора

Соберите проект Build All

Как подключить Font, если он не установлен в соответствующей
папке Windows к сожалению не знаю,
и мне не очень нравится такой подход, но по-другому вряд-ли можно.