2

(德尔福 XE4/Win 7)

当同时显示西方和亚洲字符时,TRichEdit 组件的行为很奇怪。演示程序(表单、列表框、richedit,默认设置来自 Object Inspector;从日本网站复制的亚洲字符):

unit Unit1;

interface

uses
  System.Classes, Vcl.Forms, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Controls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  arText: array[0..4] of string
        = ('00  AbC DEfgH  查找的资  AbC DEfgH  查找的资',
           '01  前大  ABCabc  為島  ABCabc  或繩  ABCabc',
           '02                  AbC DEfgH  繩最  ABCabc',
           '03  ABCabc  全面積  ABCabc  全面積  ABCabc',
           '04  方公里  AbC DEfgH  方公里');

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i:=0 to 4 do
  begin
    ListBox1.Items.Add(arText[i]);
    RichEdit1.Lines.Add(arText[i]);
  end;
end;

end.

演示运行:

在列表框中,所有西方字符都具有正确且相同的大小。然而,在 Richedit 中,西方字符只有在前面没有亚洲字符时才能正确显示。否则,所有后面的西方字符都以缩小的尺寸显示。

注意:如果您在程序运行时编辑文本,插入的西方字符将以正确的大小显示 - 无论它们插入的位置如何(插入的字符标记为红色):

有没有办法在richedit中正确显示西方和亚洲字母的文本?需要做什么才能使其发挥作用?提前感谢您的帮助!

4

0 回答 0