![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеется некое меню MainMenu1. По нажатию на кнопку требуется вывести его структуру в Memo в формате :
Меню -Подменю1 --Подподменю1 --Подподменю2 -Подменю2 --Подподменю3 --Подподменю3 Вот код, работающий в нескольких частных случаях : Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,l: byte;
t: tmenuitem;
begin
t:=mainmenu1.items;
for i:=0 to t.count-1 do
begin
memo1.Lines.Add(t[i].caption);
for j:=0 to t[i].Count-1 do
begin
memo1.Lines.Add('-'+t[i].Items[j].Caption);
for k:=0 to t[i].items[j].count-1 do
begin
memo1.Lines.Add('--'+t[i].Items[j].items[k].caption);
end;
end;
end;
end;
Заранее спасибо за помощь ! |
|
#2
|
||||
|
||||
|
При неизвестном кол-ве вложений используй рекурсию.
Код:
procedure AddMenuItem(m:TMenuItem; shift:integer);
var i:integer;
begin
for i:=0 to m.count-1 do
begin
Form1.Memo1.Lines.Add( StringOfChar('-',shift) + t[i].caption );
AddMenuItems( t.items, shift+1 );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AddMenuItems( mainmenu1.items, 0 );
end;
|
|
#3
|
|||
|
|||
|
Всё бы хорошо, но ничего не работает, ибо обращение к подменю должно происходить по items[x][y][z][....
|