【发布时间】:2020-09-27 15:45:18
【问题描述】:
更新到 Delphi 10.4 Sydney 后,我的 TVirtualStringTree 实例将其 Colors.XYZ 属性存储在 dfm 文件中,尽管我将这些属性保留为默认值:
在VirtualTrees.pas中,这些颜色值有一个默认值,这通常意味着这些不应写入dfm文件:
published
property BorderColor: TColor index cBorderColor read GetColor write SetColor default clBtnFace;
property DisabledColor: TColor index cDisabledColor read GetColor write SetColor default clBtnShadow;
property DropMarkColor: TColor index cDropMarkColor read GetColor write SetColor default clHighlight;
...
如何去除 dfm 文件中的这些默认颜色?
【问题讨论】:
-
属性声明中的默认值意味着流系统将这些值与实际值进行比较,如果它们相同,则不写入。
-
所以流媒体系统再也看不到这些属性的默认值了?我想知道这是否与“颜色”本身就是一个对象这一事实有关。
-
这是否也发生在新项目中或仅在您的旧项目中?
-
@Anse iamjoosy 想说的是,
Colors属性对象的 constructor 必须将值分配给与子属性上声明的默认值相匹配的子属性-特性。是否有这样的构造函数,它是否设置了正确的属性值?请注意,在您的 DFM 示例中,DisabledColors保存为clGray,但其默认值为clBtnShadow。这意味着构造函数中的不匹配,或者Colors对象中的其他内容正在更改构造后的子属性值。与保存为数字而不是文本别名的其他属性相同 -
Embarcadero 论坛上的一个相关问题解释了可能的罪魁祸首:community.idera.com/developer-tools/general-development/f/…
标签: delphi virtualtreeview delphi-10.4-sydney