![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Checklistbox [D7, WinXP]
Ibn El Ivan © (2004-07-26 14:32:00)Подскажите пожалуйста для удаления из Checklistbox используется цикл:
for i:=0 to checklistbox.count-1 doПри запуске проги и при попытке удаление нескольких отмеченных элементов появляется сообщение об ошибке: list index out of bounds
if checklistbox.checked[i] then checklistbox.items.delete(i);
ssk (2004-07-26 14:49:00) [1]можно и for do, только цикл гнать с конца:
for i:=MAXVALUE downto 0 do
....
ssk (2004-07-26 14:49:00) [2]можно и for do, только цикл гнать с конца:
for i:=MAXVALUE downto 0 do
....
Ibn El Ivan (2004-07-26 14:39:00) [3]Спасибо!!
Ega23 (2004-07-26 14:37:00) [4]Естественно. Потому, что когда ты делаешь
checklistbox.items.delete(i)
твойchecklistbox.countстановится меньше на единицу.
Здесь тебе не for цикл нужен, а while
Андрей Л. (2004-07-26 14:37:00) [5]При удалениии элемента из списка, весь список перенумеровывается, и от этого элементов ставновится меньше.
Subdigger (2004-07-26 14:35:00) [6]при удалении параметр checklistbox.count становится на 1 меньше
правильно будет так
i:=0;
while i<checklistbox.count do
if checklistbox.checked[i] then checklistbox.items.delete(i)
else inc(i);
@Lex (2004-07-26 14:35:00) [7]i:=0;
while i < checklistbox.count do
if checklistbox.checked[i] then checklistbox.items.delete(i)
else Inc(i);