Вы найдете гибкую невизуальную древовидную структуру в библиотеке DI Containers (коммерческая). Тем не менее, как уже отмечалось выше, на самом деле довольно легко выполнить свою собственную работу, добавив только те функции, которые вам нужны.
Вы можете использовать только два базовых объекта: TNode и TNodeList (например, потомок TObjectList). Как минимум, TNode требуется только три члена: ваши строковые данные, ссылка на его родительский узел (nil, если узел является корневым) и TNodeList, который является списком его дочерних узлов. Остается (несколько утомительная) реализация различных сопутствующих методов, таких как Add (), Delete (), IndexOf (), MoveTo (), GetFirstChild (), GetNext () и т. Д. Базовое дерево должно быть меньше единицы -nighter.