(德尔福 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中正确显示西方和亚洲字母的文本?需要做什么才能使其发挥作用?提前感谢您的帮助!