![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#2
|
|||
|
|||
![]() Да нет такого языка. Это что-то специфическое.
В принцпе, не самая сложная структура. Узел дерева либо содержит строку, либо список (я имею в виду 3й параметр). Да, для отображения лучше использовать что-то вроде TTreeView. Вообще, видел компоненты, реализующие что-то типа TTreeList, т.е. дерево с колонками в итемах. Вроде, TVirtualTreeView позволяет твкое делать, но сам с ним не работал (не нужно было пока). Сохранять можно просто обходом дерева. Код:
// Класс с данными, привязанный к TTreeNode.Data type TCommandNode = class Number : String; Name : String; Command : String; end; ... function toString(Node : TTreeNode) : String; var d : TCommandNode; i : Integer; begin d := TCommandNode(Node.Data); result := Format('"%s" "%s"',[d.Number,d.Name]); If (Node.Items.Count = 0 Then result := result + Format(' "%s"'#13#10,[d.Command]) Else Begin result := result + #13#10 + '{' + #13#10; For I := 0 To Node.Items.Count Do result := result + toString(Node.Items[i]); result := result + '}' + #13#10; End; end; Как-то так. Не проверял и писал по памяти, но суть должна быть понятна. Параметр вызова - корневой узел дерева. Если из несколько, то надо в цикле перебрать их все и результат объединипть. Последний раз редактировалось lmikle, 17.09.2022 в 00:34. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Gareth (12.09.2022)
|