Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

Несколько вопросов по шрифтам и еще один.   Найти похожие ветки 

 
Начинающий2   (2005-06-24 21:13) [0]

Привет дельфяне! Давненько я не заглядал сюды, как и не занималси програмированием, да вот появились вопросы.

1. Как получить список установленных шрифтов поддерживающих только нужную национальную кодировку. Как получить в список все шрифты, я знаю, проблема втом как отсеить ненужные.
2. Как узнать какой Charset(набор символов) поддерживает выбранный шрифт.
3. В справке написано, что для получерия доступа к своему шрифту, его надо установить. Для этого используется API функция AddFontResource, вот только как её использовать я не понял, подскажите плиз.
4. По OnMouseMove я могу узнать что курсор попал на компанент, а вот как узнать что курсор уже не на компоненте, OnExit есть не для всех компонентов.


 
begin...end ©   (2005-06-24 22:04) [1]

1. Получать с помощью EnumFontFamilies и внутри callback-функции смотреть на содержимое структуры ENUMLOGFONT, а именно на поле elfLogFont.lfCharSet.
2. EnumFontFamiliesEx -- заполнить lpLogfont: lfFaceName (имя шрифта) и lfCharset (DEFAULT_CHARSET), далее см. п. 1 и справку.
3. Э-э-э... А что же там непонятного? Передаёте в качестве параметра путь к файлу со своим шрифтом, да и всё. Ну, ещё можно оповестить нужные окна об появлении нового шрифта. Подробности -- в справке.
4. OnExit не имеет отношения к уходу курсора мыши с компонента. Используйте сообщения CM_MOUSEENTER и CM_MOUSELEAVE.


 
Начинающий2   (2005-06-24 22:20) [2]

По 1,2 и 4 спасибо, думаю разберусь. А вот по 3 не совсем понятно, я делаю так:

begin
AddFontResource("адрес и имя шрифта");
end;


Да тока шрифт не устанавливается, как в принципе и ошибок не каких.


 
begin...end ©   (2005-06-24 22:22) [3]

> Начинающий2   (24.06.05 22:20) [2]

Что возвращает функция?


 
Начинающий2   (2005-06-24 22:40) [4]

Не проверял, я через процедуру запускал по батонклик. А в справке не одного примера по шрифтам, по вопросам что задал. Может не так искал, мож че подскажите.


 
Начинающий2   (2005-06-24 22:55) [5]

Ладно, отрубаюсь, завтра еще приду, может кто еще что подскажет до завтра.


 
TUser ©   (2005-06-25 05:43) [6]

procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
   AddFontResource(PAnsiChar(OpenDialog1.FileName));
end;


 
Ищущий ответа   (2005-06-25 08:23) [7]

По добавлению шрифта:
 uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.LazyWrite:=false;
reg.OpenKey("Software\Microsoft\Windows\Currentversion\Fonts",false);
reg.WriteString("BarCode (TrueTupe)","BarCode.TTF");
reg.CloseKey;
reg.Free;
AddFontResource("C:\Windows\fonts\BarCode.TTF");
SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0);
RemoveFontResource("C:\Windows\fonts\BarCode.TTF");
SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0);
end;


 
begin...end ©   (2005-06-25 10:30) [8]

> Начинающий2   (24.06.05 22:40) [4]

> Не проверял

Извините, а тогда на чём основывается Ваше утверждение из [2]: "в принципе и ошибок не каких"? Результат, возвращаемый функцией AddFontResource, как раз и скажет о том, есть ошибки или нет. И даже можно будет определить, что именно за ошибка возникла.

Читаем справку: If the function succeeds, the return value specifies the number of fonts added. If the function fails, the return value is zero. To get extended error information, call GetLastError. Вывод: если функция возвратила ноль, надо вызвать GetLastError, чтобы получить код ошибки. А если нужно получить текст ошибки, следует передать этот код в функцию SysErrorMessage (или FormatMessage). Но можно и проще -- использовать Delphi-функцию Win32Check, которая всё это сделает сама. И вот только после этого можно будет утверждать, была какая-то ошибка или нет.

Пример: Win32Check(AddFontResource(путь_к_файлу_шрифта) <> 0).


 
Начинающий2   (2005-06-25 21:15) [9]

Спасибо всем, уже разобрался с добавлением и удалением шрифта. По первым двум вопросам еще не совсем, но думаю дойду сам. Если нет еще раз спрашу.



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

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
1-1120032563
mefres
2005-06-29 12:09
2005.07.18
перевод числовых денег в строковые


8-1111400251
man1
2005-03-21 13:17
2005.07.18
где можно найти исходники граф. редактора


14-1119952514
CatAndCAt
2005-06-28 13:55
2005.07.18
Издатели ПО


6-1111061566
FUNKy
2005-03-17 15:12
2005.07.18
ICS и virtual mapping


4-1116386312
Владимир_К
2005-05-18 07:18
2005.07.18
как вызвать окно выбора папки?