Delphi 中存储的关键字

rqdpfwrv  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(161)

Delphi 允许在定义属性时使用stored关键字,如下所示:

property Fields: TIndexDefs read FFields write SetFields stored FieldsStored;

关键字的用途是什么?它有什么作用?

amrnrhlw

amrnrhlw1#

从我的 Delphi 7帮助文件:
可选的stored、default和nodefault指令称为存储说明符。它们对程序行为没有影响,但控制是否将已发布属性的值保存在窗体文件中。
stored指令后面必须跟True、False、布尔字段的名称或返回布尔值的无参数方法的名称。例如,

property Name: TComponentName read FName write SetName stored False;

如果属性没有stored指令,则将其视为指定了stored True。
它控制是否在窗体的.DFM文件中存储与组件相关的属性。

r7xajy2e

r7xajy2e2#

此关键字确定属性值是否应保存在窗体文件中;它在默认情况下是true。例如,它可以避免在.dfm文件中保存大块的二进制信息(例如,必须仅在运行时读取其内容的图像组件)。

xt0899hw

xt0899hw3#

stored指令采用布尔值:返回布尔结果、布尔类型字段引用或布尔类型常量表达式的方法。属性的RTTI记录字段偏移量、方法引用或常量值,Delphi的IDE使用这些信息来决定是否从. dfm文件中省略该属性。
IDE将调用该方法、检查字段的值或使用常量布尔值,如果该值为False,则不会将属性保存到. dfm文件中。如果存储的值为True,则会发生默认行为,即在属性值与默认值不同时存储该属性。
提示和技巧

  • stored指令经常被误解。将stored设置为True并不强制Delphi将属性值存储在. dfm文件中。True是stored指令的默认值。相反,您所能做的就是通过将stored设置为False从. dfm文件中省略该属性。
  • 您可以在任何访问级别使用"与一起存储"特性,* 但它仅对已发布的特性有意义 *。
  • 如果使用方法名,则该方法可以是静态的或虚拟的,但不能是动态的或消息处理程序。
  • 字段引用可以是字段名、记录成员或具有常数索引的数组元素。字段引用必须为布尔类型。

参考:https://www.oreilly.com/library/view/delphi-in-a/1565926595/re307.html

相关问题