Code:

// Search a TreeItem through its Text property

// Return value is a TreeNodeObject

function Form1.TreeItemSearch(TV: TTreeView; SucheItem: string): TTreeNode;

var

i: Integer;

iItem: string;

begin

if (TV = nil) or (SucheItem = '') then Exit;

for i := 0 to TV.Items.Count - 1 do

begin

   iItem := TV.Items[i].Text;

   if SucheItem = iItem then

   begin

     Result := TV.Items[i];

     Exit;

   end

   else

   begin

     Result := nil;

   end;

end;

end;

 

 

Code:

{ **** UBPFD *********** ****

>> Получение узла в TreeView по пути заголовков

 

Функция выдает узел TTreeNode из дерева TreeView, находящийся по пути,

указанному в Path, в котором разделителем уровней является символ Separator.

Если узел не найден - выдается nil.

Ограничение - заголовки узлов дерева не должны содержать символа Separator.

 

Зависимости: ComCtrls, Classes, SysUtils

Автор:       lipskiy, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., ICQ:51219290, Санкт-Петербург

Copyright:   Собственное написание (lipskiy)

***************************************************** }

 

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 (TreeView.Items.Count = 0) or (Path = '') 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;