Показать сообщение отдельно
  #3  
Старый 23.08.2017, 21:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, если нигде не накосячил, то как то так:
Код:
procedure SearchDirectory(Menu: TMainMenu; MenuItem: TMenuItem; Directory: String);
var
  NewItem: TMenuItem;
  SearchRec: TSearchRec;
begin
  if FindFirst(IncludeTrailingPathDelimiter(Directory) + '*.*', faDirectory, SearchRec) = 0 then
    Repeat
      if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and
        ((SearchRec.Attr and faDirectory) <> 0) then
      begin
          NewItem := TMenuItem.Create(Menu);
          NewItem.Caption := SearchRec.Name;
          If MenuItem = Nil 
            Then Menu.Items.Add(NewItem)
            Else MenuItem.Items.Add(NewItem);
          SearchDirectory(MainMenu, NewItem, Directory + SearchRec.Name)
      end;
    Until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;

...
SearchDirectory(Form1.MainMenu1, Nil, 'c:/work');
...
Ответить с цитированием