Работа с компонентом TfrShellTreeView в FastReport VCL

21.04.2025

Не все знают, что внутри FastReport содержатся не только компоненты отчетов, но и многое другое. В частности, имеются несколько компонентов, которые можно применять в своих приложениях также, как и остальные компоненты Delphi. Библиотека таких компонентов постоянно пополняется. В данной статье мы рассмотрим один из таких компонентов, а именно – TfrShellTreeView. 

Этот компонент предназначен для отображения элементов файловой системы и частично является аналогом таких компонентов, как TDirectoryListBox, TDirectoryOutline в Delphi и TShellTreeView в Lazarus. Если вы хотите посмотреть его внешний вид не запуская IDE, то это то «дерево», которое вы видите слева в окне проводника.

Окно программы для исследования компонента TfrShellTreeView

 

Компонент отлично работает в операционных системах Windows и Linux для Delphi и Lazarus. Среда разработки FMX не поддерживается. 

TfrShellTreeView использует многие возможности операционной системы. Например, в Windows можно заходить в zip архивы как в папки, и даже манипулировать их содержимым: извлекать и добавлять файлы. Под Linux часть функциональности компонента может быть недоступна, в зависимости от установленной версии Linux. Важное примечание: отображение дерева и выбор элементов в нём будут доступны под любой ОС.

Основное свойство TfrShellTreeView, которое управляет взаимодействием с операционной системой, является OptionsShell.

Свойства, управляющие работой с деревом папок

 

  • ContextMenu – указывает нужно ли показывать системное контекстное меню для выбранного файла.
  • ShowFolder – это свойство отвечает за отображение папок.
  • ShowHidden – данное свойство обозначает будут или нет видны скрытые файлы.
  • ShowNonFolders – это свойство отвечает за отображение обычных файлов (не папок).
  • TrackShellChanges – данное свойство отвечает за реагирование на изменения в файловой системе. Если в компоненте будет открыта какая-то папка, то при её изменении (например, копировании в неё файла) в компоненте также автоматически будет добавлен узел, ссылающийся на этот файл.

TfrShellTreeView поддерживает набор горячих клавиш, характерных для стандартного файлового диалога или проводника в Windows (Ctrl+С, Ctrl+V, Delete и т.д.) со стандартными диалогами.

Также компонент TfrShellTreeView поддерживает Drag&Drop элементов файловой системы как внутри себя, так и из других (но не всех) файловых менеджеров. Для разрешения операций  Drag&Drop используется свойство OptionsBehavior.AllowDragDrop. Перетаскивание осуществляется с использованием функций операционной системы.

Остальные свойства аналогичны как в компонентах TTreeView и TfrTreeView. Однако стоит отметить, что они сгруппированы в группы по типу использования: OptionsBehavior, OptionsSelection, OptionsShell, OptionsView. Это позволит вам быстрее находить нужные свойства.

Как упоминалось выше, компонент предназначен для отображения файловой системы компьютера. По умолчанию компонент настроен на отображение корневой папки вашей системы: «Рабочий стол» в Windows или “/” в Linux. Однако возможности компонента этим не исчерпываются. 

Поместим компонент TfrShellTreeView на форму и откроем его редактор:

Редактор компонента

 

Редактор TfrShellTreeView внешне похож на редакторы компонентов TTreeView и TfrTreeView, но в нём имеются 2 новые кнопки: 

  • New shell Root Item.
  • New shell Root SubItem.

Как мы видим на скрине редактора в компоненте могут быть:

  • Обычные узлы, содержащие только текст, например «New simple item 1».
  • Узлы с местоположением в файловой системе, такие как «Этот компьютер», «Lazarus», «data». Такие узлы далее мы будем называть шелл-узлами. 

Обычные и дочерние узлы создаются и редактируются также, как и в обычных TreeViews. 

Узлы, которые имеют ссылку на элемент файловой структуры, создаются с помощью кнопок «New shell Root Item». Таким образом будет создан шелл-узел того же уровня, что и текущий. Если нажать на «New shell Root SubItem», то будет создан дочерний шелл-узел по отношению к текущему узлу.  Обратите внимание, что у шелл-узла нельзя создавать дочерние узлы, а у обычного узла – можно. 

Редактирование шелл-узлов сводится к указанию для какой папки привязан данный узел. Привязку к папке можно задать с помощью констант типа TfrRootNodes. Этими константами задаются такие места, как рабочий стол, автозагрузка и так далее. Если же задать константу rfCustomPath, то появляется возможность добавить путь к папке файловой системы в дереве каталогов ниже. Также этот путь можно задать с помощью окна редактирования, расположенного ниже дерева каталогов. Например, на скрине ниже задается путь к папке Lazarus, расположенной на диске C:\.

Редактирование шелл-ноды

 

Как и у обычного TreeView, обычным узлам компонента можно задавать иконки. Шелл-нодам иконки задавать нельзя, там используются иконки, заданные в операционной системе. Для узлов фактически используется индекс иконки, который добавляется в свойстве ImageIndex. Остальные индексы иконок не используются. Также из-за особенностей использования компонента не реализованы некоторые другие свойства. Например, отсутствует возможность множественного выбора элементов.

Самое часто используемое свойство – это конечно же TfrShellTreeView.SelectedPath. Если выбран шелл-узел, то это свойство содержит путь к папке, на которую указывает данный узел. Иначе это свойство равно пустой строке. 

Помимо этого, работа с компонентом доступна и программными способами. Добавить обычный (не шелл) узел можно такими же способами, что и обычный TTreeView. 

 frShellTreeView1.Items.Add(nil,Edit1.Text); 
//добавляем корневой узел с текстом из Edit1


Добавление узла к текущему выделенному узлу:

procedure TForm1.Button5Click(Sender: TObject);
var N:TfrShellTreeViewNode;
begin
 N:=(frShellTreeView1.Selected) as TfrShellTreeViewNode;
if N=nil then Exit;
 frShellTreeView1.Items.AddChild(N,Edit1.Text);
end;


Удалить узел также просто. Например, так удаляется текущий выделенный узел:

procedure TForm1.Button2Click(Sender: TObject);
var N:TfrShellTreeViewNode;
begin
 N:=(frShellTreeView1.Selected) as TfrShellTreeViewNode;
 if N=nil then exit;
 frShellTreeView1.Items.Delete(N);
end;

Впрочем, для удаления узла можно просто вызывать его метод Free.

К сожалению, в настоящее время компонент не поддерживает генерацию событий, происходящих в моменты изменения связанных с ним папок файловой системы. Остальная функциональность компонента во многом совпадает со стандартным TreeView. 

В заключение можно сказать, что FastReport — это не только инструмент для создания отчётов, но и источник дополнительных компонентов, которые можно использовать в приложениях на Delphi. TfrShellTreeView — предоставляет удобный способ отображения элементов файловой системы и может быть полезен в различных проектах. Библиотека компонентов FastReport постоянно пополняется, что делает этот инструмент ещё более привлекательным для разработчиков.

VCL FastReport Delphi Интерактивность RAD Studio
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»