具有不同字体的列表框

19201216-b63f044a59ba422f970a3228e4014c51.png
在一个 LISTBOX 中显示所见所得字体 这个方法设置Combobox同样有效
ComboboxFont
具有不同字体的列表框
    
 
 
 
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;
      var Height: Integer);
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure ComboBox1MeasureItem(Control: TWinControl; Index: Integer;
      var Height: Integer);
    procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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

  ComboBox1.Style:=csOwnerDrawFixed;
  ComboBox1.Items:=Screen.Fonts;
end;
    
//------------------------------------------------------------------------------
//ListBox
procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
  var Height: Integer);
var
   h : integer ;
begin
     with Control as TListBox do
     begin
        Canvas.Font.Name := Items[Index] ;
        h := Canvas.TextHeight(Items[Index]) ;
     end ;
     Height := h ;
end ;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
     with Control as TListBox do
     begin
        Canvas.Font.Name := Items[Index] ;
        Canvas.FillRect(Rect) ;
        Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]) ;
     end ;
end ;

//------------------------------------------------------------------------------
//Combobox

procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer;
  var Height: Integer);
var
   h : integer ;
begin
     with Control as TComboBox do
     begin
        Canvas.Font.Name := Items[Index] ;
        h := Canvas.TextHeight(Items[Index]) ;
     end ;
     Height := h ;
end ;


procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
     with Control as TComboBox do
     begin
        Canvas.Font.Name := Items[Index] ;
        Canvas.FillRect(Rect) ;
        Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]) ;
     end ;
end ;
//------------------------------------------------------------------------------






end.




附件列表

 

转载于:https://www.cnblogs.com/xe2011/p/3144855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值