procedure TForm2.Button1Click(Sender: TObject);
begin
TreeView1.Items.BeginUpdate;
try
Screen.Cursor := crHourGlass;
TreeView1.Items.Clear;
FTPconnect; //процедура подключения к удаленному серверу
GetDirectories(TreeView1, '/', nil, True);
FTPDisconnect; //процедура отключения от удаленного сервера
finally
TreeView1.Items.EndUpdate;
Screen.Cursor := crDefault;
end;
end;
procedure TForm2.GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles: Boolean);
var
ItemTemp: TTreeNode;
DirItemType: TIdDirItemType;
Filename, NewStartingDirectory: string;
i: Integer;
begin
Tree.Items.BeginUpdate;
IdFTP.ChangeDir(Directory);
IdFTP.List; //получить список директорий удаленного сервера
i:=0;
repeat
DirItemType := IdFTP.DirectoryListing[i].ItemType;
Filename := IdFTP.DirectoryListing[i].FileName;
if (DirItemType = ditDirectory) and (Filename <> '.') and (Filename <> '..') then
begin
if DirItemType = ditDirectory then
Item := Tree.Items.AddChild(Item, Filename);
ItemTemp := Item.Parent;
if Directory = '/' then
NewStartingDirectory := Directory + Filename
else
NewStartingDirectory := Directory + '/' + Filename;
GetDirectories(Tree, NewStartingDirectory, Item, IncludeFiles);
Item := ItemTemp;
end;
inc(i);
until i = IdFTP.DirectoryListing.Count;
Tree.Items.EndUpdate;
end;
Этот код использует компонент IdFTP для подключения к удаленному серверу и получения списка директорий. Затем он рекурсивно заполняет TreeView папками, начиная с корневой директории. При этом каждая папка добавляется в качестве дочернего узла текущего узла, а затем вызывается рекурсивная процедура для заполнения дочерних папок.
Код на Delphi использует компонент IdFTP для подключения к удаленному серверу и рекурсивного заполнения TreeView папками с помощью получения списка директорий.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.