Du kannst dir einfach merken, daß man nur das sieht, was "direkt" in den in Uses angegebenen Units enthalten ist
und zwar in der Reihenfolge von der letzten zur ersten
Unit.
Das ist also ganz einfach komplett falsch, was da steht.
Von dem, was im Interface ist, wird alles, was nicht private (in Klassen), grundsätzlich auch erstmal nicht protected und was auch keine
Unit ist, in der aufrufenden
Unit verfügbar sein,
also nur das, was auch "wirklich" da drin "sichtbar" ist.
Was man machen kann, ist z.B. einen Alias von einem Typ oder die Kopie einer Konstante, bzw. die Umleitung einer Funktion aus der Unit3 in Unit2 anzulegen und diese dann in Unit1 zu nutzen.
Bei einem gleichnamigen "Alias" ist es dann egal, ob das Original aus Unit3 oder der Alias aus Unit2 in Unit1 verwendet wird, da es intern der selbe Typ ist.