【问题标题】:How can I remove the border line from a FireMonkey TListBox control?如何从 FireMonkey TListBox 控件中删除边框线?
【发布时间】:2014-12-15 15:28:17
【问题描述】:

我正在学习 FireMonkey 样式 - 我的主要参考资料是 here。我用简单的标签和形状尝试过的一切都很好,但我现在正在使用 TListBox 并尝试做两件事:

  1. 设置 TListBox 中项目的字体。
  2. 移除它的边框(它在 TCalloutPanel 中与客户端对齐)。

我正在使用在表单上创建样书的方法,右键单击控件并选择“编辑自定义样式”。 (不过,我同样很乐意进行运行时更改)。

我对字体的唯一成功是创建多个 TListBoxItem 并使用它们各自的文本设置。他们没有办法像 VCL 那样继承父设置吗?我真的很想像在 VCL 中一样添加列表框项:

 ListBox1.Items.Add( 'text' )

但我看不到运行时获取我看到的内部 TListBoxItem 数组的方法。

另一个问题是我看不到移除边框矩形的方法。一个普通的矩形很容易——它有一个笔划——但是在样书中挖掘 TListBox 的所有布局选项时,我在任何地方都看不到笔划。

我正在使用 XE7。我错过了什么吗?

感谢您的帮助。

【问题讨论】:

  • TListBox 有一个属性 DefaultItemStyles 可能是您想要的,但没有记录,因此需要进行一些调查。删除轮廓更复杂。查看位图样式设计器(在工具菜单上),您将需要一个好的图形编辑器。

标签: delphi firemonkey tlistbox firemonkey-style


【解决方案1】:

不保证背景一定是TRectangle 类型。

当您选择编辑自定义样式选项时,您将编辑平台默认样式,该样式始终为 Windows 样式。 (也就是说,如果还没有加载自定义样式)

他们决定处理平台默认样式的方式是拍摄本机控件的快照并将它们合并到一个图像中,他们可以从中单独获取链接到特定控件的源代码。 该图像的样式可供您修改。

  1. 设置列表框中项目的字体

    右键单击项目并选择编辑自定义样式,一个新的样式对象被添加到您的样书中。对于列表框项目,它应该被称为listboxitem1style1,尽管数字可能会有所不同。(名称来自该对象的默认样式,即listboxitemstyle)。

    这是您要在样书中编辑的样式对象。完成后,关闭样书并将每个 ListBox 项的 StyleLookup 属性更改为 listboxitem1style1。最好在运行时将值分配给属性。
    ListBoxItem1.StyleLookup := 'listboxitem1style1';

  2. 从 TListBox 中移除边框

    在您的样书中加载自定义样式后,使用样式设计器导航到ListBox1Style1 > background : SourceLink property 并编辑分配的BitmapLink 对象的SourceRect。基本上你将矩形膨胀 -2 以消除边框。

【讨论】:

  • 这非常有帮助,谢谢彼得。您能否详细说明如何继续“您想确保每个项目都分配有适当的 styleLookup 名称。您应该在运行时执行此操作”?请问我从哪里获得 stylelookup 名称?
  • 我已经编辑了我的答案,以包含有关如何完成此任务的更多详细信息。
  • 适用于任何此类性质的控制 :-)
猜你喜欢
  • 2015-10-17
  • 2020-04-11
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2018-11-13
  • 2023-04-07
相关资源
最近更新 更多