У меня есть список многих объектов. Кроме того, у меня есть дополнительная группа списков, использующих эти объекты. Строгое правило, что любой данный объект либо принадлежит основному списку, либо одному из других списков.
В общем случае главный объект содержит основной список объектов. Кроме того, этот главный объект также имеет свою собственную концепцию группировки этих объектов в любой отдельный произвольный список.
Я хотел бы иметь возможность запросить список тех объектов, которые в настоящее время не являются частью какого-либо из другие списки. Естественно, я могу предположить, что могу синхронизировать выделенный список этих объектов, но мне не нужно подходить к этому. Вместо этого в любой момент времени мне нужно иметь возможность получить список тех объектов, которые НЕ являются частью какого-либо из этих групповых списков.
Иными словами, из этого большого гигантского списка всех возможных объектов мне нужно иметь возможность перебирать один за другим те, которые НЕ являются частью других списков групп. Определить, является ли это частью одного из этих списков, легко. Но как мне получить список предметов, которые НЕ являются частью какой-либо группы?
В частности, без создания целого отдельного списка. Я намерен использовать этот основной список объектов, но отфильтровать те объекты, которые являются частью любого данного подсписка объектов.
Более конкретно, мне нужно иметь возможность просматривать список объектов, которые не являются частью какого-либо другого списка. Я не хотел бы отслеживать совершенно отдельный «разгруппированный» список. Я предпочел бы использовать основной список и выполнять итерацию каждого объекта по порядку в списке, пропуская те объекты, которые являются частью подсписков.
Например, допустим, у меня есть основной список 100 виджетов. Только 30 из них были отнесены к определенному списку групп c. Остальные 70 объектов по-прежнему должны быть доступны путем запроса списка.
Я ищу oop что-то вроде ...
for X := 0 to UngroupedObjectCount-1 do begin
O:= UngroupedObjectByIndex[X];
//TODO: Do something with O
end;