Форум: "Начинающим";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
ВнизListView2.Items.Delete Найти похожие ветки
← →
Zalumhan © (2008-10-15 11:12) [0]У меня такая проблема. Нужно из ListView удалить те строки, которые удовлетворяют условию [Code]StrToInt(listView2.Items[i].Caption) < 10[/Code].
Если делать так:
[Code]
begin
for i:=0 to ListView.Items.Count-1 do
begin
if StrToInt(listView2.Items[i].Caption) < 10 then
begin
ListView2.Items.Delete(i);
end;
end;
end;[/Code], то будут удаляться не все нужные строки,т.к. после первого удаления номера строк поменяются(т.е.первоначально 1-я строка станет 0-ой,...5-я станет 4-й и т.д.).
Т.е. мне нужно что-то типа такого:
[Code]
begin
j:=0;
for i:=j to ListView.Items.Count-1 do
begin
if StrToInt(listView2.Items[i].Caption) < 10 then
begin
ListView2.Items.Delete(i);
j:=i;
end;
end;
end;[/Code], но этот код тоже неправильно работает.
← →
Cosinus (2008-10-15 11:17) [1]Как вариант, копировать все нужные строки в TempListView, потом полная очистка твоего ListView и обратно.
← →
Плохиш © (2008-10-15 11:22) [2]
> Zalumhan © (15.10.08 11:12)
Используй вместоfor .. to ..
вариантfor .. downto ..
← →
Ega23 © (2008-10-15 11:54) [3]
> Как вариант, копировать все нужные строки в TempListView,
> потом полная очистка твоего ListView и обратно.
Застрелись, советчик.for i:=0 to ListView.Items.Count-1 do
begin
if StrToInt(listView2.Items[i].Caption) < 10 then
begin
ListView2.Items.Delete(i);
end;
Такой for тут нельзя использовать. Либо как Плохиш сказал,for i:=ListView.Items.Count-1 downto 0 do
либо while с условием.
← →
Cosinus (2008-10-15 12:05) [4]
> Ega23 © (15.10.08 11:54) [3]
Вы абсолютно правы.Downto
- это первое, что мне пришло в голову, но прикинув в голове (как оказалось, криво), решил, что так тоже не прокатит. Полностью признаю, что ступил. Тем более, что всегда делал, как предложил Плохиш (глянул в проекты).
← →
Ega23 © (2008-10-15 12:08) [5]
> о прикинув в голове (как оказалось, криво), решил, что так
> тоже не прокатит.
Ради интереса, можно посмотреть на варианты реализации методов Delete и Clear для различных списков.
← →
Zalumhan © (2008-10-15 13:41) [6]Спасибо за
for i:=ListView.Items.Count-1 downto 0 do
Работает!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c