Слияние MDI-меню

Delphi не совсем корректно выполняет объединение меню в MDI-приложениях. Если окно MDIChild максимально развернуто и добавляется другое окно MDIChild, управляющее меню MDIChild (родительское основное меню) или исчезает совсем, или делает это в момент нажатия на него.

По всей видимости, для слияния меню Delphi использует функцию InsertMenu() с параметром MF_POSITION. Тем не менее, если дочернее MDI-окно максимально развернуто, всплывающее (pop-up) меню, называемое еще контекстным, добавляется к меню MDI-приложения, на одну позицию дальше, чем необходимо. Это стандартное поведение системы, поскольку системное меню активного дочернего окна включается в первую позицию панели меню MDI-окна.

Согласно WinSDK, если активное дочернее окно максимально развертывается, вставляется новое всплывающее меню. При этом к значению позиции добавляется 1 (единица).