Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Показываем директории в TTreeView

Delphi , Файловая система , Директории

Показываем директории в TTreeView


procedure TForm1.GetDirectories(Tree: TTreeView; Directory: string;
Item: TTreeNode; IncludeFiles: Boolean);
var 
  SearchRec: TSearchRec; 
  ItemTemp: TTreeNode; 
begin 
  Tree.Items.BeginUpdate; 
  if Directory[Length(Directory)] <> '\' then Directory := Directory + '\'; 
  if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then 
  begin 
    repeat 
      if (SearchRec.Attr and faDirectory = faDirectory) and
      (SearchRec.Name[1] <> '.') then 
      begin 
        if (SearchRec.Attr and faDirectory > 0) then 
          Item := Tree.Items.AddChild(Item, SearchRec.Name); 
        ItemTemp := Item.Parent; 
        GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles); 
        Item := ItemTemp; 
      end 
      else if IncludeFiles then 
        if SearchRec.Name[1] <> '.' then 
          Tree.Items.AddChild(Item, SearchRec.Name); 
    until FindNext(SearchRec) <> 0; 
    FindClose(SearchRec); 
  end; 
  Tree.Items.EndUpdate; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  Node: TTreeNode; 
  Path: string; 
  Dir: string; 
begin 
  Dir := 'c:\temp'; 
  Screen.Cursor := crHourGlass; 
  TreeView1.Items.BeginUpdate; 
  try 
    TreeView1.Items.Clear; 
    GetDirectories(TreeView1, Dir, nil, True); 
  finally 
    Screen.Cursor := crDefault; 
    TreeView1.Items.EndUpdate; 
  end; 
end;

Программный код на Delphi, предназначенный для заполнения контрола TTreeView списком директорий и файлов из указанной директории. Рассмотрим, как работает этот код:

Процедура GetDirectories - рекурсивная функция, которая проходит по дереву директорий начиная от указанной директории Directory. Она использует функции FindFirst и FindNext, чтобы перечислить файлы и поддиректории в текущей директории.

Если найдена директория, процедура добавляет элемент в контрол TTreeView с именем директории как текстом. Затем она рекурсивно вызывает себя для каждого поддиректория.

Если найден файл и параметр IncludeFiles установлен в True, процедура добавляет элемент в контрол TTreeView с именем файла как текстом.

Событийный обработчик кнопки Button1Click очищает контрол TTreeView, устанавливает курсор в виде часовы (Screen.Cursor := crHourGlass) и вызывает процедуру GetDirectories, чтобы заполнить дерево просмотра директорий и файлов из указанной директории. Затем он сбрасывает курсор в стандартное состояние (Screen.Cursor := crDefault).

Шаг за шагом, как работает код:

  1. Событийный обработчик кнопки Button1Click вызывается при клике по кнопке.
  2. Он очищает контрол TTreeView с помощью TreeView1.Items.Clear.
  3. Он устанавливает курсор в виде часовы (Screen.Cursor := crHourGlass) и начинает обновление элементов дерева просмотра (Treeview1.Items.BeginUpdate).
  4. Он вызывает процедуру GetDirectories, передавая контрол TTreeView, путь директории ('c:\temp'), null-значение для родительского узла (поскольку мы начинаем с корневого уровня) и устанавливает параметр IncludeFiles в True.
  5. Если возникает исключение при выполнении процедуры GetDirectories, оно будет поймано блоком finally и курсор будет сброшен в стандартное состояние (Screen.Cursor := crDefault) перед окончанием обновления элементов дерева просмотра (Treeview1.Items.EndUpdate).

В целом, этот код предоставляет удобный способ отображения директорий и файлов в контроле TTreeView.

В статье описывается функция GetDirectories для отображения директорий в TTreeView, которая рекурсивно просматривает директорию и поддиректорию, включая файлы, и добавляет их в список TreeNode.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Директории ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:20:10/0.0054800510406494/1