Este problema parece distinto al que expones en otro hilo, pero pueden estar relacionados. La solución se puede complicar.
Códigos de error delphi
216 General protection fault
Muy probablemente estás intentando acceder a un objeto que no existe en memoria.
1.- Hay un detalle que no acabo de creerme, ¿creas las 22 ventanas nada más arrancar el programa y las ocultas al usuario?
O las creas en tiempo de ejecución con algo así:
Código Delphi
[-]
application.createform(tform1, form1);
form1 := TForm1.create(application);
2.- Al tiempo de quitar una ventana de vista al usuario, ¿la destruyes o la ocultas con Hide?
Creo que la mejor forma para ayudarte es que muestres algo de código que uses. Ahora sólo podemos imaginar lo que haces, pero no podemos asegurar que lo haces como debieras.
Saludos