考虑以下代码:
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中测试
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |