Nee, dein Problem ist hierbei eher, dass du bei
dmFoo := TdmFoo.Create(Self)
die globale Variable verwendest, anstatt einer lokalen Variable (ein Feld in TfrmFoo).
Tipp: Am Einfachsten immer als Erstes diese globale Variable löschen (außer "eine" Instanz davon lässt du automatisch von Delphi erzeugen > siehe
DPR/Projektoptionen)
Und schon kommt man garnicht erst auf die Idee diese Variable ausversehn nutzen zu wollen.