Bonsoir la planete

J'ai un gros problème: je me suis lancé dans la création d'un programme multi Form.
J'ai donc
- une Form Principale qui me fait l'affichage d'une webcam
- une première Form secondaire qui gère une interface USB vers une carte I/O
- une seconde Form secondaire qui phagocyte un programme de navigation routiere
- Et une troisième form qui contient un player MP3.
Toutes mes Form sont en bsnone, elles ont des positions prédéfinie à l'écran, et son susceptiblede changer de taille, de se recouvrir mutuellement. Par exemple, la partie MP3 est un rectangle de 120(w) *268(h) dans 90% des cas, sauf quand j'ai besoin d'une interface + complete, au quel cas la form fait 680*268 et là j'ai les boutons load et scan, mes scrollList pour les mp3 et les playlists etc etc. A ce moment là, elle cache la Form de navigation routiere (pas grave, guidage vocal) Vous voyez le principe ?
Tout semble marcher jusqu'au moment ou je veux quitter l'appli, et là ca se gate.
j'ai systématiquement une erreur A win32 api function failed, je tente un CTRL-F2, boom, le programme a provoquer un gros merdier dans Kernel 32, la machine freeze et j'ai le droit de rebooter à la manière hard (le piti bouon reset en facade, ahemmm).
Pourl'instant, j'ai un bouton exit (surla Form principale ) qui fait :
Begin
Form_Nav.Close;
Application.processmessages;
Form_Hard.Close;
Application.processmessages;
Form_MP3.Close;
Application.processmessages;
Form_Main.Close;
end.
Bien evidement, les OnCLose de chaques form secondaires sont présents pour arreter les timers, liberer les images si besoins, fermer le prog de navigation proprement (et c'est pas du gateau), purger mes tableaux dynamique, fermer la carte interface.
En fait, chacune de ces form marche bien en tant qu'appli autonome, mais ensemble...

D'ou mon problème,comment fermer de manière propre une appli Multi Form.?
Delphi 7 Ent. sous win98se.