TRichEditで任意のフォントを指定すると、設計時と実行時の画面表示が異なることがある

提供: Support
移動先: 案内検索

対象となる製品

  • RAD Studio XE8以降
  • Delphi XE8以降
  • C++Builder XE8以降

問題

Windows 10のディスプレイ設定 > "テキスト、アプリ、その他の項目のサイズを変更する"の設定値を"100%(規定値)"から150%に変更し、TRichEditで特定のフォントを指定すると、VCLフォームデザイナ上のRichEditの表示と実行時のRichEditの表示が下図のように異なります。

(下図の例は、TRichEditのFont->Name="Courier New"、Font->Size=15、Font->Charset="DEFAULT_CHARSET"に設定)


Thumb03001116ujpn.png


この問題はRichEdit固有の不具合で、特定のキャラクタセットやフォントの組み合わせによって、RAD Studio/C++Builder/Delphi XE8以降のバージョンで発生します。

解決

この問題を解決する方法は、以下の手順の通りです。

  1. TRichEdit->Font->CharsetをSHIFTJIS_CHARSETからDEFAULT_CHARSETへ変更
  2. Vcl.ComCtl.pasソースコードの以下の箇所を修正
    (修正前)
    procedure TCustomRichEdit.CreateWnd; 
    .. 
    .. 
    inherited CreateWnd; 
    Font.Charset := GetDefFontCharSet; 
    .. 
    ..
    
    (修正後)
    procedure TCustomRichEdit.CreateWnd; 
    .. 
    .. 
    inherited CreateWnd; 
    if (SysLocale.FarEast) and not (SysLocale.PriLangID = LANG_JAPANESE) then 
    Font.Charset := GetDefFontCharSet; 
    .. 
    ..
    
  3. 修正したVcl.ComCtl.pasをプロジェクトに追加し、ビルドする
  4. アプリケーションを実行すると、下図のようにRichEditは設計時と実行時で同じ表示になります。
    サムネイルの作成エラー: ファイルがありません


修正したVcl.ComCtl.pasの適用方法は、以下のドキュメントを参照してください。