Las ventanas MDIChild han de estar en available forms y crearlas con algo como....
Código:
if not VentanaCreada(fmMenu, 'CMonedes') then
CMonedes := TCMonedes.Create(Application);
try
CMonedes.Show;
except
on E : Exception do
begin
FreeAndNil(CMonedes);
end;
end;
donde
VentanaCreada es una función que me dice si la ventana esta creada o no (true/false) porque no quiero más de 1 instancia de la misma (si ya está creada la muestro con el Show)
Para cerrarla, sólo has de hacer lo que mencionas, en el OnClose poner el Action := caFree