如何确定组件属性值是否被修改?

时间:2015-07-05 15:01:58

标签: delphi rtti delphi-xe7

我正在尝试编写一个函数,该函数应返回组件的属性值是否已更改,或者更好地将其更改为Default。 Delphi从Object Inspector中显示了这一点(值变为Bold),但很可能是属性和值存储在DFM中这一事实。

例如,我有一个Button1,下面的标题值保持不变:

  

Caption = [Button1]

因此该函数应返回True,因为它未更改,因此是默认值。但是,如果标题不再是默认标题,例如:

  

Caption = [Button1WithNewCaption]

然后该函数应返回False。

我认为RTTI专门针对这类需求而设计,但我缺乏这方面的知识,似乎无法找到解决方案。以下是我到目前为止所尝试的仅导致访问冲突错误的原因,这很可能是因为我没有正确创建和实现它。

function ValueIsDefault(Component: TComponent; APropName: string): Boolean;
var
  IndexedProperty: TRTTIIndexedProperty;
begin
  IndexedProperty := TRttiContext.Create.GetType(Component).GetIndexedProperty(APropName);
  Result := IndexedProperty.IsDefault;
end;

如何从布尔函数中确定组件中的属性值是否为默认值?

0 个答案:

没有答案