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

Отображение списка шрифтов

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

Отображение списка шрифтов

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

//With a Callback function: 
//************************ 

function EnumFontClBack(var lp: TEnumLogFont;
   var tm: TNewTextMetric;
   dwType: DWORD;
   lpData: lParam): Integer; stdcall;
 begin
   Result := 1;
   with TForm1(lpData), Combobox1 do
   begin
     Items.Add(lp.elfLogFont.lfFaceName);
   end;
 end;


 procedure TForm1.FormShow(Sender: TObject);
 begin
   EnumFontFamilies(Canvas.Handle, nil, @EnumFontClBack, Integer(Self));
 end;

 procedure TForm1.ComboBox1Change(Sender: TObject);
 begin
   label1.Font.Name := Combobox1.Text;
 end;


 // Easier Way: 
//***************************************** 

{ 
 To show the items in the corresponding font 
 The Style of the Listbox should be lbOwnerDrawVariable 
}


     procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
   Rect: TRect; State: TOwnerDrawState);
 begin
   with ListBox1 do
   begin
     Canvas.fillrect(rect);
     Canvas.Font.Style := [fsbold];
     Canvas.Font.Name  := Listbox1.Items[Index];
     Canvas.textout(rect.Left, rect.Top, Listbox1.Items[Index]);
   end;
 end;

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

 procedure TForm1.ComboBox1Change(Sender: TObject);
 begin
   label1.Font.Name := ComboBox1.Items[ComboBox1.ItemIndex];
 end;

Привет! Я переведу текст на русский язык.

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

Разбор кода:

Procedure EnumFontClBack Эта callback-функция вызывается функцией EnumFontFamilies. Она принимает четыре параметра: lp, tm, dwType и lpData. Переменная Result устанавливается в 1, что указывает на продолжение процесса перечисления.

В процедуре доступ к форме (TForm1) через параметр lpData и добавление каждого имени шрифта в комбо-бокс (ComboBox1). Это пополняет комбо-бокс списком доступных шрифтов на системе.

Procedure FormShow Это обработчик события для события отображения формы. Когда форма отображается, она вызывает функцию EnumFontFamilies, передавая handle канваса и адрес callback-функции EnumFontClBack, а также целочисленное значение, представляющее форму (Self). Это запускает процесс перечисления шрифтов.

Procedure ComboBox1Change Это обработчик события, вызываемый при выборе нового элемента в комбо-боксе. Он устанавливает имя шрифта метки (Label1) в выбранное имя шрифта.

Раздел "Easier Way" Код в этом разделе - это альтернативная реализация, использующая список с владельцем для отображения шрифтов. Список имеет свойство lbOwnerDrawVariable, что позволяет ему рисовать каждый элемент самостоятельно.

В этой реализации процедура ListBox1DrawItem вызывается для каждого элемента в списке. Она заполняет прямоугольник жирным шрифтом и пишет имя шрифта с помощью метода Canvas.TextOut.

Procedure FormCreate Это обработчик события, вызываемый при создании формы. Он устанавливает элементы комбо-бокса в список доступных шрифтов на системе, полученный из свойства Screen.Fonts.

Procedure ComboBox1Change (альтернативная реализация) Это обработчик события, похожий на предыдущий, но использующий выбранное имя шрифта для установки шрифта метки (Label1) вместо использования списка с владельцем.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-07 00:17:52/0.0031890869140625/0