Delphi 2009在Windows7中的标签问题

我在delphi2009年开发应用程序。

Windows XP中,此代码工作正常

X := 70; Label1.Caption :=FloatToStr(X)+' %'; /// (70 %) 

在Windows 7中,相同的代码会生成一个不同的标签(% 70) ,字符的位置正在改变,所有的操作员都会在前面。

为了让这个问题对未来的访问者有一个连贯的答案,问题是BiDiMode 。 以下屏幕截图显示了问题中描述的行为的复制。

在这里输入图像描述

这是使用以下DFM文件生成的。

 object MyForm: TMyForm object Label1: TLabel Left = 8 Top = 8 Width = 23 Height = 13 BiDiMode = bdLeftToRight Caption = '70 %' ParentBiDiMode = False end object Label2: TLabel Left = 5 Top = 24 Width = 23 Height = 13 BiDiMode = bdRightToLeft Caption = '70 %' ParentBiDiMode = False end end