我正在学习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来消除边框。