Die Class-Constructor aller "verwendeten" Klassen werden vom Delphi immer vor dem Initialization aufgerufen
und die Class-Destructor dementsprechend nach dem Finalization.
Also in Initialization und Finalization sind immer alle Klassen lokalen Klassen initialisiert. (jene, welche auch im Programm
einkompiliert gelinkt wurden)
Alle Units in der Interface-Uses-Klausel sind auch immer initialisiert, wenn man sie irgendwo in der eigenen
Unit verwendet.
Darum sollte man besser Units immer im Interface einbinden und nur problematische Kreuzverlinkungen in der Implementation.
Die Units in einer Implementation-Uses-Klausel können in Class-Controtor und Initialization
uninitialisiert sein, aber im laufenden Programmcode sind die dann auch immer initialisiert.
Vorteil/Nachteil: Initialisierung im Initialisation-Block bindet immer alle da aufgerufenen Klassen ins Programm ein.
Und bei Initialisierung im Class-Constuctor, da kann der
Compiler Linker die ganze Klasse weglassen, wenn sie nachher nirgendwo im Programm verwendet wurden.
Pssst, mit FMX/
VCL hat das eigentlich nichts zu tun ... gehört eher zur
RTL.