TStrings.Assign
ersetzt, was auch immer es mit den neuen Inhalten gibt. Es fügt nicht hinzu.
Um ein einzelnes Element hinzuzufügen, verwenden Add
:
if OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);
Verwenden AddStrings
mehrere Artikel auf einmal hinzufügen, während halten, was schon da ist:
if OpenDialog1.Execute then
ListBox1.Items.AddStrings(OpenDialog1.Files);
Leider TListBoxItems nicht hat TStringLists Duplicates-Eigenschaft, so dass es keine einfache Möglichkeit gibt, Duplikate zu verhindern. Wenn Sie nur jeweils ein einzelnes neues Element hinzufügen, können Sie einfach manuell prüfen, ob es bereits vorhanden ist.
if OpenDialog1.Execute then
if ListBox1.Items.IndexOf(OpenDialog1.FileName) = -1 then
ListBox1.Items.Add(OpenDialog1.FileName);
Wenn Sie mehrere Elemente hinzufügen und wollen um Duplikate zu vermeiden, können Sie einen Zwischen TStringList verwenden; es wird jedoch den (möglicherweise unerwünschten) Nebeneffekt haben, die Artikel zu sortieren.
var
SL: TStringList;
begin
if OpenDialog1.Execute then
begin
SL := TStringList.Create;
ListBox1.Items.BeginUpdate;
try
SL.Sorted := True; // Required in order to use Duplicates
SL.Duplicates := dupIgnore;
SL.Assign(ListBox1.Items);
SL.AddStrings(OpenDialog1.Files);
ListBox1.Items.Assign(SL);
finally
SL.Free;
ListBox1.Items.EndUpdate;
end;
end;
end;
Sie rufen nicht Add ... ...... Haben Sie Ihren Code gelesen? –