我正在尝试编写一个函数,该函数应返回组件的属性值是否已更改,或者更好地将其更改为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;
如何从布尔函数中确定组件中的属性值是否为默认值?