Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2013, 19:36   #1
lekssp
 
Регистрация: 07.11.2012
Сообщений: 7
Лампочка ShellTreeFiew

Как в ShellTreeFiew узнать имя и адрес выделенного файла (или папки).
Очень надо . Помогите плз
lekssp вне форума Ответить с цитированием
Старый 04.01.2013, 20:34   #2
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
По умолчанию

Получение узла в 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 (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;
Получить строковый путь в TTreeView
Код:
function SrNodeTree(pTreeNode: TTreeNode; var sRuta: string): string; 
begin 
  sRuta := pTreeNode.Text + ' > ' + sRuta; 
  if pTreeNode.Level = 0 then Result := sRuta 
  else  
    Result := SrNodeTree(pTreeNode.Parent, sRuta); 
end; 

{*--------------------------------------------- 
  Click an Item 
 ---------------------------------------------*} 

procedure TForm1.TreeView1Click(Sender: TObject); 
var 
  sPath: string; 
begin 
  label1.Caption := SrNodeTree(TreeView1.Selected, sPath); 
end;
beegl вне форума Ответить с цитированием
Старый 06.01.2013, 13:31   #3
lekssp
 
Регистрация: 07.11.2012
Сообщений: 7
По умолчанию

Спасибо, но после просмотра ответа нашёл более простой способ : shelltreeview1.path
lekssp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск