Avatar billede easysoft_studios Nybegynder
25. juli 2001 - 20:10 Der er 2 kommentarer og
1 løsning

slet i listview

Jeg vil gerne slette en række valgte items, i en ListView. ListView\'et er sat med MultiSelect := True;

nu har jeg en knap hvorpå følgende kode udføres ved et klik:

var
  I: Integer;
begin
  for I := 1 to listview.items.count do begin
    if listview.items[i-1].selected then
      listview.items.delete(i-1)
  end;
end;

og der er faktisk flere møder at gøre det på... men!

Jeg får nogle ustyrligt grimme fejl meddelser i hovedet, når koden udføres! EAccessViolation!!!

(jeg har prøvet med BreakPoints, men de melder ikke fejl...!)

Hvad f***** er der galt??
Avatar billede speedy Nybegynder
25. juli 2001 - 20:47 #1
Du skal gå baglæns :)

var
  I: Integer;
begin
  for I := listview.items.count downto 1 do begin
    if listview.items[i-1].selected then
      listview.items.delete(i-1)
  end;
end;


Det er fordi ellers hver gang du sletter et item, ændrer alle index sig.

/SpEeDy
Avatar billede easysoft_studios Nybegynder
25. juli 2001 - 22:10 #2
det lyder jo ret fornuftigt. (du får pointene)

men jeg fandt denne her i en artikel, på udvikleren.dk:


var
i,v:integer;
begin
for i := 0 to ListView1.SelCount - 1 do
begin
  V := ListView1.Selected.Index;
  ListView1.Items[v].Delete;
end;
end;

og den gør det uden fejl!

Men pyt, tag de 10 point... :-)
Avatar billede speedy Nybegynder
25. juli 2001 - 22:13 #3
hmm ?

Det ved jeg ikke hvorfor ?

Men en god regel når man sletter noget i en form for liste, er at starte bagfra så index\'erne ikke ændrer sig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester