DFM 文件中属性的顺序重要吗?
Does the order of properties in DFM file matter?
属性的非标准顺序会导致任何问题吗?
例如IDE在DFM文件中存储一个TButton
组件如下:
object Button1: TButton
Left = 288
Top = 160
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
如果我手动更改属性的顺序,这会导致任何问题吗?
object Button1: TButton
OnClick = Button1Click
Left = 288
Top = 160
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
end
据我所知,DFM 文件中的属性顺序无关紧要。
我觉得这没什么区别。
TReader class 负责处理从 DFM 流中读取组件属性。这通过创建从流中读取的 "fix-up list" 的 属性 值来操作,在读入整个组件后,使用该流来设置组件的属性。请参阅 Danny Thorpe (ISBN 0-201-46136-6) 的 Delphi Component Design 中的 Streaming 章节,了解更全面的细节以及它为何如此设计。
我看到 Uwe Raabe 添加了一个答案,他通常是对的。
似乎有些情况下顺序确实很重要!
有关示例,请参阅 TStandardColorMap、TActionManager、TActionClientItem、TTabControl、TTreeView、TMonthCalendar、TDateTimePicker 和 TComboBoxEx(仅举几例来自 Vcl)的已发布部分中的注释,其中已发布属性的顺序是相关的。
由于 DFM 中的属性顺序决定了已发布属性的设置顺序,任何其他顺序都可能会影响从 DFM 读取组件后的属性值。
MartynA 在另一个答案中提到的修复机制不用于此类属性。
属性的非标准顺序会导致任何问题吗?
例如IDE在DFM文件中存储一个TButton
组件如下:
object Button1: TButton
Left = 288
Top = 160
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
如果我手动更改属性的顺序,这会导致任何问题吗?
object Button1: TButton
OnClick = Button1Click
Left = 288
Top = 160
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
end
据我所知,DFM 文件中的属性顺序无关紧要。
我觉得这没什么区别。
TReader class 负责处理从 DFM 流中读取组件属性。这通过创建从流中读取的 "fix-up list" 的 属性 值来操作,在读入整个组件后,使用该流来设置组件的属性。请参阅 Danny Thorpe (ISBN 0-201-46136-6) 的 Delphi Component Design 中的 Streaming 章节,了解更全面的细节以及它为何如此设计。
我看到 Uwe Raabe 添加了一个答案,他通常是对的。
似乎有些情况下顺序确实很重要!
有关示例,请参阅 TStandardColorMap、TActionManager、TActionClientItem、TTabControl、TTreeView、TMonthCalendar、TDateTimePicker 和 TComboBoxEx(仅举几例来自 Vcl)的已发布部分中的注释,其中已发布属性的顺序是相关的。
由于 DFM 中的属性顺序决定了已发布属性的设置顺序,任何其他顺序都可能会影响从 DFM 读取组件后的属性值。
MartynA 在另一个答案中提到的修复机制不用于此类属性。