Вниз
Скачать: CL | DM;

Как использовать нестандартный шрифт, не устанавливая его?   Найти похожие ветки 

← →
workdisk450 ©   (2006-01-07 14:36) [0]

Я хочу использовать не стандартный шрифт в своей программе, но как заставить программу брать его из каталога этой программы, не устанавливая этот шрифт в систему.


← →
Джо ©   (2006-01-07 14:37) [1]

AddFontResourceEx


← →
Джо ©   (2006-01-07 14:37) [2]

Кстати, что такое "нестандартный"?


← →
workdisk450 ©   (2006-01-07 14:41) [3]

“Нестандартный” я имела в виду тот шрифт который по умолчанию не установлен в системе,То есть любой другой шрифт.


← →
VirEx ©   (2006-01-07 16:07) [4]

{1998-01-16
Функция загрузки и выгрузки шрифта.}
function LoadFont(sFontFileName: string; bLoadIt: boolean): boolean;
var
sFont, sAppDir, sFontRes: string;
begin
result := TRUE;

if bLoadIt then
begin
{Загрузка шрифта.}
if FileExists( sFontFileName ) then
begin
sFontRes := sFontFileName + #0;
if AddFontResource( @sFontRes[ 1 ] ) = 0 then
result := FALSE
else
SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
end;
end
else
begin
{Выгрузка шрифта.}
sFontRes := sFontFileName + #0;
result := RemoveFontResource( @sFontRes[1] );
SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
end;
end; {LoadFont}


← →
workdisk450 ©   (2006-01-07 16:53) [5]

Функция AddFontResourceEx с параметром  FR_PRIVATE
устанавливает, что только процесс, который вызвал функцию AddFontResourceEx, может использовать этот шрифт в отличии от предложенной функции LoadFont которая дает доступ
к шрифту всем программам.
У меня есть одна проблема с AddFontResourceEx .
Когда путь к  файлу шрифта написан как аргумент функции в виде строки string AddFontResourceEx("C:\ProgramFiles\Borland\Delphi7\Projects\temp\cristal.TTF",FR_PRIVATE,nil);
то все работает, но когда я пытаюсь получить список файлов шрифтов из рабочей директории программы и загрузить их в “RunTime” следующим образом:

.
.
.
FilesListName:TstringList {содержит имена файлов шрифтов}
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var I:byte;
begin
for I:=0 to FileListName.count-1 do
  begin
  AddFontResourceEx("C:\ProgramFiles\Borland\Delphi7\Projects\temp\’ + FileListName.Strings[I] .TTF",FR_PRIVATE,nil); - Incompatible types : String and PansiChar.
End;
End;

То компилятор выдает ошибку о не соответствии типов. Incompatible types : String and PansiChar.
Скажите пожалуйста как можно решить эту проблему (проблему не соответствия типов)


← →
VirEx ©   (2006-01-07 17:00) [6]

PChar это тот же string только в конце знак с кодом 0, (Char(0) или #0),

procedure TForm1.Button1Click(Sender: TObject);
var I:byte;
begin
for I:=0 to FileListName.count-1 do
 begin
 AddFontResourceEx(PChar("C:\ProgramFiles\Borland\Delphi7\Projects\temp\’ + FileListName.Strings[I] .TTF"),FR_PRIVATE,nil); - Incompatible types : String and PansiChar.
End;
End;

если будет ошибка то сделай переменную PChar, выдели ей память, заполни её значением и вставь в AddFontResourceEx


← →
VirEx ©   (2006-01-07 17:05) [7]

блин, вот так (я думаю список файлов у тебя уже с расширением ttf):
procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
for i:=0 to FileListName.count-1 do
begin
AddFontResourceEx(PChar("C:\ProgramFiles\Borland\Delphi7\Projects\temp\" + FileListName.Strings[i]),FR_PRIVATE,nil);
end;
end;


← →
FH   (2006-03-16 17:49) [8]

Встречный вопрос:
А как потом получить имя файла шрифта по имени шрифта?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
4-1136633780
workdisk450
2006-01-07 14:36
2006.06.11
Как использовать нестандартный шрифт, не устанавливая его?


1-1146557855
Nike
2006-05-02 12:17
2006.06.11
Русские буквы в Rave-контролах неверно отображаются


15-1147764176
targentor
2006-05-16 11:22
2006.06.11
Получение почты


15-1147840595
Layner
2006-05-17 08:36
2006.06.11
ActiveX в браузере IE6, браузер постоянно пишет:


2-1148583505
Benjamin
2006-05-25 22:58
2006.06.11
pleace help ME!!!!




   Наверх