Показать сообщение отдельно
  #2  
Старый 23.07.2015, 15:58
Аватар для ___toha___
___toha___ ___toha___ вне форума
Прохожий
 
Регистрация: 18.12.2012
Адрес: Сасово
Сообщения: 23
Версия Delphi: 7
Репутация: 10
По умолчанию

Вроде удалось реализовать, но метод не очень быстрый. Если кто найдет способ быстрее, то пишите!
Сейчас опишу на том примере решение:

Код:
for i := 0 to Length(R3) - 1 do
  begin
  Level := 0;
  TreeView.Items.AddChild(TreeView.Items[FindItem(Level)], R3[i].Name);
		
    for j := 0 to Length(R3[i].R2)-1 do 
      begin
        Level := 1;
        TreeView.Items.AddChild(TreeView.Items[FindItem(Level)], R3[i].R2.Name);
			
        for k := 0 to Length(R3[i].R2[j].R1)-1 do
          begin
            Level := 2;
            TreeView.Items.AddChild(TreeView.Items[FindItem(Level)], R3[i].R2[j].R1[k].Name);
          end;
        end;
    end;


Где FindItem - функция, которая ищет элемент по уровню:
Код:
function FindItem(Level: integer):integer;
var
Index: integer;
begin

Index := CodeEditorForm.Structure.Items.Count - 1;

while index > 0 do
  begin
    if TreeView.Items[index].Level = Level then
      break
    else
      Index := Index - 1;
  end;

result := index;

end;
Ответить с цитированием