這比用 Screen.Fonts; 獲取麻煩一些.
本例效果圖:
代碼文件:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses GDIPOBJ, GDIPAPI;
procedure TForm1.FormCreate(Sender: TObject);
var
fontFamilyArr: array of TGPFontFamily;
fonts: TGPFontCollection;
fontCount: Integer;
str: string;
i: Integer;
begin
fonts := TGPInstalledFontCollection.Create;
fontCount := fonts.GetFamilyCount;
SetLength(fontFamilyArr, fontCount);
for i := 0 to fontCount - 1 do fontFamilyArr[i] := TGPFontFamily.Create;
fonts.GetFamilies(fontCount, fontFamilyArr, fontCount);
Memo1.Clear;
for i := 0 to fontCount - 1 do
begin
fontFamilyArr[i].GetFamilyName(str);
Memo1.Lines.Add(str);
end;
for i := 0 to fontCount - 1 do fontFamilyArr[i].Free;
fonts.Free;
end;
end.
窗體文件:object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 196
ClientWidth = 176
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Memo1: TMemo
Left = 0
Top = 0
Width = 176
Height = 196
Align = alClient
Lines.Strings = (
'Memo1')
ScrollBars = ssBoth
TabOrder = 0
ExplicitWidth = 339
ExplicitHeight = 206
end
end