15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту

Borland C++ Builder FAQ
Составлен по материалам форума на Исходниках.Ru
Содержание Последнее обновление: 14.02.2004

Как узнать, какие шрифты установлены в системе?

Автор: OlegGG, trainer
Исходная ссылка: - - -

Как получить список всех установленных шрифтов?
Использовать TScreen::Fonts.
Пример:
Memo1->Lines->Text = "В системе установлены следующие шрифты:\n\n" + Screen->Fonts->Text;


Как получить список только моноширинных шрифтов?
/* функция-перечислитель для шрифтов */
int CALLBACK EnumFontsProc(LOGFONT * lplf, TEXTMETRIC * lptm, DWORD dwType, LPARAM lpData){
   if( (lptm->tmPitchAndFamily&TMPF_FIXED_PITCH) == 0 ) {
	 TStrings * strlist = (TStrings *)lpData;
	 strlist->Add(lplf->lfFaceName);
   }
   return TRUE;
}
/* обработчик нажатия на кнопку, по которому будем создавать список шрифтов */
void __fastcall TForm1::Button1Click(TObject *Sender) {
   /* Очищаем TMemo */
   Memo1->Lines->Clear();
   /* инициируем перечисление */
   EnumFonts(Canvas->Handle,NULL,(FONTENUMPROC)&EnumFontsProc,(LPARAM)Memo1->Lines);
   /* теперь в Memo1 отображен список моноширинных шрифтов */
}