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.