CONTROLLO FINESTRE

L’ultima volta Antonio mi aveva aiutato sul sistema di gestione delle finesrtre;
avevo creato una classe windows che si chiama finestrabase
su questa classe avevo creato una propriet ‘chiamante’ di tipo weakref
e tutte le volte che chiamo una finestra utilizzo :

dim wclientifornitori as new clientifornitori wclientifornitori.chiamante = new WeakRef(self) wclientifornitori.nomodal = 0 wclientifornitori.Show

la variabile nomodal, gestita nella windows e se ha valore 0 attiva la finestra in modalit modal,
qui ovviamente si faranno delle operazioni e la finestra chiamante si aspetta un risultato.

prima della chiusura della finestra chiamata se in modalita modale eseguo il codice per aggiornare la finestra chiamante, un valore, una listbox etc…

if Chiamante<>nil and Chiamante.Value<>nil and Chiamante.Value isA pfa_ then
    pfa_(Chiamante.Value).Aggiorna(txtcodice.text)
end if

Ora vorrei implementare qualcosa che chiuda la finestra se me la dimentico in giro …
In pratica ho la finestra che chiama, quella chiamata che ne chiama un’altra e una ultima … ( o anche di pi )

PER ESEMPIO …
Apro la finestra documenti …
Da qui apro la finestra per aprire un nuovo documento ( e fino a qui non me ne frega nulla, non necessito di nessuna azione )
Dalla finestra nuovo documento su un campo faccio una ricerca ( e da qui voglio inizi il controllo ) mi si aprir sicuramente una finestra con una listbox dove posso selezionare una riga oppure posso inserire un nuovo record ( quindi mi si apre una finestra ) poi ovviamente in questa finestra ho altri controlli per la ricerca che a loro volta possono aprire altre finestre, e altre ancora, e ancora e ancora…
Per se faccio click sulla finestra principale nuovo documento vorrei che tutte le finestre aperte successivamente si chiudano…

Insomma voglio attivare il controllo finestra da un certo punto e se riattivo quella finestra voglio che tutte le nuove chiamate si chiudano tutte…
Che strada posso adottare ?