【问题标题】:Toolbar with RTL layout in Delphi?Delphi中带有RTL布局的工具栏?
【发布时间】:2014-05-30 09:02:54
【问题描述】:

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

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

我尝试使用SetWindowLongWS_EX_LAYOUTRTL 设置为工具栏,但结果确实很混乱——工具栏被重新绘制得非常糟糕。再加上图标本身是镜像的,我不希望这样,我只希望它们按从右到左的顺序排列。

【问题讨论】:

  • 我认为没有办法做到这一点。您可以尝试在左侧添加一些分隔符,然后动态设置它的大小,以便您的按钮显示在右侧。
  • 这是我的 B 计划,但我希望避免它。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 2018-07-11
      相关资源
      最近更新 更多