1

更新到 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 文件中的这些默认颜色?

4

2 回答 2

2

这是因为StyleServices.IsSystemStyle在设计器以前的 Delphi 版本中曾经返回 True,现在在 10.4 中它返回 False。

这将很快在 Virtual TreeView 中得到修复:https ://github.com/JAM-Software/Virtual-TreeView/issues/975

于 2020-06-09T18:27:13.013 回答
0

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

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

Delphi 10.4 Rio 中的“Windows10”样式,所以StyleServices.IsSystemStyle返回False

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

于 2020-06-11T13:32:31.900 回答