FreeAndNil kennt "Dein" Free nicht!
Wie soll es das dann aufrufen?
Nunachmal: Überschreibe Destroy, welches vom Free und somit auch vom FreeAndNil aufgerufen wird.
Genauso wie man beim TComponent alle Initialisierungen ins überschriebene Create(Owner) reinmachen muß, denn nur Dieses kennt die
VCL/FMX und nur das kann beim Laden der Form aufgerufen werden.
"Zusätzliche" Create, mit weiteren Parametern für ein manuelles Erstellen, sind dort OK, aber beim Free/Destroy gibt es da keine Kompromisse/Alternativen.