【问题标题】:Delphi TGridLayout layout and padding between itemsDelphi TGridLayout 布局和项目之间的填充
【发布时间】:2013-07-28 14:27:31
【问题描述】:

尝试使用 TGridLayout 来保存一系列 TImage 对象,每个对象都加载了一个位图,我得到了一些结果。但是,控制之间没有余量。我已经尝试使 TImage 宽度/高度小于 TGridLayout itemheight/itemwidth,但没有运气。

示例代码:

ImageRef := TImage.Create(GridLayoutGallery);
ImageRef.Visible := False; // se true later
ImageRef.Width := GridLayoutGallery.ItemWidth - 10;
ImageRef.Height := GridLayoutGallery.ItemHeight - 10;
GridLayoutGallery.AddObject(ImageRef);

【问题讨论】:

  • 您是否尝试将YourImage.AlignWithMargins 设置为True,然后调整YourImage.Margins 属性?
  • @LightBulb,通过为每个单独的图像设置边距会导致图像缩小并且质量会受到影响。最终布局中每个对象的大小由 GridLayout 组件本身决定。
  • @LightBulb 谢谢。这个建议确实有效,我将暂时使用,直到我有更多时间尝试其他建议的解决方案。 (我的日程安排很紧)

标签: ios delphi firemonkey


【解决方案1】:

您自己已经接近答案了,这是我将如何实现的:

假设您的网格包含一系列大小为 40 x 40 像素的图像

要在图像之间应用边距,只需将TGridLayout 组件的ItemWidthItemHeight 属性设置为大于实际图像大小的值,例如42 x 42 像素。

这应该在放置在 TGridLayout 中的每个图像周围创建一个边距。

【讨论】:

  • @Tom,您的解决方案不起作用,因为您尝试更改 Timage 控件的实际宽度和高度,但它不起作用。正如我所说,TGridLayout 控制控件的大小。将 TImage 插入布局之前的任何大小都会重置为 TGridLayout 设置的值。
  • 好的。我现在知道了。这会有点混乱,因为我有一个例程可以优化位图的大小以适合我的 TImage,但我想我会重写它,除非我找到另一个解决方案! :)
  • @Tom,它不应该是凌乱的,所有你必须确保 TImage 的宽度和高度小于 TGridLayour Height 和 WIdth 属性中使用的值。
【解决方案2】:

看一下TGridLayout的描述: http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Layouts.TGridLayout

TGridLayout 的子级被调整大小以适应通过 ItemHeight 和 ItemWidth 属性指定的大小。 [...] 但是,您可以使用子控件的边距属性自定义子控件的大小。

-> 将 ItemHeight 和 ItemWidth 设置为 (ImageSize + MarginSize)
-> 将图像的边距设置为 (MarginSize)

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 2012-10-23
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多