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

Вывод шрифтов в списке в виде самих шрифтов

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

Вывод шрифтов в списке в виде самих шрифтов


- Что общего между Биллом Гейтсом и Россией?
- Одинаковый валютный запас


unit Fontlist;

interface

uses
  Windows, Classes, Graphics, Forms, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    FontLabel: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure DrawItem(Control: TWinControl; index: Integer; Rect: TRect;
      State: TOwnerDrawState);
    procedure ListBox1MeasureItem(Control: TWinControl; index: Integer;
      var Height: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

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

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  FontLabel.Caption := ListBox1.Items[ListBox1.ItemIndex];
end;

procedure TForm1.DrawItem(Control: TWinControl; index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ListBox1.Canvas do
  begin
    FillRect(Rect);
    Font.name := ListBox1.Items[index];
    Font.Size := 0; // use font's preferred size
    TextOut(Rect.Left+1, Rect.Top+1, ListBox1.Items[index]);
  end;
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; index: Integer;
  var Height: Integer);
begin
  with ListBox1.Canvas do
  begin
    Font.name := Listbox1.Items[index];
    Font.Size := 0; // use font's preferred size
    Height := TextHeight('Wg') + 2; // measure ascenders and descenders
  end;
end;

end.

Это приложение на языке Delphi, которое отображает список шрифтов, установленных на системе, в контроле TListBox. Имена шрифтов отображаются в своем стиле, что позволяет создать интересный визуальный представление семейства шрифта.

Вот разбивка кода:

  • Процедура FormCreate инициализирует список с доступными шрифтами, используя свойство Screen.Fonts.
  • Процедура ListBox1Click обновляет надпись TLabel-контрола (FontLabel) с выбранным именем шрифта.
  • Процедура DrawItem отвечает за отображение каждого элемента в списке. Она заполняет прямоугольник, устанавливает шрифт на текущий элемент, а затем рисует текст с помощью TextOut.
  • Процедура ListBox1MeasureItem рассчитывает высоту каждого элемента на основе предпочтительного размера шрифта.

Интересная часть - это использование самого шрифта для отображения текста в списке. Это означает, что вы увидите актуальный стиль и размер для каждого элемента, что делает его визуально привлекательным способом отображать информацию о шрифтах.

Один из потенциальных улучшений мог бы быть добавлением дополнительных функций, таких как:

  • Возможность выбора нескольких шрифтов или создания пользовательского набора шрифтов.
  • Проведение более детальной информации о каждом шрифте, например, его семейство, стиль (например, жирный, курсив) и диапазон размеров.
  • Возможность просмотра выбранного шрифта в отдельной области формы.

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

В статье описывается пример программы на Delphi, которая выводит список доступных шрифтов в виде самих шрифтов с использованием компонента TListBox и методов DrawItem и MeasureItem.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:30:07/0.0055439472198486/1