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了(一个红色的矩形):
delphi xe 之路(14)使用FireMonkeyStyle相关推荐
- delphi xe 之路(29)安装xe7up1
遵照高人的指点,成功安装了delphi xe7 up1 1.卸载XE7时,不要点开始菜单中的卸载,要在原始安装程序中卸载: 2.UP1安装包放在U盘中进行安装: 3.用破解工具进行正确破解.
- Delphi XE E2064 Left side cannot be assigned to 错误解决方法
Delphi XE E2064 Left side cannot be assigned to 错误解决方法 1. 起源 此问题源于[秋风人事档案管理系统]用Delphi XE重编译中所发现. 快十年 ...
- delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收
delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收 今天,群里有几位同学讨论这个问题,汇总了一下,分享出来,供同学们学习研究. 一.直接上代码示例 1.屏蔽应 ...
- delphi XE 10实现App和PC下TreeView调用ImageList和Sqlite数据
delphi XE 10实现App和PC下TreeView调用ImageList和Sqlite数据 一.工程 program TreeView; usesSystem.StartUpCopy,FMX. ...
- DELPHI XE 10.3开发安卓APP的经过
首先要感谢CSDN和各位上传东西上CSDN的朋友,我原来有900多分的,为上下载相关的东西,花掉了400多分. 本来想安装XE10.4的,无奈PJ不了,XE10.4前两天在一台WIN7 64位上成功安 ...
- Delphi XE 使用 MySQL 数据库一个奇怪的问题
Delphi XE 使用 MySQL 数据库一个奇怪的问题 我用的是自带的 ADO 组件连接 MYSQL ,连接很简单,如下: 1.下载一个 MYSQL 驱动安装上 下载地址 2.连接串 Adoc.C ...
- Delphi XE 10.4 FMX ListView 一个不易察觉的 BUG
Delphi XE 10.4 FMX ListView 一个不易察觉的 BUG 在使用 ListView DynamicAppearance 时发现非常强大,可以加很多东西,但没有发现复选框(哪位大佬 ...
- 封装的ini文件类。保存为unicode的。解决delphi xe的TiniFile保存后不为unicode的问题...
网络摘抄 //刚封装的ini文件类.保存为unicode的.解决delphi xe的TiniFile保存后不为unicode的问题 //今天发现delphi xe的TiniFile类保存后的文件不是以 ...
- 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功能,遵 ...
- delphi xe 10.3 firemonkey stringdrig 插入,删除,添加
以下是在WIN7 64 ,delphi xe 10.3 以下成功运行: 运行界面: 代码 unit Unit1; interface uses System.SysUtils, System.Ty ...
最新文章
- linux系统oracle服务自启动
- JPEG文件格式简单分析
- 分布式锁和mysql事物扣库存_浅谈库存扣减和锁
- 关于(我们流量表优化),分区表数据块过多,聚合又导致数据倾斜问题
- golang依赖接口,不要依赖具体实现
- 凡人和神学习和使用软件的七个层次
- 【限时早鸟票】数据技术十年相伴,DTC盛会北京重燃
- 开发提效小技巧分享(二)
- 西数linux驱动程序,下载:西数移动硬盘WD SES Driver驱动更新
- 第九周 单片机的定时器与计数器 模式寄存器TMOD 控制寄存器TCON
- 金融量化分析【day112】:量化平台的使用-第一个策略
- 沉迷机器人操作系统的一个理由和四种修仙秘籍(更新ROS 2.0内容)
- C# GDI winfrom 图像转换椭圆形
- 结构化数据和非结构化数据有何区别?
- 如何评测光源的好坏?
- 三维视频融合 倾斜摄影模型 开放c++源代码 支持与java js交互 内嵌web容器 可用于雪亮工程 等 安防项目 稳定流畅 点卯系列
- 思科三层交换机配置DHCP中继
- 为啥翻唱的也特别好听呢,听J Fla 的 despacito
- centos7配置squid代理(透明代理)
- typescript学习之路(三) —— ts定义类的方法(包含es5以及es6的定义类)
热门文章
- 激光雷达与组合导航标定
- 电信dns服务器哪个稳定,电信宽带dns设置哪个最快? dns设置哪个最好最快
- 2019-2020年目标跟踪论文汇总
- Linux 用户和权限管理
- 邮箱超大附件最大是多少?什么邮箱能发超大附件?
- [高项]定性风险分析VS定量风险分析
- iTunes出现“iTunes不能读取iPhone的内容,请前往iPhone偏好设置的摘要选项卡,然后点击“恢复””的解决办法
- html预览页面做成a4纸,如何在A4纸张尺寸页面制作HTML页面?
- 简单 PS CS6蒙版抠图技巧
- 智能爆炸的真实(上)