gpt4 book ai didi

delphi - 无法使用简单的属性编辑器

转载 作者:行者123 更新时间:2023-12-03 18:26:57 25 4
gpt4 key购买 nike

有一个用于封装某些功能的自定义组件集,我试图添加一个自定义属性编辑器,似乎无法弄清楚如何使其应用。我们的注册单位中包含以下代码

type
THexWordProperty = class(TIntegerProperty)
public
function GetValue: string; override;
end;

{ THexProperty }

function THexWordProperty.GetValue: string;
begin
Result := '$'+IntToHex(GetOrdValue, 4);
end;


接下来的电话

RegisterPropertyEditor(TypeInfo(TPeripheralMask),nil,'',THexWordProperty);

在注册过程中。

尽管重建了软件包,卸载,重新安装并重新启动了Delphi,但我无法让我的 TPeripheralMask属性显示任何不同的内容。据我所知,这是最简单的属性编辑器,因为我只是想简单地获取一个简单的序数属性,以其他形式显示(但对于输入仍然有效)。

实际的属性类型仅定义为 type TPeripheralMask = Word;,我应该做些什么来支持该类型的其他RTTI?

最佳答案

type  
TPeripheralMask = Word;


这是类型别名。这意味着 TPeripheralMaskWord引用相同的类型。您需要创建一个新类型。

type  
TPeripheralMask = type Word;




相关的 documentation表示以下内容:


当您声明与现有类型相同的类型时,
编译器将新的类型标识符视为旧标识符的别名。
因此,根据声明:

type TValue = Real;
var
X: Real;
Y: TValue;


X和Y属于同一类型;在运行时,没有办法
区分TValue和Real。这通常没有什么影响,
但是如果您定义新类型的目的是利用运行时类型
信息,例如,将属性编辑器与
特定类型的属性-“不同”之间的区别
名称”和“不同类型”变得很重要。在这种情况下,请使用
句法:

type newTypeName = type KnownType

关于delphi - 无法使用简单的属性编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com