Delphi: свойства фрейма не обновляются, когда я ожидаю их (они застряли) - PullRequest
4 голосов
/ 04 августа 2011

У меня есть рамка на форме.Когда я изменяю фрейм (кнопки добавления / удаления, метки), в форме не появляются никакие изменения, или элементы управления имеют другие позиции в форме, которые находятся в фрейме.Если удалить рамку из формы и добавить ее снова -> Ok.

Почему?Насколько я помню, в Delphi 2010 (сейчас Delphi XE) проблем не было.

Спасибо.

1 Ответ

13 голосов
/ 04 августа 2011

Итак, вы создали фрейм, а затем сбросили его экземпляр в другой форме, и проблема в том, что последующие изменения, внесенные в исходный фрейм, сразу не отображаются, пока вы не удалите экземпляр и не уроните его повторно?

Вам не нужно удалять фрейм, просто щелкните правой кнопкой мыши и выберите элементы управления, для которых вы хотите, чтобы их свойства были получены из их основных свойств (оригинального фрейма), и нажмите Revert to inherited. Как ни странно, Select All не работает в кадрах.

Это одна из причин, по которой я избегаю фреймов. Мне бы хотелось, чтобы у фреймов было свойство «не разрешать настройку» (AllowCustom = false), которое предотвращало бы любые конфликты DFM во время разработки, не позволяя фреймам иметь эти странные двойные наборы свойств.

Еще один способ нормализовать ваши фреймы - щелкнуть правой кнопкой мыши и просмотреть форму в виде текста, а затем уменьшить размер фрейма до следующего:

 inline Frame61: TMyFrame61
    Left = 0
    Top = 0
    Width = 500
    Height = 500
    Align = alNone
    TabOrder = 0
    ExplicitLeft = 31
    ExplicitTop = 33
  end

Теперь он вообще не содержит переопределенных свойств.

Если я перетащу один из элементов управления в другое место (даже случайно), в DFM, где был отброшен кадр, произойдет следующее:

 inline Frame61: TMyFrame6
    Left = 0
    Top = 0
    Width = 500
    Height = 500
    Align = alNone
    TabOrder = 0
    ExplicitWidth = 527
    ExplicitHeight = 337
    inherited Edit2: TEdit
      Left = 19
      Top = 77
      ExplicitLeft = 19
      ExplicitTop = 77
    end   
  end

Эти дополнительные мелочи в DFM мешают изменениям, которые вы сделали на другом уровне. Обычно добавление дополнительных элементов управления и удаление элементов управления не является проблемой (дополнительные элементы управления должны отображаться при добавлении, автоматически, а удаленные элементы управления должны исчезать), но с эффектами проблем позиционирования (перекрытия элементов управления и т. Д.) Может быть эффект, что вы не пока не увидишь изменения.

...