Die Frage ist doch, wo du auf WM_SYSCOMMAND reagierst? In TApplication.OnMessage? Wenn ja ist es dort falsch, weil du dann nicht das Formular rausbekommst.
Hab hier kein Delphi deshalb einfach mal ein Schuss ins Blaue. In deinem
MDI-Formular machst ne neue Prozedur mit folgender Deklaration:
procedure WMSysCommand(Message: TWMSysCommand);message WM_SYSCOMMAND;
Damit wird im Child auf die Nachricht reagiert, dementsprechend bekommst dort dann über Self das Formular raus und die Nachricht wird wirklich dort behandelt, wo sie auftritt.
P.S: Ist wirklich ungetestet und ich habs noch nicht gemacht. Deshalb kanns totaler Müll sein. Allerdings bin ich optimistisch.