I solved by intercepting the WM_COMMAND at the MainForm as the follow code shows:
type
TMDIMainForm = class(TForm)
protected
procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
end;
implementation
procedure TMDIMainForm.WMCommand(var Message: TWMCommand);
begin
case Message.ItemID of
SC_CLOSE, SC_MINIMIZE, SC_RESTORE, SC_MAXIMIZE:
begin
Message.Result := 0;
Exit;
end;
else
inherited;
end;
end;
At the child forms, I simple placed this:
procedure TMDIChild.OnCreate(Sender: TObject);
begin
WindowState := wsMaximized;
end;
Now my MDI childs stays maximized and the user isn't able to restore or minimize than.