Показать сообщение отдельно
  #2  
Старый 23.08.2017, 20:05
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

После некоторых изысканий удалось получить следующее:
Код:
procedure SearchDirectory(MainMenu: TMainMenu; MenuItem: TMenuItem; Level: Int32;
  Directory: String);
var
  SubMenuItem: TMenuItem;
  SearchRec: TSearchRec;
begin
  if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
    Repeat
      if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and
        ((SearchRec.Attr and faDirectory) = faDirectory) then
      begin
        if Level = 0 then
        begin
          MenuItem := TMenuItem.Create(MainMenu);
          MenuItem.Caption := SearchRec.Name;
          MainMenu.Items[0].Add(MenuItem);
          SearchDirectory(MainMenu, MenuItem, Level + 1,
            Directory + SearchRec.Name + '\')
        end
        else
        begin
          SubMenuItem := TMenuItem.Create(MainMenu);
          SubMenuItem.Caption := SearchRec.Name;
          MenuItem.Insert(0, SubMenuItem);
          SearchDirectory(MainMenu, SubMenuItem, Level + 1,
            Directory + SearchRec.Name + '\')
        end;
      end;
    Until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;

Может можно это как-то оптимизировать?
Ответить с цитированием