Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

01.01.2007
Richard Cox

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

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

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

interface

procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;

implementation

procedure TMainForm.CMShowingChanged(var Message: TMessage);
var
  theRect: TRect;
begin
  inherited;
  theRect := GetClientRect;
  AlignControls(nil, theRect);
end;

Это работает, поскольку вызов AlignControls (в TForm) делает две вещи: выравнивает элементы управления (включая ваш проблемный StatusBar) и вновь позиционирует окно клиента относительно главной формы (оно ссылается на ClientHandle) после того, как элементы управления будут выравнены... что, впрочем, мы и хотели.

Previous page:
Проблема всплывающих подсказок в дочерних MDI-формах
Top:
DRKB
Next page:
Как сделать родительское окно с фоновым рисунком в клиентской области?