E' probabile che l'effetto riscontrato sia dovuto al fatto che nel codice delle Form che fanno parte dell'applicazione tu faccia uso direttamente delle variabili che contengono il riferimento al Form creato.

Se utilizzi la variabile globale che Delphi inserisce in ciascuna unit che contiene un Form, ogni volta che usi l'istruzione Application.CreateForm, questa provvederà a creare una nuova finestra e a memorizzarne il riferimento nella variabile specificata; se questa variabile faceva precedentemente riferimento ad un'altra finestra, tale valore verrà perduto e tutto quanto si riferirà da quel momento in poi alla nuova istanza creata.

Un ulteriore suggerimento che posso dare, visto anche l'approccio seguito nell'architettura dell'applicazione, è quello di usare una finestra modale, e non una MDI Child, per modificare i dati di un record, anche perché - se hai fatto uso di controlli "data aware" con relativo TDataSource - sarà difficile separare le finestre dei dettagli in modo che si sincronizzino con quella principale (che contiene la griglia di tutti gli elementi) ma modificando ciascuna un record diverso di quella griglia.

Chiaramente, per poter essere più specifico, servirebbe una quantità maggiore di codice da analizzare.

Come primo suggerimento drastico, ti suggerisco di rimuovere le variabili che Delphi inserisce automaticamente nelle unit appartenenti al tipo del Form definito nel file; in questo modo, ti garantirai di non fare riferimento nel codice a istanze specifiche di quelle finestre.

Infine, se si tratta di un'applicazione nuova, onestamente abbandonerei l'approccio MDI e cercherei di orientarmi su un'architettura visuale più moderna e funzionale, visto che MDI è deprecata da tanto tempo e non utilizzata più dalla maggior parte dei programmi più recenti.

Ciao!