Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2015, 18:43   #1
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию Если в системе нет шрифта

Если программа использует шрифт- тот который не стоял по умолчанию, то большая вероятность того что на другом компьютере при использовании данной программы мы получим ????? вопросики там где был текст.

Есть ли какой способ предотвратить такое? (ложить может шрифт в папку с проектом, устанавливать программным способом этот шрифт при старте программы) или что-то еще может предпринять?
NIKOLAYY2 вне форума Ответить с цитированием
Старый 18.01.2015, 19:03   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

можно и программным способом. в файл ресурсов запихнуть файл шрифта, а потом его создать и использовать. пример прилагаю
Код:
unit EXEFonts;
interface
uses Windows,Messages,Classes,Forms,Controls,StdCtrls;
type TForm1=class(TForm)
     Button1:TButton;
     Label1:TLabel;
     procedure LoadFont;
     procedure Button1Click(Sender:TObject);
     private{Private declarations}
     public{Public declarations}
end;
var Form1:TForm1;
implementation
{$R *.DFM}
{$R dialog.res}

procedure TForm1.LoadFont;
var Res:TResourceStream;
begin
   Res:=TResourceStream.Create(hInstance,'MYFONT',Pchar('ANYOL1'));
   Res.SavetoFile('Crystal.ttf');
   Res.Free;
   AddFontResource(PChar('Crystal.ttf'));
   SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;

procedure TForm1.Button1Click(Sender:TObject);
begin
   LoadFont;
   Label1.Font.Name:='Crystal';
end;

end.
если что, исходник могу скинуть полностью
Вложения
Тип файла: rar EXEFontupx.rar (136.4 Кб, 11 просмотров)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 18.01.2015, 20:34   #3
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

Это он в папке шрифтов прописывается в системе?
NIKOLAYY2 вне форума Ответить с цитированием
Старый 18.01.2015, 21:43   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

нет, он создаётся в папке рядом с программой и спокойно используется. в ситсему тут ничего не внедряется. хотя, можно его запилить в папку Windows\Font и устроить перезагрузку с прописью в реестре. но это долго и муторно. ведь пользователю хочется "рррраз!!! и полетел!!!!"
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 19.01.2015, 00:43   #5
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Использование своего шрифта в программе

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
//объявляем свой шрифт
AddFontResource('IZHITSA.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
//применяем его
Form1.font.name := 'IZHITSA';
Form1.font.size := 10;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
//ликвидируем
RemoveFontResource('IZHITSA.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
kropotkina-alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если число подходит под заданный интервал - выводим в Memo, если нет - берем следующее FleXik Общие вопросы Delphi 9 07.04.2014 06:46
Если нет записи в combobox Volkogriz Общие вопросы Delphi 2 14.02.2013 21:15
прогу которая запрашивает ввод пароля,если пароль введен верно-то какойнь сообщение,если нет-дается 3 попытки на ввод правильного BornOfOsiris Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 10.12.2012 09:12
Правильна ли подпрограмма относительно данной спецификации? Если да,то обосновать,если нет-исправить подпрограмму. Nastya1221 Помощь студентам 3 26.01.2012 08:36
Работа с модемом: Узнать подключен модем к системе или нет Никки Общие вопросы Delphi 0 24.11.2008 10:55