|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
проверить значение тега всех пунктов Popup
здраствуйте.нужна помощь в следующем.
есть у меня всплывающее меню по ПКМ,и пункты в него добавляются в завистимости от разных ситуаций разные. т есть там может появиться много вложенных пунктов,пунктов вложенных во вложенные и тд... при создании в теги записывается специальное не повторяющееся число, и далее мне нужно проверить все итемсы моего меню и если тег совпадет с определенным числом то этот пункт сделать недоступным. так вот,как можно пробежаться сразу по всем пунктам?включая вложенные. а то у мя получается пробежаться только по первым пунтам,вложенные не проверяются. for i:=0 to PopupMenu.items.count-1 а как проверить сразу все?я же заранее незнаю в каком именно пункте будет вложенный пункт. |
#2
|
|||
|
|||
У каждого пункта есть св-во Items, в котором ссылки на его подпункты.
|
#3
|
|||
|
|||
Цитата:
upd ага,сделал так,на примере кепшн. это правильно получается? в процедуре PopupMenu1Popup в конце добавил такое for i:=0 to PopupMenu1.Items.Count-1 do LockPop(PopupMenu1.Items[i]); и сама процедура Код:
procedure LockPop(Itm:TMenuItem); var i:Integer; begin if Itm.Count=0 then Itm.Caption:='' //если нет подпунктов то переименуем else //если есть подпункты то вначале переименуем их этой же самой процедурой begin for i:=0 to Itm.Count-1 do LockPop(Itm.Items[i]); Itm.Caption:=''; //и потом переименуем переименуем основной пунтк end; end; |
#4
|
|||
|
|||
Это называется "рекурсия"
|