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了(一个红色的矩形):

delphi xe 之路(14)使用FireMonkeyStyle相关推荐

  1. delphi xe 之路(29)安装xe7up1

    遵照高人的指点,成功安装了delphi xe7 up1 1.卸载XE7时,不要点开始菜单中的卸载,要在原始安装程序中卸载: 2.UP1安装包放在U盘中进行安装: 3.用破解工具进行正确破解.

  2. Delphi XE E2064 Left side cannot be assigned to 错误解决方法

    Delphi XE E2064 Left side cannot be assigned to 错误解决方法 1. 起源 此问题源于[秋风人事档案管理系统]用Delphi XE重编译中所发现. 快十年 ...

  3. delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收

    delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收 今天,群里有几位同学讨论这个问题,汇总了一下,分享出来,供同学们学习研究. 一.直接上代码示例 1.屏蔽应 ...

  4. delphi XE 10实现App和PC下TreeView调用ImageList和Sqlite数据

    delphi XE 10实现App和PC下TreeView调用ImageList和Sqlite数据 一.工程 program TreeView; usesSystem.StartUpCopy,FMX. ...

  5. DELPHI XE 10.3开发安卓APP的经过

    首先要感谢CSDN和各位上传东西上CSDN的朋友,我原来有900多分的,为上下载相关的东西,花掉了400多分. 本来想安装XE10.4的,无奈PJ不了,XE10.4前两天在一台WIN7 64位上成功安 ...

  6. Delphi XE 使用 MySQL 数据库一个奇怪的问题

    Delphi XE 使用 MySQL 数据库一个奇怪的问题 我用的是自带的 ADO 组件连接 MYSQL ,连接很简单,如下: 1.下载一个 MYSQL 驱动安装上 下载地址 2.连接串 Adoc.C ...

  7. Delphi XE 10.4 FMX ListView 一个不易察觉的 BUG

    Delphi XE 10.4 FMX ListView 一个不易察觉的 BUG 在使用 ListView DynamicAppearance 时发现非常强大,可以加很多东西,但没有发现复选框(哪位大佬 ...

  8. 封装的ini文件类。保存为unicode的。解决delphi xe的TiniFile保存后不为unicode的问题...

    网络摘抄 //刚封装的ini文件类.保存为unicode的.解决delphi xe的TiniFile保存后不为unicode的问题 //今天发现delphi xe的TiniFile类保存后的文件不是以 ...

  9. FMC子卡模块学习资料:FMC160-两路14位400Msps AD,两路16位400Msps DA FMC子卡模块

    FMC160-两路14位400Msps AD,两路16位400Msps DA FMC子卡模块 一.概述 该板卡可实现2路14bit 400Msps AD 和2路16bit 400Msps DA功能,遵 ...

  10. delphi xe 10.3 firemonkey stringdrig 插入,删除,添加

    以下是在WIN7 64 ,delphi xe 10.3 以下成功运行: 运行界面: 代码 unit Unit1; interface uses   System.SysUtils, System.Ty ...

最新文章

  1. linux系统oracle服务自启动
  2. JPEG文件格式简单分析
  3. 分布式锁和mysql事物扣库存_浅谈库存扣减和锁
  4. 关于(我们流量表优化),分区表数据块过多,聚合又导致数据倾斜问题
  5. golang依赖接口,不要依赖具体实现
  6. 凡人和神学习和使用软件的七个层次
  7. 【限时早鸟票】数据技术十年相伴,DTC盛会北京重燃
  8. 开发提效小技巧分享(二)
  9. 西数linux驱动程序,下载:西数移动硬盘WD SES Driver驱动更新
  10. 第九周 单片机的定时器与计数器 模式寄存器TMOD 控制寄存器TCON
  11. 金融量化分析【day112】:量化平台的使用-第一个策略
  12. 沉迷机器人操作系统的一个理由和四种修仙秘籍(更新ROS 2.0内容)
  13. C# GDI winfrom 图像转换椭圆形
  14. 结构化数据和非结构化数据有何区别?
  15. 如何评测光源的好坏?
  16. 三维视频融合 倾斜摄影模型 开放c++源代码 支持与java js交互 内嵌web容器 可用于雪亮工程 等 安防项目 稳定流畅 点卯系列
  17. 思科三层交换机配置DHCP中继
  18. 为啥翻唱的也特别好听呢,听J Fla 的 despacito
  19. centos7配置squid代理(透明代理)
  20. typescript学习之路(三) —— ts定义类的方法(包含es5以及es6的定义类)

热门文章

  1. 激光雷达与组合导航标定
  2. 电信dns服务器哪个稳定,电信宽带dns设置哪个最快? dns设置哪个最好最快
  3. 2019-2020年目标跟踪论文汇总
  4. Linux 用户和权限管理
  5. 邮箱超大附件最大是多少?什么邮箱能发超大附件?
  6. [高项]定性风险分析VS定量风险分析
  7. iTunes出现“iTunes不能读取iPhone的内容,请前往iPhone偏好设置的摘要选项卡,然后点击“恢复””的解决办法
  8. html预览页面做成a4纸,如何在A4纸张尺寸页面制作HTML页面?
  9. 简单 PS CS6蒙版抠图技巧
  10. 智能爆炸的真实(上)