4

TFontDialog が Screen.Fonts よりも少ないフォントを提供するのはなぜでしょうか? (たとえば、Arial* フォント、Comic フォントなどは TFontDialog に表示されません)

また、TFontDialog で得られるフォント リストは WordPad と同じようですが、Screen.Fonts で得られるフォント リストは基本的に Word と同じです。

洞察をありがとうございました!

PS: Delphi XE、Windows 7

PS: 関連する SO トピック:

  1. EnumFontFamiliesEx 関数で列挙するときにフォントが多すぎる
  2. Delphi によるシステム フォントの検索
  3. 外部フォントの使い方

PS: 関連する Web ページ:

  1. すべてのフォント @ borland.newsgroups.archived を表示する TFontDialog
  2. すべてのフォント @ delphigroups を表示する TFontDialog

システム アプリ

unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    lst1: TListBox;
    dlgFont1: TFontDialog;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  lst1.Items.AddStrings(Screen.Fonts);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  dlgFont1.Device := fdBoth;
  if dlgFont1.Execute then
  begin

  end;
end;

end.    
4

2 に答える 2

6

Screen.FontsRegistry \ HKCU \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Font Management \ Inactive Fontsで管理されている非表示のフォントを含む、インストールされているすべてのフォントを返します。(ソース)どうやら、TFontDialogこれらの隠されたフォントを表示しません。

さらに、にリストされている一部のフォントは、の[フォント]コンボボックスに記載されScreen.Fontsていませんが、[フォントスタイル]コンボボックスに追加されています。Arialを例にとると、Fontスタイルには10個のアイテムがリストされています。これは、ArialArial Black、およびArialNarrowのフォントの組み合わせのようです。TFontDialog

于 2012-07-03T01:00:17.727 に答える