http://www.swissdelphicenter.com/torry/showcode.php?id=640 has an example for copy list item to clipboard. The code works on WIN-XP and Delphi 7. It doesn't work on XE7. I'm guessing the 16 bit char or string type is causing issues because the data in the list came from a USB peripheral that works with 8 bit characters. But the code looks correct.
Copy to clipboard code should look like this:
procedure ListBoxToClipboard(ListBox: TListBox; CopyAll: Boolean);
var
i: Integer;
s: string;
begin
s := '';
for i := 0 to ListBox.Items.Count - 1 do
begin
if CopyAll or ListBox.Selected[i] then
s := s + ListBox.Items[i] + sLineBreak;
end;
ClipBoard.AsText := s;
end;
Note: I changed CopyAll logic from original code, because it didn't make much sense to me. Either all items have to be copied to clipboard, or only selected ones. whether or not ListBox has MultiSelect or not should not make any difference.