【问题标题】:How to set exact Height of TToolButton at design-time?如何在设计时设置 TToolButton 的精确高度?
【发布时间】:2017-04-13 19:33:47
【问题描述】:

在 Delphi 10.1.2 VCL 应用程序中,我在 TToolBar 上有一个 TToolButton

object tlbDocProperties: TToolBar
  AlignWithMargins = True
  AutoSize = False
  Left = 1
  Top = 28
  Width = 422
  Height = 28
  Margins.Left = 0
  Margins.Right = 0
  BorderWidth = 1
  ButtonWidth = 148
  Color = clBtnFace
  DoubleBuffered = True
  EdgeInner = esNone
  EdgeOuter = esRaised
  Images = cxImageList16Bookmarks
  Indent = 5
  List = True
  ParentColor = False
  ParentDoubleBuffered = False
  ShowCaptions = True
  TabOrder = 0
  Transparent = False
  object btnEditDocProps: TToolButton
    AlignWithMargins = False
    Left = 5
    Top = 0
    Height = 22
    Down = False
    AutoSize = False
    Caption = 'Edit Document Properties'
    ImageIndex = 56
    Style = tbsCheck
    OnClick = btnEditDocPropsClick
  end
end

每当我尝试在设计时将 TToolButton 的高度从 22 更改为 24 时,它都会自动恢复为 22。我在设计时为 TToolButtonTToolBar 尝试了许多不同的设置- 时间,但它总是会回弹。

那么如何在设计时将 TToolButton 的高度从 22 更改为 24?

【问题讨论】:

    标签: delphi toolbar delphi-10.1-berlin


    【解决方案1】:

    我发现了一个非常实用的技巧:

    我没有为 TToolButton 使用 16x16 图标,而是使用来自 16x18 ImageList(宽度 = 16,高度 = 18)的 16x18 图标。

    现在TToolButton 的高度会根据需要自动调整为 24!

    要将按钮设置为所需的高度,请在图标编辑器中修改字形的画布高度,方法是在字形的顶部和底部添加一些透明像素,例如:

    使用上面的TToolBar 示例,我从几个测试中得出了这个经验规则:

    Button Height := Image Height + 6
    

    这意味着:字形高度为 18 时,按钮高度为 24,字形高度为 20 时,按钮高度为 26,依此类推。

    记住:这仅适用于上述配置,即当ToolBar.List = TrueToolbar.ShowCaptions = True 时。当然,您需要一个ToolBar.Images ImageList,其中ImageList.Height 与字形高度匹配。

    【讨论】:

    • 我想使用 16x18 字形并且按钮高度为 26。我该怎么做。这就是问的问题。你能回答吗?
    • 只需使用具有相关高度的字形。通过在字形的顶部和底部添加一个透明区域来更改字形的画布大小。
    • 您还没有真正回答所提出的问题。
    • 这次不让我招惹:)
    • @user1580348 不错的收获。我从没想过通过更改 ToolButton 图标大小也会影响按钮本身的大小。我会尽量记住这个技巧,因为它总有一天会派上用场。
    【解决方案2】:

    禁用TToolBarShow Caption 属性,因为它会导致按钮根据标题大小调整大小

    TToolBar.ShowCaptions

    您还可以在此处阅读有关您的问题的一种可能的解决方案

    Why does a TToolBar calculate button widths automatically when ShowCaption is set True

    请注意,您还可以手动放置TToolbar 上的标准TButtonTSpeedButton 等其他按钮。它们都允许您显示它们的标题,而无需启用 TToolBar.ShowCaptions 属性,但它们看起来确实不同。

    编辑: 将 TToolBar 按钮的高度增加到 24 的另一种解决方案是增加 TToolBar.Font.Size

    当使用Tahoma 作为字体时,我必须将大小从默认的 8 增加到 11,以使按钮高度为 24。

    因此,稍微调整一下字体大小,为自己找到合适的价值。

    【讨论】:

    • 不幸的是,这些原本聪明的建议在我的情况下不起作用,因为我需要按钮上的标题。当我在工具栏上关闭 ShowCaptions 时,我可以将按钮高度设置为 24,但是一旦我再次打开 ShowCaptions,按钮高度就会自动回到 22。我不能使用其他按钮,因为我有几个工具栏该应用程序应该都是相同的视觉风格。而且我也不能增加字体大小,因为这会使按钮标题看起来很丑。
    • 即使我在工具栏上使用TSpeedButton,它也总是会快速回到 22 的高度!
    【解决方案3】:

    将工具栏放在面板中。 将面板字体大小和类型设置为您喜欢的任何内容。 在工具栏中,将父字体设置为“True”。 工具栏按钮的大小将自动调整为与其所在面板的字体一致。 然后只需调整该面板的字体大小和类型,直到获得所需的工具按钮大小。 您不需要在工具栏中打开或关闭 ShowCaption。没关系。 问候 格雷姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2017-06-12
      • 2019-02-19
      • 1970-01-01
      • 2017-10-17
      • 2017-06-28
      相关资源
      最近更新 更多