Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - listbox eintrag entfernen


110022 - Mi 19.12.07 16:02
Titel: listbox eintrag entfernen
wie entferne ich mit nem edit feld nen listbox eintrag??
Das habe ich schon:

Delphi-Quelltext
1:
listbox1.items.delete(edit1.text);                    

aber das klappt nicht
wie gehts denn richtig


Kroko - Mi 19.12.07 16:06

(a) die Suche hier benutzen
(b) listBox.Delete + F1
(c) oder so

Delphi-Quelltext
1:
2:
    
listbox1.items.delete(ListBox1.Items.indexOf(edit1.text));


Martin1966 - Mi 19.12.07 17:41

Den Code von Kroko würde ich noch um eine Prüfung erweitern:

Delphi-Quelltext
1:
2:
if ListBox1.Items.indexOf(edit1.text) > -1 then
  listbox1.items.delete(ListBox1.Items.indexOf(edit1.text));


Lg, Martin


jakobwenzel - Mi 19.12.07 17:50

Prüfung ist gut, aber hier wird die Listbox 2 mal durchsucht, was eher suboptimal ist.
Daher: Ergebnis von IndexOf zwischenspeichern.


Yogu - Mi 19.12.07 18:13

user profile iconjakobwenzel hat folgendes geschrieben:
Prüfung ist gut, aber hier wird die Listbox 2 mal durchsucht, was eher suboptimal ist.
Daher: Ergebnis von IndexOf zwischenspeichern.

Man kann es auch übertreiben! Wenn du eine 2GB große Liste hast, wirkt es sich vielleicht aus, aber so wie es aussieht, Wird der Code einmal pro Buttonklick ausgeführt, und die Liste wird auch keine Gigabyte groß sein.


Martin1966 - Do 20.12.07 11:01

user profile iconYogu hat folgendes geschrieben:
Man kann es auch übertreiben!

Das war auch mein erste Gedanke. ;-)


Kroko - Do 20.12.07 11:43

user profile iconMartin1966 hat folgendes geschrieben:
user profile iconYogu hat folgendes geschrieben:
Man kann es auch übertreiben!

Das war auch mein erste Gedanke. ;-)

nein kann man nicht, wer klein so anfängt wird es immer so machen und bekommt vielleicht ne anstellung bei MS(siehe windoofs), wird aber kein guter Progger!


Jakob Schöttl - Do 20.12.07 11:49

oder vllt hilft dir TListBox.DeleteSelected -> löscht alle markierten Einträge.


.#R4id - Do 20.12.07 18:09

Wie wollt ihr das Regeln, wenn es zwei mal den selben Eintrag gibt?


LorenzS - Do 20.12.07 18:29

So:

Delphi-Quelltext
1:
2:
While ListBox1.Items.indexOf(edit1.text) > -1 do 
  listbox1.items.delete(ListBox1.Items.indexOf(edit1.text));


Und für GByte Anwendungen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 Var Index:Integer;

 Index:=ListBox1.Items.indexOf(edit1.text);
 While I > -1 do 
 begin
  Listbox1.items.delete(Index);
  Index:=ListBox1.Items.indexOf(edit1.text);
 end;