[教程]判断两个不同的接口实例是否是同一个对象

如果一个对象支持多个接口,当我们获取其支持的不同接口的实例时,就会得到不同的地址,比如:

我们假设对象 TABObject 的实例 ab,当我们写下类似于下面的代码时:

在实际运行中,A

[教程]为 Delphi 剪贴板加入 CF_HTML 数据支持

嗯,直接上代码,需要引用  QDAC 的 QString 单元,不支持太老版本的 Delphi,使用古董版的 Delphi 的请自己改写下:

用法是直接操作 Clipboard.AsHtml 属性就可以了,例如: [crayon-5b76657e27a0

[日积月累]-20180622:前向声明关键字 forward

【格式】 函数声明;forward; 【用途】 forward 关键字用于前向声明一个局部函数,比如:

声明了一个 Calculate 函数,那么后面必需重新声明并实现这个函数,类似于下面: [crayon-5b76657e27be2321483924/

[日积月累]-20180621:[Warning] W1000 Symbol ‘%1’ is deprecated: ‘Use %2’

【译】 [警告] W1000 符号 ‘%1′ 已经被废弃:’请使用 %2’ 【问题原因】 当前版的 Delphi 已经不再使用名为 %1 的函数/变量/常量,目前的代码仍可以正常运行,但最好改成使用 %2 的替代函数/变量/常量。官方的意思是相应的符号将在后续的某个版本中

[教程]DateTimeFromString 函数的使用说明

DateTimeFromString 用于将一个日期时间格式的字符串表达式转换为日期时间类型,用于替代 Delphi 自己的 StrToDate 函数(弱弱的一个函数,我一直忽略它的存在)。 在绝大部分场景下,DateTimeFromString 可以正确识别多咱格式的日期时间字符串,但并不代表它的自动识别智能到可以理

[QString]FindSwitchValue 函数使用说明

【用途】 此函数用于将命令行开关分隔为一个名称-值对,并取出其中值。 【声明】

【参数说明】 ASwitch : 要查找的开关 ANameValueSperator : 开关和名称的值的分隔符 AIgnoreCase : 是否忽略大小写 ASwitchC

[教程] Delphi 中的自动引用计数使用规则

Delphi 用户应该早已经熟悉自动引用计数的概念(ARC),Delphi  很早就开始支持接口、动态数组和字符串的自动引用计数(DCC32、DCC64、DCCOSX),移动编译器则加入对类的自动引用计数支持,因此还加了入弱引用的概念,以管理循环引用。有个预编译条件指令 AUTOREFCOUNT 可以检测当前是否编译器

[FMX] FMX 动画类的一个辅助增强

本增强的目的是解决动画对象只支持 published 的有效的几种属性的问题,确切的说,这是一个适配器,通过匿名函数建立与非 published 属性的适配。我在 [FMX] Delphi 中 TAnimation 设计的几点值得商榷的地方 一文中讨论了 FMX 动画支持类的一些值得商榷的地方和改动,而这个增强从另一个

[教程]以管理员身份运行程序的一种方法

以管理员运行程序的方法有很多种,包含在 manifest 文件中请求权限,兼容性设置及下面说的 runas。 runas 算是一种比较另类的方法,它是通过重新启动程序以管理员方式运行的方式来让新的进程以管理员方式运行,然后退出当前进程,以达到以管理员身份运行的目的。 要执行这个操作实际上很简单,用众所周知的 Shell

[QSecurity]QSecurity 使用入门指南

QSecurity 是 QPlugins 的安全相关插件接口及其实现, qplugins_security.pas 定义了安全相关的接口,我们在插件中使用时,只需要引用这个接口文件就可以了。而服务的实现单元并不包含在免费开源的范围内,如果您不想自己实现,或者想参考实现,需要付费购买,价格为人民币 99.00 元。 无论

[教程]解析 Web 颜色(VCL)

这段代码支持的Web颜色格式为 #RRGGBB/#RGB 以及以Web标准名称命名的颜色(需要引用单元:qstring,graphutil):

比如#FF0000 和 #F00 都被解释为红色。

[FMX]在 FMX 程序中绘制单像素宽度的直线

在前面的一篇文章中,我介绍了一种绘制低品质直线的方法,但是这么做,效率上肯定要打折扣的。在和群里的朋友们一顿交流折腾后,对于绘制水平或垂直的直线,现在有两种更简单的办法来解决这一问题: 办法一:使用 FillRect 来代替 DrawLine 绘制,矩形区域的大小注意要在相应的方向上加 0.5 个像素。 [crayon

[FMX]在程序中使用已有的样式做自己需要的渲染

今天我们来做一件坏事,我们都是坏孩子…… 我们知道,FMX 是有 StyleBook,每个控件有自己的样式,但有时候,我们要绘制自绘一些状态,难道非要用户重新定义一堆样式吗?为啥不能利用现成的样式呢,比如,我就只是要自绘一个CheckBox,但我还不想放置一个TCheckBox组件,那么怎么来做呢? 第一:我们需要知道

【教程】在你的程序中使用自定义字体

【Android】 方法一:参考 [译]在 Andriod/IOS 程序中使用自己的字体 自己修改系统源码,缺点是每升级一个版本需要修改一次; 方法二:使用 QDAC 为此新增 qdac_fmx_fontex_android ,不过区分免费版和赞助版(赞助版为qdac_appfonts,同时支持所有平台),但使用步骤一

[教程]在你的程序中使用 FontAwesome 字体

首先是无论什么平台,要使用 FontAwesome 字体需要两步: 第一步:添加字体,考虑到字体如果是专用的话,应该是当前程序能够加载字体的目录(下面都假设这一点,你如果装到操作系统字体目录里的话,就直接使用就可以了); 第二步:设置控件的字体为 FontAwesome,然后调整字体大小和样式为合适的大小; 【Wind

[QMacros] 使用迭代器来重复内容

QMacros 2017年9月18日提交的版本支持了迭代器,以重复替换某一部分内容。 迭代器的声明:

好吧,这是一个接口,这就意味着,我们绑定某个宏到这个迭代器之前,需要先实现一个迭代器。我们可以继承自 TQMacroIterator 实现一个自带的迭代

[教程]通过 PnP 获取显示器信息示例

在一些场合,我们需要获取显示器的硬件信息,来便做一些便宜的处理(那当然具体的处理就不需要我说道了),下面的代码提供了一种实现,供有需要的朋友参考: 下载:MonitorEDID 效果: 当然了,如果你没有想到用它来干啥,说明你根本就用不到它,当然也就不用管它了,全当看了一个笑话。