delphi xe 之路(14)使用FireMonkeyStyle

简介: <p>FireMonkey使用Style来控制控件的显示方式。</p> <p>每个控件都有一个StyleLookup属性,FireMonkey就是通过控件的这个属性来在当前窗体的StyleBook控件中查找匹配的Style,如果找到了这个Style,那么控件就使用这个Style来显示。</p> <p> </p> <p>StyleBook是一个Style的集合,里面可以有窗体的Styl

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中遍历我们设计的所有控件,查找StyleNameButton的StyleLookup属性值的控件,也就是StyleName为“defaultbutton”的控件,就是我们刚才设计的Layout控件,查找到了之后,就返回一个Layout的克隆,也就是复制一个Layout(它的子控件也会复制进去),然后在Button上显示出来。

 

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

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

1. 在组件面板(Tool Palette)上选择一个TStyleBook组件,将它拖放到窗体上,Name为StyleBook1,然后将窗体StyleBook属性设置为StyleBook1。

 

 

 

 

2. 在窗体上放一个TListBox组件,将它拖放到窗体上,Name为ListBox1。

 

 

设置ListBox1Align属性为alClient

并右击ListBox1,在弹出的菜单中选中Items Editor

 

点击Add Item按钮,会在ListBox1上面添加一个TListBoxItem

 

3. 双击StyleBook1,IDE会进入到Style Designer模式:

 

4. 设计Style,首先在组件面板(Tool Palette)中选择一个TLayout组件(Layouts分类),拖动到左上角,

 

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

 

在属性查看器中设置LayoutStyleNamedefaultitemstyle:

 

然后我们在Layout下添加一个TRectangle做为背景:

 

将这个Rectangle的颜色设置为红色,也就是将它的Fill.Color设置为Red,并将RectangleLayout属性设置为alClient

 

5. 按一下FireMonkey Style Designer ToolBar上面的Apply and Close按钮,好了,一个名为defaultitemstyleStyle已经设计完成了。

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
SQL 安全 网络协议
常用和不常用端口一览表收藏
大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解。所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误,或者被黑客利用某些端口进行入侵。
4841 0
|
3月前
|
存储 Rust NoSQL
一条命令迁移,帮你实现 OpenClaw 与 Hermes Agent 记忆互通!
本文是基于阿里云 Tablestore 的 Agent 记忆共享实战指南:一条命令迁移 OpenClaw 记忆至 Hermes,通过统一 Tablestore 实例、应用 ID 与租户 ID,实现跨Agent(如龙虾与马)记忆自动互通、实时同步与语义检索,支持 CLI 管理与对话中直接调用,安全可靠,开箱即用。
3212 122
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
652 85
|
人工智能 Serverless 开发者
最佳实践 | 轻松部署,即刻触达 Qwen2.5 的飞一般的体验
通过阿里云函数计算(FC)部署Ollama和Open WebUI,实现Qwen2.5模型的托管与交互。
|
数据采集 存储 调度
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
在Python网页抓取领域,BeautifulSoup和Scrapy是两款备受推崇的工具。BeautifulSoup易于上手、灵活性高,适合初学者和简单任务;Scrapy则是一个高效的爬虫框架,内置请求调度、数据存储等功能,适合大规模数据抓取和复杂逻辑处理。两者结合使用可以发挥各自优势,例如用Scrapy进行请求调度,用BeautifulSoup解析HTML。示例代码展示了如何在Scrapy中设置代理IP、User-Agent和Cookies,并使用BeautifulSoup解析响应内容。选择工具应根据项目需求,简单任务选BeautifulSoup,复杂任务选Scrapy。
539 1
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
|
人工智能 自然语言处理 数据处理
LazyGraphRAG:微软推出的图形增强生成增强检索框架
LazyGraphRAG是微软研究院推出的图形增强生成增强检索框架,旨在大幅降低数据索引成本并提高查询效率。该框架结合了最佳优先搜索和广度优先搜索,支持本地和全局查询,适用于一次性查询、探索性分析和流数据处理。LazyGraphRAG将加入开源的GraphRAG库,为开发者和企业提供更高效的技术支持。
888 0
LazyGraphRAG:微软推出的图形增强生成增强检索框架
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
1386 1
|
小程序 JavaScript Java
基于微信小程序便捷记账系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序便捷记账系统设计与实现(源码+lw+部署文档+讲解等)
788 8
|
传感器 安全 物联网
《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)
《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)
365 2
|
边缘计算 Linux 云计算
Docker的诞生背景与设计初衷,以及发展前景
Docker是一种开源的容器化技术,它使得应用程序可以在任何Docker环境中快速、可靠地运行,而无需进行大量的配置和安装工作。由于其强大的功能和厂 泛的应用,Docker的发展前景非常广阔。其在云计算、边缘计算等领域的应用将会越来越广泛,同时随着技术的不断完善和更新,Docker也将会在未来继......

热门文章

最新文章