So möchte ich es auch gerne haben, aber ich verstehe ehrlich gesagt nicht, warum das sehr zuverlässig funktioniert. Ich habe immer gedacht, dass wenn eine
Unit in den uses steht, dass sie dann wieder neu created wird, aber warum steht dann die Procedure aus dem Hauptfenster zur Verfügung.
Die
Unit ist lediglich ein Container. Der Eintrag in der uses heißt nur, dass du im Quelltext auf dort deklarierte Typen, Konstanten und Variablen zugreifen kannst, mehr nicht. Erzeugt wird dadurch nichts. Das ist nur die Zugriffsmöglichkeit.
Es werden lediglich beim Starten der Anwendung die initialization und beim Beenden die finalization Sektion ganz unten in der
Unit ausgeführt, ebenso wie Klassenkonstruktoren und -destruktoren. Dabei werden immer zuerst die Units in der uses initialisiert und dann die
Unit selbst. Das ist der Grund, dass das so funktioniert.
Die Funktionen aus dem Hauptfenster weist du ja selbst von außen zu. Wo die deklariert sind, weiß die
Unit gar nicht. Die bekommt nur die Adresse und kann sie so aufrufen.