|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Как подгрузить свой шрифт
Ситуация.
Имеется какой-либо шрифт (*.ttf, *.fon, *.otf) не установленный в системе. Он находится в папке с программой. Как использовать этот шрифт в своей программе, например в Memo или Label не устанавливая его в систему? Гугл не помог Програмистами не рождаются, ими становятся! |
#2
|
||||
|
||||
Цитата:
Учись способам решения задач. Не стоит путать форумы с богадельнями. © Bargest |
#3
|
||||
|
||||
Подключить во время запуска в Form.OnCreate:
Код:
AddFontResource('SomeFont.ttf'); Memo1.Font.Name:= 'SomeFont'; Код:
RemoveFontResource('SomeFont.ttf'); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
||||
|
||||
т.е. сначала установить его, использовать, а потом удалить... как-то это грубо получается...
А без установки ни как...? Может как-то можно компоненте передать сторонний шрифт какой-нибудь winapi функцией? Програмистами не рождаются, ими становятся! |
#5
|
||||
|
||||
Код:
AddFontResourceEx('somefont.ttf',FR_PRIVATE,0); Устанавливает, что только процесс, который вызвал функцию AddFontResourceEx, может использовать этот шрифт. Когда имя шрифта соответствует общедоступному шрифту, частный шрифт должен быть выбранным. Когда процесс завершает работу, система удалит все шрифты, установленные процессом при помощи функции AddFontResourceEx. Код:
RemoveFontResourceEx('somefont.ttf',FR_PRIVATE,0); Програмистами не рождаются, ими становятся! |
#6
|
|||
|
|||
Проблемы с установкой шрифта не возникает, но проблема в том, что шрифт доступен не сразу при запуске программы, а только на второй и последующие запуски.
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) делаю после AddFontResource. AddFontResource пробовал делать и в FormOnCreate и в FormOnShow, и после SendMessage делаю Label.Font.Name - всё безрезультатно! Шрифт появляется только на второй запуск программы... |
#7
|
|||
|
|||
А если сделать это в файле проекта ДО первого вызова Application.FormCreate
|