基于子范围类型集的 Delphi 属性未正确传输到 DFM 文件

Ale*_*dre 6 delphi vcl

考虑以下代码:

type
  TColors = (Red, Blue, Green, Yellow, Orange);  // base type
  TMyColors = Green..Orange;                     // subrange type
  TAllowedColors = set of TMyColors;             // set based on the subrange above

  TMyComponent = class(TComponent)
  private
    FAllowedColors: TAllowedColors;
  published
    property AllowedColors: TAllowedColors read FAllowedColors write FAllowedColors;
  end;
Run Code Online (Sandbox Code Playgroud)

一旦安装到设计时包中,对象检查器就会正确显示属性AllowedColors:

正确显示允许的颜色

请注意,绿色和黄色均已设置。现在,保存表单并检查 DFM 文件后,我得到的结果是:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ...
  object MyComponent1: TMyComponent
    AllowedColors = [Red, Blue]
    Left = 80
    Top = 56
  end
end
Run Code Online (Sandbox Code Playgroud)

请注意,IDE 将 AllowedColors错误地保存为 [Red, Blue] 而不是 [Green, Yellow]。不知何故,它在流式传输时使用子范围类型的序数,但随后它使用基本类型,而不是子范围类型(​​尽管在任何情况下 Green 应等于 2 - 而不是 0)。

这是预期行为还是已知问题?除了自己处理 DFM 文件的流式传输之外,还有其他解决方法吗?

PS:在Delphi 10.2.3和10.3.3中测试