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

во первых, если они у тебя в виде ini-файла, так и читай их с помощью ini-файла. Только группы переделай на соотв. формат.
должно быть типа такого:

Код:
[group1]
name=Группа 1
File1=disk:\path\filename1
File2=disk:\path\filename2
File3=disk:\path\filename3

[group2]
name=Группа 2
File1=disk:\path\filename1
File2=disk:\path\filename2
File3=disk:\path\filename3

Код разбора:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Ini : TIniFile;
  Sec : TStringList;
  Items : TStringList;
  I, J : Integer;
  TopMenuItem, MenuItem : TMenuItem;
begin
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'menu.cfg');

  Sec := TStringList.Create;
  Ini.ReadSections(Sec);

  For I := 0 To Sec.Count-1 Do
    Begin
      Items := TStringList.Create;
      Ini.ReadSection(Sec[i],Items);

      If Items.IndexOf('name') <> -1 Then
        Begin
          TopMenuItem := TMenuItem.Create(Self);
          TopMenuItem.Caption := Ini.ReadString(Sec[i],'name','');
          miMenu.Add(TopMenuItem);

          For J := 0 To Items.Count-1 Do
            Begin
              If Items[J] = 'name' Then Continue;
              MenuItem := TMenuItem.Create(Self);
              MenuItem.Caption := Ini.ReadString(Sec[i],Items[J],'');
              MenuItem.OnClick := MenuClick;
              TopMenuItem.Add(MenuItem);
            End;
        End;
      Items.Free;
    End;

  Sec.Free;
  Ini.Free;
end;

procedure TForm1.MenuClick(Sender: TObject);
begin
  If Sender Is TMenuItem Then
    ShowMessage('Selected: ' + (Sender As TMenuItem).Caption);
end;

Если хочется писать более осмысленные имена файлов, то заведи где-нить список, имена файлов пиши туда, а для меню ставь в свойство Tag индекс нужного элемента. Соответсвенно, в обработчике по индексу получаешь элемент и радуешься жизни.
Ответить с цитированием