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; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!