Wie kann ich mehrere Einträge einer Listbox

… per Drag & Drop in eine andere Listbox kopieren?

Ich habe z.B. 5 Einträge in Listbox1 markiert.
Im DragDrop Ereignis der Listbox2 steht:
var i: integer;
begin

for i:= 0 to ListBox1.SelCount do Listbox2.Items.Add(ListBox1.FileName);

end;
Leider wird jetzt der zuletzt markierte Eintrag 5 mal
kopiert und nicht alle 5 Einträge.

Ich arbeite mit Delphi 5.
Danke schon mal im voraus.

Hi,

var i: integer;

begin

for i:= 0 to ListBox1.SelCount do
Listbox2.Items.Add(ListBox1.FileName);

end;

Versuch mal anstelle Listbox1.Filename Listbox1.Strings.Items[i];
Grüße

Danke - es funktioniert fast - also hier erst einmal der Quelltext:

procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
var i: integer;
begin
i:= FileListbox1.SelCount;
for i:= 0 to i-1 do Listbox2.Items.Add(FileListbox1.Items.strings[i]);
end;

aber:
wenn ich z.B. 4 Einträge markiert habe, werden auch 4 Einträge kopiert. Es sind aber immer die Einträge 1 bis 4, auch wenn ich z.B.
die Einträge 5 bis 8 selektiert hatte.

Kann da Jemand helfen?
Danke.

Hallo,

hast Du dir schon mal die Eigenschaften der Listbox angeschaut? Da gibt es neben SelectCount auch noch Selected[Index], d.h. Du musst deine Schleife so umbauen:

for i:=0 to FileListbox1.count-1 do begin
if FileListBox1.Selected[i] then
Listbox2.Items.Add(FileListbox1.Items.strings[i]);
end;
end;

GRüße

Hallo,

Listbox2.Items.Add(FileListbox1.Items.strings[i]);

Hinweis dazu:
Strings ist die Standard-Arrayeigenschaft von TStrings. Man kann also auf deren Nennung verzichten:

Listbox2.Items.Add(FileListbox1.Items[i]);

Das gilt auch für TMemo.Lines, TStringList etc.

Gruß, Niels