![]() |
|
|
Регистрация | << Правила форума >> | 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; Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#3
|
|||
|
|||
![]() Всё бы хорошо, но ничего не работает, ибо обращение к подменю должно происходить по items[x][y][z][....
|