2

不标准的属性顺序会导致任何问题吗?

例如,IDE 将TButton组件存储在 DFM 文件中,如下所示:

  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
4

3 回答 3

6

似乎有些情况下顺序实际上很重要!

例如,请参阅 TStandardColorMap、TActionManager、TActionClientItem、TTabControl、TTreeView、TMonthCalendar、TDateTimePicker 和 TComboBoxEx(仅从 Vcl 中仅举几例)的已发布部分中的注释,其中已发布属性的顺序是相关的。

由于 DFM 中属性的顺序决定了发布属性的设置顺序,因此任何其他顺序都可能在从 DFM 读取组件后影响属性的值。

MartynA 在另一个答案中提到的修复机制不适用于此类属性。

于 2019-10-16T13:20:26.020 回答
0

没有区别。

TReader 类负责处理从 DFM 流中读取组件属性。这是通过创建从流中读取的属性值的“修复列表”来操作的,在读入整个组件之后,使用该列表来设置组件的属性。请参阅 Danny Thorpe 的 Delphi 组件设计 (ISBN 0-201-46136-6) 中的 Streaming 章节,了解更多详细信息,了解它为何如此设计。

我看到 Uwe Raabe 添加了一个答案,而且他通常是对的。

于 2019-10-16T12:16:53.560 回答
-1

据我所知,DFM 文件中的属性顺序并不重要。

于 2019-10-16T10:55:31.620 回答