Здравствуйте, уважаемые подписчики! Сегодня поговорим о том, как
в одном списке писать разными шрифтами. Пригодиться это может при
выборе шрифта. Удобнее, если каждый шрифт в списке написан не
стандартным "MS Sans Serif", а самим собой.
Если свойство Style компонента ListBox установлено в
lbOwnerDrawVariable, то вывод элементов на экран, а так же
определение их высоты происходит в обработчиках событий DrawItem и
MeasureItem. Здесь это и используется. Причем размер шрифта ставится
по умолчанию. Для этого Font.Size устанавливается в 0.
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items := Screen.Fonts;
ListBox1.Style := lbOwnerDrawVariable;
end;
// Определяется высота элемента спискаprocedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
beginwith ListBox1.Canvas dobegin
Font.Name := ListBox1.Items.Strings[index];
Font.Size := 0; // Размер шрифта – по умолчанию
Height := TextHeight(ListBox1.Items.Strings[index]) + 2;
end;
end;
// Вывод названия шрифтаprocedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
beginwith ListBox1.Canvas dobegin
Font.Name := ListBox1.Items.Strings[index];
Font.Size := 0; // Размер шрифта – по умолчанию
TextOut(Rect.Left + 1, Rect.Top + 1, ListBox1.Items.Strings[index]);
end;
end;