Autor Beitrag
hube
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

WIN XP
D7 Prof
BeitragVerfasst: Sa 05.04.08 09:17 
Hallo zusammen

Ich habe folgendes Problem: Ich fülle eine ListBox wie folgt ab:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
begin
Listbox1.Items.Clear;
try
TempQuery.Close;
TempQuery.SQL.Clear;
TempQuery.SQL.Add('Select distinct Artikel from Artikel'); // die DB heisst "Artikel" und die Spalte heisst auch "Artikel"
TempQuery.Open;
while not TempQuery.Eof do
begin
ListBox1.Items.Add(TempQuery.Fields[0].AsString);
TempQuery.Next;
end;
ListBox1.ItemIndex := 0;
except
on EDatabaseError do
MessageDLG('Kann keine Artikel finden.', mtError, [mbOK], 0)
end;


Das funktioniert auch, aber das Problem ist, dass es mir bei der Augabe an erster Stelle eine leere Zeile anzeigt (in der DB kann es auch leere Einträge haben). Wenn ich jetzt mit:

ausblenden Delphi-Quelltext
1:
ListBox1.Items.Delete(0);					


die erste Zeile lösche, so zeigt es mir alles richtig an; ABER, wenn es in der DB keine leeren Einträge hat, so löscht es mir natürlich den ersten Eintrag. Und genau das möchte ich verhindern. Ich möchte, dass es mir den ersten Eintrag nur dann löscht wenn diese auch leer ist. Ich habe es auch so versucht:

ausblenden Delphi-Quelltext
1:
ListBox1.Items.Delete(ListBox1.Items.IndexOf(''));					


Doch das liefert nicht das gewünschte Ergebnis (= die leere Zeile ist immer noch da)

Hat jemand einen Tipp, was ich machen kann?

Besten Dank für Euere Hilfe
hube
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Sa 05.04.08 09:27 
Da sollte doch ein
ausblenden Delphi-Quelltext
1:
if ListBox1.Items[0] = '' then ListBox1.Items.Delete(0);					
genügen. Oder habe ich jetzt deine Frage falsch verstanden?

Es wäre allerdings besser, wenn du eine leere Zeile erst gar nicht hinzufügst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var FieldValue: String;
...
while not TempQuery.Eof do
begin
FieldValue := TempQuery.Fields[0].AsString;
if FieldValue <> '' then ListBox1.Items.Add(FieldValue);
TempQuery.Next;
end;

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
hube Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

WIN XP
D7 Prof
BeitragVerfasst: Sa 05.04.08 09:56 
Hallo Silas

Besten Dank, es funktioniert.

hube