在Delphi中使用RTL布局的工具栏?

时间:2014-04-15 20:02:34

标签: delphi layout delphi-7 toolbar right-to-left

问题非常简单 - 如何将工具栏的布局更改为从右到左(即图标与工具栏右侧对齐,顺序相反 - 第一个是在最右边,第二个是在它的左边,依此类推)在Delphi 7中

TToolBar没有发布BiDiModeParentBiDiMode属性,即使我在拦截器类中发布它们,当我将BiDiMode设置为{时,也没有任何变化{1}}(当然使用bdRightToLeft = SysLocale.MiddleEast)。

我尝试使用TrueWS_EX_LAYOUTRTL设置到工具栏,但结果非常糟糕 - 工具栏重新绘制非常糟糕。此外,图标本身也是镜像的,我不想要它,我只是想从右到左的顺序。

2 个答案:

答案 0 :(得分:2)

Delphi不会为TToolbar或TToolButton公开BiDiMode,因为底层的Windows常用ToolBar控件不支持它们。请参阅ToolBar的MSDN文档中配置工具栏的可能值 - 配置它的所有可能值(包括发送TB_SETEXTENDEDSTYLE时可用的包含与工具栏LTR / RTL方向相关的任何内容的值。

您可以使用带有TB_SETEXTENDEDSTYLE标记的TBSTYLE_EX_VERTICAL配置水平或垂直方向(根据文档不建议这样做),但不能使用LTR / RTR按钮对齐。您可以使用带有DT_RTLREADING的{​​{3}}配置文本方向性,但不会改变工具栏左侧到右侧的按钮对齐方式。

答案 1 :(得分:1)

如何对齐右边的最后一个按钮:

在按钮之前按下面板,设置Caption:=''和BevelOuter:= bvNone并在FormResize()过程中设置

procedure TForm1.FormResize(Sender: TObject);
begin
    panelSep.Width:=0;
    panelSep.Width:=ToolBar1.Width - tbLastButton.Left - tbLastButton.Width;
end;