如何实现取当前Windows操作系统使用的Font,及其大小?

解决方案 »

  1.   

    function GetMenuFontSize: Integer; //字号
    var
    ncm: TNonClientMetrics;
    PixelsPerInch: integer;
    begin
    ncm.cbSize := sizeof(TNonClientMetrics);
    SystemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof(NONCLIENTMETRICS),@ncm,SPIF_UPDATEINIFILE);
     PixelsPerInch := GetDeviceCaps(GetDC(0), LOGPIXELSY);
     Result := -MulDiv(ncm.lfMenuFont.lfHeight, 72, PixelsPerInch);
    end;procedure TForm1.Button1Click(Sender: TObject);//调用
    begin
      edit1.Text:=inttostr(GetMenuFontSize);
    end;
      

  2.   

    combobox1.Items.add(screen.Fonts.GetText);
      

  3.   

    combobox1.Items.Assign(Screen.Fonts);//取系统所有字体
      

  4.   

    To:jackie168(花好月圓)
    谢谢你!字体大小是能取出来,那字体类型呢?(如是宋体还是楷体等等)
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
      for i:=0 to screen.Fonts.Count-1 do
        begin
           combobox1.Items.Add(screen.Fonts.Strings[i]);
        end;
    end;
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Lines.Values['Screen.MenuFont.Size'] := IntToStr(Screen.MenuFont.Size);
      Memo1.Lines.Values['Screen.MenuFont.Name'] := Screen.MenuFont.Name;  Memo1.Lines.Values['Screen.HintFont.Size'] := IntToStr(Screen.HintFont.Size);
      Memo1.Lines.Values['Screen.HintFont.Name'] := Screen.HintFont.Name;  Memo1.Lines.Values['Screen.IconFont.Size'] := IntToStr(Screen.MenuFont.Size);
      Memo1.Lines.Values['Screen.IconFont.Name'] := Screen.MenuFont.Name;
    end