Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Bestimmte Einträge von der ComboBox löschen?


jackie05 - Sa 14.07.07 03:31
Titel: Bestimmte Einträge von der ComboBox löschen?
Hallo,
Ich habe nach meinem Problem schon hier im Forum gesucht und leider nix passendes gefunden.
z.B. möchte ich alle Einträge löschen, die keinen 'Hello' als Items beinhaltet.
Ich habe schon viele versuche probiert und leider kam ich nie auf das richtige ergebnis.
Ich wäre euch sehr dankbar, wenn ihr mein problem lösen könnt.

MfG


Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 14.07.2007 um 09:34


Blackheart666 - Sa 14.07.07 07:57

http://www.delphi-forum.de/viewtopic.php?t=44795&highlight=combobox+item+l%F6schen


jackie05 - Sa 14.07.07 16:56

Danke.
Ich habe das auch so gemacht gehabt, aber so wird nur dieser Eintrag gelöscht, der angegeben wurde.


Delphi-Quelltext
1:
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf('test'));                    


Ich möchte aber alle Eintrage löschen, die z.B. keinen 'test' als ComboBox1.Items haben.

Edit: Sry, ich habe mir das mal genauer durchgelesen, ich werde mal mit der Schleife prüfen, solange IndexOf 0 zurück gibt, das die Einträge gelöscht werden.

MfG


Heiko - Sa 14.07.07 19:20

Hallo,

dass würde so gehen, außer dass es nicht 0 wäre, sondern -1. Allerdings ist das ineffizient. Mach es lieber so:


Delphi-Quelltext
1:
2:
3:
4:
for i:=ComboBox1.Items.Count-1 downto 0 do
begin
  if ComboBox1.Items[i]="test" then ComboBox1.Items[i].Delete;
end;

Eine for-to-do-Schleife würde Probleme machen, (a sich die Indexe nachm löschen verändern, von daher hier downto.

PS: Fehler von der Syntax könnten hier sein, da ich es gerade ausm Kopf mache ;).

Grüße
Heiko


Blackheart666 - Sa 14.07.07 20:55


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var
 i:Integer;
begin
  for i := ComboBox1.Items.Count - 1 downto 0 do
  if ComboBox1.Items[i] <> 'Hello' then
  ComboBox1.Items.Delete(i);
end;