Ответ 1
Это на самом деле по дизайну. Значения перечисления имеют единицу или глобальную область. Они не являются частными, так как они не являются частью класса. Они охвачены глобальным уровнем.
Вы можете упорядочить значения enum для локальной области, включив директиву scoped enums:
{$SCOPEDENUMS ON}
Директива
$SCOPEDENUMS
разрешает или запрещает использование регистровых перечислений в коде Delphi. Более конкретно,$SCOPEDENUMS
влияет только на определения новых перечислений и только контролирует добавление символов значения перечисления в глобальную область.В состоянии
{$SCOPEDENUMS ON}
перечисления имеют область действия, а значения перечисления не добавляются в глобальную область. Чтобы указать член облачного перечисления, вы должны указать тип перечисления.