Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использовать EnumFontFamilies

Delphi , Графика и Игры , Шрифты

Использовать EnumFontFamilies

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Example for the use of EnumFontFamilies. This example requires two 
  listboxes on a form. 

  Beispiel fur die Verwendung vo EnumFontFamilies. Das Beispiel benotigt 
  2 Listboxen auf der Form. 
}


 procedure TForm1.FormCreate(Sender: TObject);
 begin
   Listbox1.Items.Assign(Screen.Fonts);
 end;

 function EnumProc(var elf: TEnumLogFont;
   var ntm: TNewTextmetric;
   FontType: Integer;
   listbox: TListbox): Integer; stdcall;
 var
   S: string;
 begin
   if fonttype = TRUETYPE_FONTTYPE then
   begin
     listbox.Items.Add(Format('Name: %s', [elf.elfFullName]));
     listbox.Items.Add(Format('Style: %s', [elf.elfStyle]));
   end
   else
     listbox.Items.Add(Format('Name: %s', [elf.elfLogfont.lfFacename]));
   listbox.Items.Add(Format('Size: %d', [elf.elfLogFont.lfHeight]));
   listbox.Items.Add(Format('Weight: %d', [elf.elfLogFont.lfWeight]));
   if elf.elfLogFont.lfItalic <> 0 then
     listbox.Items.Add('This font is italic');
   case FontType of
     DEVICE_FONTTYPE: S   := 'device font';
     RASTER_FONTTYPE: S   := 'raster font';
     TRUETYPE_FONTTYPE: S := 'truetype font'
       else
         S := 'unknown font type';
   end;
   listbox.Items.Add(Format('This is a %s', [S]));
   Result := 1;
 end;

 procedure TForm1.ListBox1Click(Sender: TObject);
 begin
   listbox2.Clear;
   with listbox1 do
     if ItemIndex >= 0 then
       EnumFontFamilies(Self.Canvas.Handle, PChar(Items[ItemIndex]),
         @EnumProc, Longint(Listbox2));
 end;

Пример использования функции EnumFontFamilies в Delphi для перечисления семейств фонтов и отображения информации о каждом семействе фонтов в двух списках.

Процедура FormCreate Процедура FormCreate вызывается при создании формы. Она присваивает коллекцию Screen.Fonts свойству Items первого списка (Listbox1). Это настраивает список для отображения списка всех доступных семейств фонтов.

Функция EnumProc Функция EnumProc - это callback-функция, вызываемая для каждого перечисленного семейства фонтов функцией EnumFontFamilies. Она принимает четыре параметра:

  • elf: указатель на структуру TEnumLogFont, содержащую информацию о семействе фонтов.
  • ntm: указатель на структуру TNewTextmetric, содержащую информацию о метриках семейства фонтов (например, размер, стиль).
  • FontType: целочисленное значение,specifying тип семейства фонтов (устройство, растровое или TrueType).
  • listbox: список (Listbox2), в котором будет отображаться информация.

Функция выполняет следующие действия:

  1. Проверяет, является ли семейство фонтов TrueType, и добавляет его полное имя в список.
  2. Добавляет стиль семейства фонтов (например, жирный, курсив) в список.
  3. Добавляет размер и вес семейства фонтов в список.
  4. Проверяет, является ли семейство фонтов курсивом, и добавляет сообщение в список, указывающее это.
  5. Добавляет сообщение в список, указывающее тип семейства фонтов (устройство, растровое или TrueType).

Функция возвращает значение 1, указывая, что она успешно обработала семейство фонтов.

Процедура ListBox1Click Когда пользователь выбирает элемент в первом списке (Listbox1), вызывается эта процедура. Она очищает второй список (Listbox2) и вызывает функцию EnumFontFamilies с выбранным семейством фонтов, callback-функцией EnumProc и вторым списком как параметрами. Это пополняет второй список информацией о выбранном семействе фонтов.

Альтернативное решение Если вы хотите отображать более детализированную информацию о каждом семействе фонтов, можно модифицировать функцию EnumProc для добавления дополнительных элементов в список или использовать другой контрол (например, мему) для отображения информации. Вы также можете использовать другие функции Delphi, такие как GetFontInfo, для получения дополнительной информации о каждом семействе фонтов.

В целом, это пример демонстрирует использование EnumFontFamilies для перечисления семейств фонтов и отображения информации о каждом семействе фонтов в двух списках.

В статье описывается пример использования функции EnumFontFamilies в Delphi для перебора списка доступных шрифтов на компьютере и отображения информации о них в списке.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шрифты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 02:14:46/0.0033650398254395/0