Текущий архив: 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.47 MB
Время: 0.039 c