這比用 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.