XE7将文本复制到剪贴板

时间:2014-12-19 09:23:27

标签: delphi clipboard delphi-xe7

http://www.swissdelphicenter.com/torry/showcode.php?id=640有一个复制列表项到剪贴板的示例。该代码适用于WIN-XP和Delphi 7.它不适用于XE7。我猜测16位字符或字符串类型会导致问题,因为列表中的数据来自一个使用8位字符的USB外设。 但代码看起来是正确的。

3 个答案:

答案 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;
相关问题