【Delphi】扩展现有组件创建新的 FireMonkey 组件(步骤二)

实现指定格式的属性 

步骤 1 中创建的 TClockLabel 组件需要在显示当前时间时定义日期时间格式作为属性,以便组件用户可以指定。

一、实现指定格式的属性

要实现格式属性,请在 TClockLabel class 的发布部分添加以下一行: 

property Format: String;

另外,在公共部分添加构造函数的定义如下: 

 constructor Create(AOwner: TComponent); override;

更改格式后,需要更新标签。要更新标签,请将 UpdateLabel 方法作为私有成员引入。

代码应如下所示 :

type
TClockLabel = class(TLabel)
private{ Private declarations }procedure UpdateLabel;
protected{ Protected declarations }
public{ Public declarations }constructor Create(AOwner: TComponent); override;
published{ Published declarations }property Format: String;
end;

插入这一行后,按 CTRL+SHIFT+C。集成开发环境会自动为格式属性添加一个设置器,并为构造函数添加一个骨架。现在的代码应该是这样的:

type
TClockLabel = class(TLabel)
privateFFormat: String;procedure SetFormat(const Value: String);
publicconstructor Create(AOwner: TComponent); override;
publishedproperty Format: String read FFormat write SetFormat;
end;{ TClockLabel }constructor TClockLabel.Create(AOwner: TComponent);
begininherited;
end;procedure TClockLabel.UpdateLabel;
beginend;procedure TClockLabel.SetFormat(const Value: String);
beginFFormat := Value;
end;

根据 System.SysUtils.DateTimeToString 的文档,日期时间格式的典型值是 “c”。因此,将 FFormat 字段初始化为 “c”。

constructor TClockLabel.Create(AOwner: TComponent);
begininherited;FFormat := 'c';
end;

现在执行 UpdateLabel 和 SetFormat 方法如下: 

procedure TClockLabel.UpdateLabel;
beginText := FormatDateTime(FFormat, Now);
end;procedure TClockLabel.SetFormat(const Value: String);
beginFFormat := Value;UpdateLabel;
end;

二、继承父组件的样式

如果您希望您的组件继承父组件的样式,请使用以下代码: 

type
TClockLabel = class(TLabel)
private{ Private declarations }procedure UpdateLabel;function GetDefaultStyleLookupName: string; override;
protected{ Protected declarations }
public{ Public declarations }constructor Create(AOwner: TComponent); override;
published{ Published declarations }property Format: String;
end;

本步骤完,下一步骤参见《【Delphi】扩展现有组件创建新的 FireMonkey 组件(步骤三)》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus使用例过程中BaseMapper中的一些selectList方法找不到的问题

如果需要用到Mybatis-Plus里面BaseMapper的默认实现的一些方法,而不通过mapper.xml的方式自定义方法,那么在构建SqlSessionFactory的时候需要注意应该通过Mybatis-Plus中的MybatisSqlSessionFactoryBean来获取SqlSessionFactory,使用Mybatis中…

CST电磁仿真77GHz汽车雷达保险杠

77G毫米波雷达仿真时,要考虑天线罩和保险杠的影响。通常保险杠都是多层结构,有的层非常薄。如果采用传统的3D建模方法,会导致网格数量巨大,进而影响到求解效率。 三维保险杠(bumper)模型如下图所示&…

vue3.5新特性

vue在2024.09.03发布了3.5正式版本,其中包含多方面的升级和优化 性能优化 响应式系统重构优化,在内存占用、性能方面均有收益 Memory Usage Improvements Given a test case with 1000 refs 2000 computeds (1000 chained pairs) 1000 effects sub…

【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析

文章目录 C string 类详解:从入门到精通前言第一章:C 语言中的字符串 vs C string 类1.1 C 语言中的字符串1.2 C string 类的优势 第二章:string 类的构造与基础操作2.1 string 类的构造方法2.1.1 示例代码:构造字符串 2.2 string…

二期 1.4 Nacos安装部署 - Window版

本文目录 Nacos支持三种部署模式环境准备下载Nacos启动登录服务注册与查看Nacos支持三种部署模式 单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景。以 Window单机模式 抛转引玉,其它部署方式参考官方文档: https://n…

使用Python实现深度学习模型:智能电影制作与剪辑

随着人工智能技术的飞速发展,深度学习在各个领域的应用越来越广泛。在电影制作与剪辑领域,深度学习技术也展现出了巨大的潜力。本文将介绍如何使用Python实现一个简单的深度学习模型,用于智能电影制作与剪辑。我们将使用TensorFlow和Keras库来构建和训练模型,并展示如何应用…

部署自己的对话大模型,使用Ollama + Qwen2 +FastGPT 实现

部署资源 AUTODL 使用最小3080Ti 资源,cuda > 12.0使用云服务器,部署fastGPT oneAPI,M3E 模型 操作步骤 配置代理 export HF_ENDPOINThttps://hf-mirror.com下载qwen2模型 - 如何下载huggingface huggingface-cli download Qwen/Qwen2-…

Python编程入门指南

本文为初学者提供了全面的Python编程入门指南,涵盖了基础语法、控制结构、函数、数据结构、文件操作、异常处理、模块与包、面向对象编程以及一些高级特性,帮助读者快速掌握Python编程的核心知识。通过详细解释Python编程的各个方面,文章旨在…

flutter遇到问题及解决方案

目录 1、easy_refresh相关问题 2、 父子作用域关联问题 3. 刘海屏底部安全距离 4. 了解保证金弹窗 iOS端闪退 (待优化) 5. loading无法消失 6. dialog蒙版问题 7. 倒计时优化 8. scrollController.offset报错 9. 断点不走 10.我的出价报红 11…

Python3爬虫教程-HTTP基本原理

HTTP基本原理 1,URL组成部分详解2,HTTP和HTTPS3,HTTP请求过程4,请求(Request)请求方法(Request Method)请求的网址(Request URL)请求头(Request H…

Redmi Note 7 Pro(violet)免授权9008文件分享及刷机教程

获取文件 关注微信公众号 heStudio Community回复 violet_9008 获取下载链接。 刷机教程 下载搞机助手(可以从上方文件中获取)并安装。手机按音量减键和电源键进入 Fastboot 模式, 打开搞机助手,点击进入 9008 模式 等待手机…

IDEA 关闭自动补全功能(最新版本)

文章目录 一、前言二、关闭自动补全三、最终效果 一、前言 在最新的 IDEA 中发布了自动补全功能,当你输入代码时,IDEA 会自动显示你可能想输入的代码,减少手动输入的工作量,它会根据上下文提供正确的选项,提高代码的准…

Java-数据结构-二叉树-习题(三)  ̄へ ̄

文本目录: ❄️一、习题一(前序遍历非递归): ▶ 思路: ▶ 代码: ❄️二、习题二(中序遍历非递归): ▶ 思路: ▶ 代码: ❄️三、习题三(后序遍历非递归): ▶ 思路: …

C++——打印以下图案:用字符数组方法。

没注释的源代码 #include <iostream> using namespace std; int main() { char a[5]{*,*,*,*,*}; for(int i0;i<5;i) { for(int j0;j<i;j) { cout<<" "; } for(int k0;k<5;k) …

vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源

之前项目使用的pdf.js 是2.15.349版本&#xff0c;最近换了一个4.6.82的版本&#xff0c;在本地上浏览文件运行的好好的&#xff0c;但是发布到服务器&#xff08;IIS&#xff09;上打不开文件&#xff0c;控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…

Git使用手册

1、初识Git 概述&#xff1a;Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理项目版本管理。 知识点补充&#xff1a; 版本控制&#xff1a;一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。 分布式&#xff1a;每个人…

oracle 多表查询

3.6多表查询 当查询的数据并不是来源一个表时&#xff0c;需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段&#xff0c;一次查询出多个表的数据。 3.6.1等值连接 等值连接也称为简单连接(Simple Joins)或者内连接(Inner Join)。通过等号来判断连接条件中的数据…

M9410A VXT PXI 矢量收发信机,300/600/1200MHz带宽

M9410A PXI 矢量收发信机 -300/600/1200MHz带宽- M9410A VXT PXI 矢量收发信机&#xff0c;300/600/1200MHz带宽支持 5G 的 PXI 矢量收发信机&#xff08;VXT&#xff09;是一个 2 插槽模块&#xff0c;具有 1.2 GHz 的瞬时带宽 主要特点 Keysight M9410A VXT PXIe 矢量收发…

切换笔记本键盘的启用与禁用状态

使用批处理脚本切换笔记本键盘的启用与禁用状态 背景描述详细步骤及代码解释1. 在管理员模式下运行脚本2. 脚本内容3. 解释 背景描述 在笔记本电脑中&#xff0c;在外接键盘的时候&#xff0c;有时我们希望禁用内置键盘&#xff0c;防止意外按键。Windows 系统中&#xff0c;键…

Leetcode 1039. 多边形三角形剖分的最低得分 枚举型区间dp C++实现

问题&#xff1a;Leetcode 1039. 多边形三角形剖分的最低得分 你有一个凸的 n 边形&#xff0c;其每个顶点都有一个整数值。给定一个整数数组 values &#xff0c;其中 values[i] 是第 i 个顶点的值&#xff08;即 顺时针顺序 &#xff09;。 假设将多边形 剖分 为 n - 2 个三…