Delphi 如何将表单标题栏的布局更改为RTL?

Delphi 如何将表单标题栏的布局更改为RTL?,delphi,delphi-xe2,Delphi,Delphi Xe2,由于下面的脚本,我可以将整个表单布局更改为RTL。 结果: 但是,如何只更改表单标题栏而不更改表单中的整个控件?我搜索了MSDN,发现这是镜像问题。通过将WS_EX_NOINHERITLAYOUT添加到Params.ExStyle,可以解决此问题: 你的目标语言是什么?您希望标题栏小部件发生什么变化?按钮和系统菜单图标。我使用从右到左的语言,希望标题栏项目与我的语言相匹配。在英语和其他LTR语言中,表单标题必须向右,按钮必须向左,方向正好相反。托管一个无边界表单。我不明白。你说的主机是什么意

由于下面的脚本,我可以将整个表单布局更改为RTL。

结果:


但是,如何只更改表单标题栏而不更改表单中的整个控件?

我搜索了MSDN,发现这是镜像问题。通过将WS_EX_NOINHERITLAYOUT添加到Params.ExStyle,可以解决此问题:


你的目标语言是什么?您希望标题栏小部件发生什么变化?按钮和系统菜单图标。我使用从右到左的语言,希望标题栏项目与我的语言相匹配。在英语和其他LTR语言中,表单标题必须向右,按钮必须向左,方向正好相反。托管一个无边界表单。我不明白。你说的主机是什么意思?@SAM-我的意思是通过手动对接f.I.在RTL布局表单中创建LTR布局表单的父级。但是你的解决方案更好。
procedure TfrmTest.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
    Params.ExStyle := WS_EX_LEFT or WS_EX_LTRREADING or WS_EX_LEFTSCROLLBAR
     or WS_EX_LAYOUTRTL;
    {WS_EX_LEFT to set the text caption to the right,
    use WS_EX_RIGHT to set the caption to the left}
end;
procedure TfrmTest.CreateParams(var Params: TCreateParams);
begin
  ... 
  Params.ExStyle := ... or WS_EX_NOINHERITLAYOUT;
end;