http://www.swissdelphicenter.com/torry/showcode.php?id=640有一个复制列表项到剪贴板的示例。该代码适用于WIN-XP和Delphi 7.它不适用于XE7。我猜测16位字符或字符串类型会导致问题,因为列表中的数据来自一个使用8位字符的USB外设。 但代码看起来是正确的。
答案 0 :(得分:4)
复制到剪贴板代码应如下所示:
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;
注意:我从原始代码更改了CopyAll逻辑,因为它对我没有多大意义。要么所有项目都要复制到剪贴板,要么只复制到选定的项目。 ListBox是否具有MultiSelect不应该有任何区别。
答案 1 :(得分:1)
procedure ListBoxToClipBoard(lb:TListBox; copyAll:Boolean);
var
i: integer;
sb: TStringBuilder;
begin
sb := TStringBuilder.Create;
try
for i := 0 to lb.Items.Count -1 do
if copyAll or lb.Selected[i] then
sb.AppendLine(lb.Items[i]);
Clipboard.AsText := sb.ToString;
finally
sb.Free;
end;
end;
答案 2 :(得分:1)
为了将ListBox内容复制到剪贴板,您可以使用以下代码:
uses
Vcl.Clipbrd;
procedure TForm1.FormCreate(Sender: TObject);
begin
Clipboard.AsText := ListBox1.Items.Text;
end;