Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.006 c
2-1223841694
Vayrus
2008-10-13 00:01
2008.11.23
Проблема с распаковкой архива


2-1223995948
jonin
2008-10-14 18:52
2008.11.23
форма всегда наверху


15-1222063558
date
2008-09-22 10:05
2008.11.23
Работа с датами


2-1223575339
Первокласник Вася
2008-10-09 22:02
2008.11.23
Свойство SQL Query1


4-1200314598
toboom
2008-01-14 15:43
2008.11.23
Расшаривание папок в Win XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский