In questo caso allora c'è un problema diverso, anche se non riesco a capire come possa riproporsi il caso dato che tu rimuovi variabili globali che utilizzi erroneamente, quindi non dovresti più potervi accedere, e lo stesso vale per le variabili locali delle procedure che creano e aprono il Form, a meno che non siano queste procedure a memorizzare da qualche parte o inizializzare nel modo errato il Form che vanno a creare.

Tutto il codice che riguarda e opera sul Form che viene aperto va spostato nella classe del Form stesso: la procedura che effettua la creazione si dovrebbe limitare - appunto - a creare la finestra e passare solo i parametri indispensabili che consentono a essa di inizializzarsi.
Credo di aver compreso il problema, quando ho iniziato il progetto, per mia incompetenza passavo l'ID del documento da aprire come variabile globale, in pratica allo stesso livello della variabile Form che Delphi crea in automatico e che ho dovuto eliminare.

Questo, sicuramente pregiudica il corretto funzionamento dell'applicazione. A questo punto, se il ragionamento fila, devo spostare la variabile ID allo stesso livello della classe TFORM, magari Public e dovrei riuscire a risolvere.

Ci provo subito e ti faccio sapere.

Ad esempio, sfruttando i Frame, puoi creare un'interfaccia che si occupa specificatamente di modificare i dettagli di un elemento: questa interfaccia non è legata da una finestra ma può essere creata ovunque, senza duplicarne il codice s'intende, consentendo di realizzare architetture molto più flessibili.

Dai un'occhiata ad esempio a questa pagina (è un articolo tratto da un esempio pubblicato da me e dovrebbe essere abbastanza semplice).

Ciao!
La gestione a frame non è male ma, purtroppo, io sviluppo plugin su un'applicazione che è gestita con MDI form, quindi, per uniformità, mi trovo costretto a lavorare così.

Per le nuove applicazioni, però seguirò il tuo consiglio.

Ciao e grazie.