Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Menu out of range [D5, WinXP]


Peroon ©   (2002-11-26 22:29:00) 

Пишу цикл удаления всех пунктов меню кроме двух последних. Делаю вот так

for i:=0 to MainForm.PopupMenu1.Items.Count-3 do

MainForm.PopupMenu1.Items.Delete(i);


но Delphi мне постоянно выдает Menu out of range. В чем дело?


Peroon   (2002-11-26 22:47:00) [1]

Блин!!! Точно, каунт тоже ведь уменьшается!

Спасибо :))) Это все невнимательность! :))


oomneeq   (2002-11-26 22:40:00) [2]

C каждым делете реальный каунт уменьшается и поэтому i в конце твоего цикла оказывается больше, чем осталось айтемов в списке
делай либо обратный цикл - даунту либо так:

while MainForm.PopupMenu1.Items.Count>2 do
MainForm.PopupMenu1.Items.Delete(0);

ну и книжки почитывай :)


asmith   (2002-11-26 22:35:00) [3]

Здесь буквально вчера задавали точно такой же вопрос об удалении строк из списка. Items у любого меню - также список, так что все ранее сказанное справедливо и тут. Опять наступаем на те же самые грабли!


Наверх

Титульная страница Поиск, карта сайта Написать письмо