Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 804

•  TDictionary Custom Sort  6 806

•  Fast Watermark Sources  6 587

•  3D Designer  9 547

•  Sik Screen Capture  6 924

•  Patch Maker  7 374

•  Айболит (remote control)  7 317

•  ListBox Drag & Drop  6 178

•  Доска для игры Реверси  98 130

•  Графические эффекты  7 487

•  Рисование по маске  6 778

•  Перетаскивание изображений  5 631

•  Canvas Drawing  6 014

•  Рисование Луны  5 804

•  Поворот изображения  5 256

•  Рисование стержней  3 851

•  Paint on Shape  3 008

•  Генератор кроссвордов  3 960

•  Головоломка Paletto  3 142

•  Теорема Монжа об окружностях  3 973

•  Пазл Numbrix  2 624

•  Заборы и коммивояжеры  3 437

•  Игра HIP  2 354

•  Игра Go (Го)  2 267

•  Симулятор лифта  2 671

•  Программа укладки плитки  2 230

•  Генератор лабиринта  2 782

•  Проверка числового ввода  2 389

•  HEX View  2 726

•  Физический маятник  2 415

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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



Автор: Lipskiy

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение узла в TreeView по пути заголовков

Функция выдает узел TTreeNode из дерева TreeView, находящийся по пути,
указанному в Path, в котором разделителем уровней является символ Separator.
Если узел не найден - выдается nil.
Ограничение - заголовки узлов дерева не должны содержать символа Separator.

Зависимости: ComCtrls, Classes, SysUtils
Автор:       lipskiy, lipskiy@mail.ru, ICQ:51219290, Санкт-Петербург
Copyright:   Собственное написание (lipskiy)
Дата:        26 июня 2002 г.
***************************************************** }

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;




Похожие по теме исходники

A Star (нахождение кратчайшего пути)

Нахождение кратчайшего пути

Дейкстра: поиск кратчайшего пути




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте