во первых, если они у тебя в виде 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 индекс нужного элемента. Соответсвенно, в обработчике по индексу получаешь элемент и радуешься жизни.