procedure TMainForm.CMShowingChanged(varMessage: TMessage);
var
theRect: TRect;
begin inherited;
theRect := GetClientRect;
AlignControls(nil, theRect);
end;
Это работает, поскольку вызов AlignControls (в TForm) делает две вещи:
выравнивает элементы управления (включая ваш проблемный StatusBar) и
вновь позиционирует окно клиента относительно главной формы (оно ссылается на ClientHandle) после того, как элементы управления будут выравнены... что, впрочем, мы и хотели.