我正在学习FireMonkey样式-我的主要参考文献是here。我尝试使用简单标签和形状进行的所有操作都工作正常,但现在使用TListBox并尝试做两件事:


在TListBox中设置项目的字体。
删除边框(客户端在TCalloutPanel中对齐)。


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

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

 ListBox1.Items.Add( 'text' )


但是我看不到创建我看到的内部TListBoxItem数组的运行时方式。

另一个问题是我看不到删除边框矩形的方法。普通矩形很容易-有笔触-但是在StyleBook中挖掘TListBox的所有布局选项时,我只是看不到笔触。

我正在使用XE7。我想念什么吗?

谢谢你的帮助。

最佳答案

不能保证背景将是TRectangle类型。

选择“编辑自定义样式”选项时,您将编辑平台默认样式,该样式始终是Windows样式。 (也就是说,如果尚未加载自定义样式)

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


在列表框中设置项目的字体

右键单击项目,然后选择“编辑自定义样式”,新样式对象将添加到您的StyleBook中。对于列表框项目,应将其称为listboxitem1style1,其他数字也可能有所不同。(名称来自该对象的默认样式,即listboxitemstyle)。


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

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

10-04 18:41