Delphi-Help

Главная Статьи Дерево (TreeView) Как получить узел в TTreeView по пути заголовков?

Как получить узел в TTreeView по пути заголовков?

Оцените материал
(0 голосов)


Как получить узел в TTreeView по пути заголовков?

function GetNodeInPath( Path: string; Separator: char; TreeView: TTreeView ): TTreeNode;
var
  List: TStringList;
  Node: TTreeNode;
  i: integer;
  s: string;
begin
   Result := nil;
   if ( TreeView = nil ) or ( Path = '' ) or
      ( TreeView.Items.Count = 0 ) or ( Separator = '' ) then
      Exit;
   List := TStringList.Create;
   // Меняем сепаратор на перевод строки
   s := StringReplace( Path, Separator, #13#10, [rfReplaceAll] );
   // Получаем список уровней
   List.Text := s;
   // Начинаем с нулевой ноды дерева
   Node := TreeView.Items[0];
   // Проходим по всему списку уровней пути
   for i := 0 to List.Count-1 do
   begin
      // Ищем имя ноды на текущем уровне
      while ( Node <> nil ) and ( Node.Text <> List[i] ) do
         Node := Node.getNextSibling;
      // Нода не найдена
      if Node = nil then
         Break;
      // Переходим на уровень ниже
      if i < List.Count - 1 then
      Node := Node.getFirstChild;
   end;
   List.Free;
   Result := Node;
end;

 

procedure TForm1.Button1Click(Sender: TObject);
begin
   TreeView1.Selected := GetNodeInPath( 'Каталог\Подкаталог', '\', TreeView1 );
end;

Авторизация



Счетчики