Nja, entweder du öffnest dessen
Unit
und was sonst auch noch gut funktioniert, wenn man das Datenmodul in ein Designtimepackage packt und dort lädt (Create).
"erstellte" Datenmodule und Forms registrieren sich eigentlich automatisch global, so dass eine Namensauflösung "eigentlich" gut funktioniert,
und ansonsten muß das Datenmodul irgendwie bekannt sein, also manuell erstellt, oder im Designer geladen, oder z.B. über die Objektablage oder die Projektverwaltung gefunden und womöglich automatisch instanziiert (was nicht immer gut geht).
Aber wenn man es dennoch manuell machen will (z.B. auch damit immer die richtige globale Instanz genommen wird und z.B. nicht die Forum im Form-Designer, falls die
Unit grade geöffnet ist), dann
Delphi-Quellcode:
// ODER class function TMyHelperClassOrDataModul.FindGlobalModules(const Name: string): TComponent; static;
function FindGlobalModules(const Name: string): TComponent;
begin
Result := nil;
if SameText(Name, 'DM1') then
Result := DM1; // die globale Instanz
...
Dann im Register des Packages ein
RegisterFindGlobalComponentProc(FindGlobalModules);
und im Finalization natürlich nicht das
UnregisterFindGlobalComponentProc vergessen.