Tuesday, October 31, 2006

Новые ExplicitХ проперти в DFM

В Turbo Delphi в DFM стали писаться 4 новыx проперти: ExplicitTop, ExplicitLeft, ExplicitHeight и ExplicitWidth.

Добавляются они сами. В Object Inspector-е их нет и менять их нельзя т.к. они public read only. Объявлены в TСontrol.

Эти новые проперти здорово раздувают файл формы. Но самое противное:

  1. Они постоянно меняются и при добавлении в VSS приходится тратить много времени на их вычитку.
  2. Теряется обратная совместимость формы. Для открытия DFM в ранних версиях надо вычистить все ExplicitX проперти.

Описание этих странных пропертей в хэлпе нет.

Зачем же они нужны?

Внятного ответа от Borland мной не найдено (если кто-то нашел – поделитесь, плиз). В единственном объяснении сказано что в ExplicitX проперти запоминаются значения соответствующих пропертей размеров и расположения, которые были до изменения пропертей Align или Anchor из их дефолтных значений.

Проверяем:

  1. В центр формы кладется панель. Форма сохраняется. В DFM ExplicitX пропертей нет.
  2. Align панели ставится в alBottom. Форма сохраняется. В DFM у панели появились ExplicitX проперти со значениями, равными ее Top, Left, Height и Width, когда она была в центре.
  3. Align панели ставится обратно alNone и… панель сама "прыгает" в середину формы. Форма сохраняется. В DFM ExplicitX пропертей нет.

Мне кажется этот эффект "прыганья" не стоит вышеописанных проблем.

И еще приведенное объяснение явно не полное, т.к. не объясняет эффект появления и исчезания ExplicitX пропертей в TabSheet-ах.


Tags: Turbo Delphi

No comments: