【问题标题】:Centering a checkbox without a caption inside a TGridPanel在 TGridPanel 中将没有标题的复选框居中
【发布时间】:2016-04-18 04:42:24
【问题描述】:

用谷歌搜索,恐怕找不到答案。

这是我目前的情况:


而不是让这些复选框与左侧对齐,我希望它们像这样居中(显然是photoshopped):


有人知道如何使用 VCL 实现这一目标吗?谢谢。

编辑: 这些组件位于 TGridPanel 内,无论出于何种原因,Left 和 Top 属性都不会影响组件在单元格中的位置。我还寻找了没有运气的任何布局属性。

【问题讨论】:

  • 这个算法适合你的情况吗? checkbox.left := (cell.width - checkbox.width) div 2
  • 我承认,我应该提到这些组件位于 TGridPanel 内,无论出于何种原因,Left 和 Top 属性都不会影响组件在单元格中的位置。

标签: delphi vcl


【解决方案1】:

TGridPanel 内的控件自动居中对齐。如果您将复选框的宽度减小到正确的值,则应按要求居中。请注意,如果您将尺寸减小太多,复选框将会缩小。

【讨论】:

  • 恐怕没有用。因为 TCheckbox 组件具有标题属性,所以复选框始终位于文本的左侧或右侧。无论我将宽度设置为什么,都没有什么不同。不过感谢您的帮助。
  • 我签入了 Delphi 10 Seattle Update 1,它确实有效。你用的是什么 Delphi 版本?
  • 很遗憾,由于各种组件不是最新的,我们被困在 XE5 中。
  • 如果复选框的Caption 为空白,您应该能够将其Width 设置为复选框图像的大小(或接近它,考虑复选框与其标题之间的间距) .另一种方法是找到一个允许禁用额外间距的第 3 方复选框控件。或者,从 TCustomControl 创建您自己的自定义复选框控件,以呈现复选框图像。或者只使用TImageTPaintBox
【解决方案2】:

我设法找到了一个解决方案,尽管它相当混乱。但为了将来参考,我必须为 GridPanel 中的每个单元格创建一个面板,然后我可以设置面板的左填充属性来推动我的 TCheckboxes。



是的,它的效率非常低,但这是迄今为止我所拥有的最好的。还解决了我想要在 GridPanel 中显示单元格轮廓的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多