Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 10.4存储默认的VirtualTree';.dfm文件中的默认属性_Delphi_Virtualtreeview_Delphi 10.4 Sydney - Fatal编程技术网

Delphi 10.4存储默认的VirtualTree';.dfm文件中的默认属性

Delphi 10.4存储默认的VirtualTree';.dfm文件中的默认属性,delphi,virtualtreeview,delphi-10.4-sydney,Delphi,Virtualtreeview,Delphi 10.4 Sydney,更新到Delphi 10.4 Sydney后,我的TVirtualStringTree实例将其Colors.XYZ属性存储在dfm文件中,尽管我将这些属性保留在默认值上: 在中,这些颜色值具有默认值,这通常意味着这些颜色值不应写入dfm文件: published property BorderColor: TColor index cBorderColor read GetColor write SetColor default clBtnFace; property Di

更新到Delphi 10.4 Sydney后,我的TVirtualStringTree实例将其Colors.XYZ属性存储在dfm文件中,尽管我将这些属性保留在默认值上:

在中,这些颜色值具有默认值,这通常意味着这些颜色值不应写入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文件中的这些默认颜色?

这是因为
StyleServices.IsSystemStyle
在designer以前的Delphi版本中返回True,现在在10.4中返回False


这将很快在Virtual TreeView中得到修复:

根本原因可能是表单设计器使用了:

Delphi 10.3 Rio中的“Windows”样式,因此
StyleServices.IsSystemStyle
返回
True

delphi10.4rio中的“Windows10”样式,因此
StyleServices.IsSystemStyle
返回
False


许多组件包都会受到该更改的影响,并更新.DFM文件中的组件颜色。例如,在TMS VCL UI Pack中,到处都有此代码
(LStyle.Name“Windows”)

属性声明中的默认值意味着流媒体系统将这些值与实际值进行比较,如果它们相同,那么它们就不会被写入。所以流媒体系统再也看不到这些属性的默认值了?我想知道这是否与“颜色”有关是对象本身。这在新项目中还是仅在旧项目中发生?@Anse iamjoosy试图说的是,
Colors
property对象的构造函数必须为与子属性上声明的默认值匹配的子属性赋值。是否有这样的构造函数,它是否设置了正确的属性值?请注意,在DFM示例中,
DisabledColors
保存为
clGray
,但其默认值为
clBtnShadow
。这意味着构造函数不匹配,或者
Colors
对象中的其他内容在构造后更改子属性值。与其他属性保存为数字而不是文本别名相同Embarcadero论坛上的一个相关问题解释了一个可能的罪魁祸首: