Поведение фрейма в приложении Delphi - PullRequest
1 голос
/ 06 июня 2009

У меня есть приложение, которое широко использует фрейм и должно скрывать / показывать определенные кнопки в зависимости от того, какая форма активна в данный момент. Чтобы кнопки были аккуратными и организованными надлежащим образом, я поместил их на панели и показываю или скрываю панели по мере необходимости для каждой формы. Моя проблема в том, что когда каждая форма изначально создается, панели на раме вышли из строя, хотя я явно говорю им, в какой порядок их помещать. После того, как я скрываю и снова показываю форму, панели располагаются в правильном порядке. Любые предложения о том, как держать их в правильном порядке с самого начала?

Ответы [ 5 ]

3 голосов
/ 06 июня 2009

Вместо того, чтобы давать панелям явные позиции, попробуйте дать им выравнивания. Они, как правило, держатся лучше, чем обычно, и лучше справляются с изменением размера, если вы изменяете размер формы.

1 голос
/ 06 июня 2009

Может быть, вы можете взглянуть на DevExpress LAyoutControl? Это помогает нам создавать интерфейсы, которые всегда выглядят хорошо, независимо от того, показываем мы или скрываем определенные группы / панели. Он даже позволяет настраивать интерфейс во время выполнения, если вы этого хотите!

1 голос
/ 06 июня 2009

Вы также можете попробовать использовать стековую панель (или она была поточной панелью) в качестве родительской для панелей. Тогда у вас будет ордер вместо позиции для манипулирования.

0 голосов
/ 07 июня 2009

У меня была эта проблема, и я обнаружил, что решение было сделать это в FormCreate (или в методе CMShowingChanged вашего фрейма):

MyPanel1.Align := alNone;
MyPanel2.Align := alNone;
MyPanel1.Align := alBottom;
MyPanel2.Align := alBottom;

Восстановите в том порядке, в котором вы нуждаетесь - похоже, визуально отсортирован порядок.

0 голосов
/ 06 июня 2009

Вы можете попытаться упорядочить их по координатам, т. Е. Настройку сверху и слева. Если ваши панели не выровнены, это всегда будет работать (но это займет немного работы).

...