Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Leer Items aus Combobox löschen


Cyberbob - Di 01.10.02 18:19
Titel: Leer Items aus Combobox löschen
HI, ich möchte während der Laufzeit die Combobox "reinigen", also alle einträge die nur leer sind entfernen, wie geht das?

danke

--
Live long and proper, oh and don't use AOL ;-)


Delete - Di 01.10.02 18:25

Combobox-Inhalt mit einer while-Schleife durchgehen und jeden leeren Item löschen - fertig.


Cyberbob - Di 01.10.02 18:33

Luckie hat folgendes geschrieben:
Combobox-Inhalt mit einer while-Schleife durchgehen und jeden leeren Item löschen - fertig.


und das nun bitte für mich als Quelltext :-) damit wäre mir dann sehr geholfen... weiß nämlich cniht wie ich leeritems erkenne :-(


Delete - Di 01.10.02 18:35

Mit if prüfen.


Cyberbob - Di 01.10.02 18:40

Luckie hat folgendes geschrieben:
Mit if prüfen.


ähh luckie, geht das etwas präziser??? {:-) da bekomme ihc ja graue Haare mit meinen 18 Jahren..

If combobox1.items= ' ' geht nicht....


Delete - Di 01.10.02 18:43

*grrrr*


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i := 0;
  while i < Listbox1.Items.Count do
  begin
    if Listbox1.Items.Strings[i] = '' then
      Listbox1.Items.Delete(i);
    Inc(i);
  end;
end;


Und wenn du mir jetzt sagst dass, das du es für eine Combobox brauchst, dann setzt es was.


Christian S. - Di 01.10.02 18:48

Ähm, ich glaube, das funktioniert nicht. Wenn Du zwei leere Items hintereinander hast, wird er das Zweite nicht löschen. So könnte es gehen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
VAR i : INTEGER;
begin
  i:=combobox1.items.count;
  while i >= 0 do
  begin
    if ComboBox1.Items[i] = '' then ComboBox1.Items.Delete(i);
    dec(i);
  end;


MfG,
Peter


Delete - Di 01.10.02 18:51

Und bei dir kommt ein EStringListError.


Delete - Di 01.10.02 18:56

So gehts:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i := 0;
  while i < Listbox1.Items.Count do
  begin
    if Listbox1.Items.Strings[i] = '' then
      Listbox1.Items.Delete(i)
    else
      Inc(i);
  end;
end;


Christian S. - Di 01.10.02 18:56

:oops:
Bei mir kam er nicht, aber eigentlich muss er kommen. Natürlich muss es bei mir am Anfang Count-1 heißen.

MfG,
Peter


Christian S. - Di 01.10.02 18:58

Hab Deinen Code zu spät gesehen!


Cyberbob - Di 01.10.02 19:17

Luckie hat folgendes geschrieben:
*grrrr*

Und wenn du mir jetzt sagst dass, das du es für eine Combobox brauchst, dann setzt es was.


lol, danke das war genau das was ich brauchte... danke für deine Geduld, das nun auf meine Combobox anwenden schaffe ich gerade noch alleine. Also nochmal thx