Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как проверить наличие шрифта с заданным именем в системе?

v7: Как проверить наличие шрифта с заданным именем в системе?
Я
   Chai Nic
 
27.08.21 - 18:43
Собственно сабж. Нужно перед формированием печатной формы убедиться, что шрифт, который используется, установлен. Если нет - то выдать сообщение пользователю.
Как это сделать максимально просто, без парсинга реестра? Компоненты 1с++ и формекс подключены и используются.
   Aleksey
 
1 - 27.08.21 - 18:54
WSH=СоздатьОбъект("WScript.Shell");
Шрифты=WSH.SpecialFolders("Fonts");
   Chai Nic
 
2 - 27.08.21 - 18:55
(1) На 2003 и XP будет работать?
   Aleksey
 
3 - 27.08.21 - 18:56
Папки со шрифтами по моему еще в 95 была
   Базис
 
4 - 27.08.21 - 18:56
Поищи в конфе по слову "шрифт", вроде некоторые (Бух?) проверяли наличие шрифта для 1D-баркода.
   victuan1
 
5 - 30.08.21 - 07:17
(4) Нет, не нашел там того. Ни в самой конфигурации, ни в рег. отчетности.
   MWWRuza
 
6 - 30.08.21 - 14:54
Ничего там не проверялось. В случае отсутствия шрифта, просто выводились "циферки" и восклицательные знаки вместо ШК...
Может это в снеговике проверялось? х.з....
   Djelf
 
7 - 30.08.21 - 15:53
(0) А зачем перебором? С 1С++ можно и без перебора.
Функция ЕстьШрифт(ИмяШрифта,ФайлШрифта="")
    // ИмяШрифта  - так как он называется в реестре

    // ФайлШрифта - возвращается в случае его наличия в реестре

    Реестр=СоздатьОбъект("РеестрWin");
    Если Реестр.ОткрытьКлюч("HKEY_LOCAL_MACHINE","SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts","KEY_QUERY_VALUE")=0 Тогда
        Сообщить("Ошибка открытия Реестра Windows","!");
        Возврат 0;
    КонецЕсли;
    Возврат Реестр.ЗапроситьЗначение(ИмяШрифта,ФайлШрифта);
КонецФункции

   Tatitutu
 
8 - 30.08.21 - 17:22
Если ФС.СуществуетФайл(фс.windowsКаталог()+"\Fonts\eang000.ttf")=0 Тогда

так не подойдет ?
   Chai Nic
 
9 - 31.08.21 - 08:14
(7)(8) Шрифты могут быть установлены и в профиль пользователя. Так что придется проверять ещё и ветку HKCU (ну или папку профиля).

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.