Имеет ли значение порядок свойств в файле DFM? - PullRequest
2 голосов
/ 16 октября 2019

Может ли нестандартный порядок свойств вызвать какие-либо проблемы?

Например, 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

Ответы [ 3 ]

6 голосов
/ 16 октября 2019

Кажется, бывают случаи, когда порядок действительно имеет значение!

Примеры см. В комментариях в опубликованном разделе TStandardColorMap, TActionManager, TActionClientItem, TTabControl, TTreeView, TMonthCalendar, TDateTimePicker и TComboBoxEx (и это лишь некоторые из Vcl), где порядок опубликованных свойств имеет значение.

Поскольку порядок свойств в DFM определяет порядок установки опубликованных свойств, любой другой порядок может влиять на значения свойств после чтения компонента из DFM.

Fix-механизм up, упомянутый MartynA в другом ответе, не используется для такого рода свойств.

0 голосов
/ 16 октября 2019

На самом деле это не имеет значения.

Класс TReader отвечает за обработку чтения свойств компонента из потока DFM. Для этого создается «список исправлений» значений свойств, считываемых из потока, который используется после считывания всего компонента для установки свойств компонента. Смотрите главу «Потоковое вещание» в Delphi Component Design от Danny Thorpe (ISBN 0-201-46136-6), чтобы получить более полную информацию о том, почему он был спроектирован таким, какой он есть.

Я вижу, Уве Раабе добавил ответ,и обычно он прав.

0 голосов
/ 16 октября 2019

Насколько я знаю, порядок свойств в файле DFM не имеет значения.

...