Ist schon richtig so, dass nur eine Datei kopiert wird,
denn FileListBox1.FileName enhält nur den Dateinamen der zuletzt markierten Datei.
Schau dir mal das an:
Delphi-Quellcode:
FileListBox1.Items.Count
FileListBox1.Items.Strings[i]
FileListBox1.Selected[i]
Damit
Delphi-Quellcode:
For i := 0 to FileListBox1.Items.Count - 1 do
If FileListBox1.Selected[i] Then
DOFileWork(FO_Copy, FileListBox1.Items.Strings[i], DirectoryListbox2.Directory, FOF_RENAMEONCOLLISION);
[add]
mit der Anderen, auf StringList basierenden Version, hättest du alle Dateien verarbeitet und nicht nur die markierten, wenn du nur FileListBox1.Items übergeben hättest.