Para asegurarte de que se destruyen dichos formularios al cerrarlos, en el evento OnClose de los mismos, escribes:
action := caFree;
De todas formas, si tienes variables apuntando a esos formularios, imagino que chequearás antes de crearlos que apunten a nil, en este caso, al cerrarse el formulario debes asegurarte de que se pongan a nil también dichas variables. Una manera de hacerlo sería que asignaras un procedimiento a cada formulario que éste llamara al destruirse. El procedimiento, cómo no, se encargaría de asignar nil a la variable correspondiente.
De todas formas, lo normal es no asignar variables globales a formularios sino consultar las propiedades Forms[Index] y FormCount del objeto Screen, y hacer un bucle que recorra todos los Forms del programa, si se encuentra un Form del tipo que se quiere crear, simplemente se llama a Show, si no se encuentra se crea y se muestra en pantalla.
|