【发布时间】:2014-07-26 04:11:11
【问题描述】:
我想在希伯来语环境中的 TCanvas 上编写文本。我设置了WS_EX_LAYOUTRTL 标志:
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_LAYOUTRTL;
end;
当我使用 TextOut 在 TCanvas 上编写文本时,例如Canvas.TextOut(10, 10, 'Hello World'); 文本显示右对齐(我想要的),但写成镜像(我不想要的)。
您对如何保持表单的 RTL 布局和显示未镜像的文本有什么建议吗?希伯来语文本也是镜像的,所以它不应该是这样的。
我在顶部的标签中也添加了一个希伯来语文本“שם”(=name)。那个写法是对的。使用 TextOut 在画布上绘制的相同文本显示了镜像的希伯来词,这是错误的。
afik 设置 WS_EX_LAYOUTRTL 标志是表示窗口应该镜像对话框的正确方式,因为有一些 Delphi 控件不能正确实现 BiDi 模式。
【问题讨论】:
-
你能给我们一些屏幕截图吗?您将没有足够的代表将它们添加到 Q 中,但如果您在评论中发布链接,其中一个 mod 可以编辑它们。另外,您为什么使用
CreateParams而不是内置的 RTL 支持? -
BiDiMode 属性无法正常工作,无法从右到左显示整个表单。
-
我想提供帮助,但“无法正常工作”并未传达任何真实信息。请编辑问题以使这部分清晰。我担心您的
CreateParams方法是解决根本问题的错误方法。让我们首先弄清楚根本问题是什么。
标签: delphi canvas localization internationalization right-to-left