天天看点

delphi xe 之路(14)使用FireMonkeyStyle

firemonkey使用style来控制控件的显示方式。

每个控件都有一个stylelookup属性,firemonkey就是通过控件的这个属性来在当前窗体的stylebook控件中查找匹配的style,如果找到了这个style,那么控件就使用这个style来显示。

stylebook是一个style的集合,里面可以有窗体的style,按钮的style,文本框的style,等等。每个style其实就是一个控件,像常用到的tlayout,trectangle等等,只是这个控件需要设置它的stylename。

比如我在stylebook中设计这样一个按钮:

l layout:tlayout(stylename设置为“defaultbutton”)

n rectangle:trectangle(用来显示按钮背景)

u text:tlabel(用来显示按钮标题)

那么这个layout就表示了一个名为“defaultbutton”的style。如果这时候,窗体上放一个button,然后将它的stylelookup属性为“defaultbutton”,firemonkey就会从当前窗体的stylebook中遍历我们设计的所有控件,查找stylename为button的stylelookup属性值的控件,也就是stylename为“defaultbutton”的控件,就是我们刚才设计的layout控件,查找到了之后,就返回一个layout的克隆,也就是复制一个layout(它的子控件也会复制进去),然后在button上显示出来。

原理就讲这些了,下面我用举个例子来演示一下这些步骤:

这个例子是在tlistboxitm控件上使用我们设计的style,

1. 在组件面板(tool palette)上选择一个tstylebook组件,将它拖放到窗体上,name为stylebook1,然后将窗体stylebook属性设置为stylebook1。

2. 在窗体上放一个tlistbox组件,将它拖放到窗体上,name为listbox1。

设置listbox1的align属性为alclient,

并右击listbox1,在弹出的菜单中选中items editor…

点击add item按钮,会在listbox1上面添加一个tlistboxitem,

3. 双击stylebook1,ide会进入到style designer模式:

4. 设计style,首先在组件面板(tool palette)中选择一个tlayout组件(layouts分类),拖动到左上角,

这时候结构视图显示如下:

在属性查看器中设置layout的stylename为defaultitemstyle:

然后我们在layout下添加一个trectangle做为背景:

将这个rectangle的颜色设置为红色,也就是将它的fill.color设置为red,并将rectangle的layout属性设置为alclient:

5. 按一下firemonkey style designer toolbar上面的apply and close按钮,好了,一个名为defaultitemstyle的style已经设计完成了。

6. 然后选中我们之前添加的listboxitem1,在属性查看器中的stylelookup属性值更改为defaultitemstyle。

看,这个listboxitem已经显示成我们设计的style了(一个红色的矩形):