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;

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить