Советы по Delphi

       

Позиция дочерних MDI-окон


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

У меня была аналогичная проблема -- она проявлялась при условии, когда свойство главной формы WindowState устанавливалось на wsMinimized.

Вот мое решение: добавьте этот небольшой метод к вашей главной форме:

interfaceprocedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
implementationprocedure TMainForm.CMShowingChanged(var Message: TMessage);vartheRect : TRect;begininherited;theRect := GetClientRect;AlignControls(nil, theRect);end;

Это работает, поскольку вызов AlignControls (в TForm) делает две вещи:

  1. выравнивает элементы управления (включая ваш проблемный StatusBar) и
  2. вновь позиционирует окно клиента относительно главной формы (оно ссылается на ClientHandle) после того, как элементы управления будут выравнены... что, впрочем, мы и хотели.
- Richard Cox [000831]



Содержание раздела