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

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

Листбокс [D6, Win95/98]


anod ©   (2002-08-24 10:42:00) 

Пытаюсь удалить из листбокса выделенные строки, если количество выделенных меньше половины количества строк в листбоксе, то все нарамльна, а если ббольше, то выдается ошибка "List index out of bounds"

procedure plistToPlayList(Handle: HWND; list: TStrings);
var i:integer;
begin
List.BeginUpdate;
SendMessage(handle, LB_RESETCONTENT, 0, 0);
for i:= 0 to list.Count-1 do begin
SendMessage(handle,LB_ADDSTRING,0,Integer(PCHAR(IntToStr(i+1)+". "+ExtractFileName(list[i]))));
end;
List.EndUpdate;
end;

procedure deleteselected(Handle: THandle; list: TStrings);
var i:integer;
begin
if SendMessage(handle, LB_GETSELCOUNT, 0, 0)>0 then begin
for i:= 0 to list.count-1 do
if SendMessage(handle, LB_GETSEL, i, 0)>0 then list.Delete(i);
plistToPlayList(Handle, List);
end;
end;


Anatoly Podgoretsky   (2002-08-24 14:58:00) [1]

у тебя 10 строк, две ты удалил, как думаешь что будет с индексом 8 или 9


Song   (2002-08-24 14:44:00) [2]

Потому что строки сдвигаются после удаления.


anod   (2002-08-24 12:07:00) [3]

Спасибо, а почему так???


Anatoly Podgoretsky   (2002-08-24 11:14:00) [4]

for i:= list.Count-1 downto 0 do begin


Наверх

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