Скопировать строки TListBox в буфер обмена

Previous  Top  Next

    
 

 

Code:

uses

  Clipbrd;

 

procedure ListBoxToClipboard(ListBox: TListBox;

  BufferSize: Integer;

  CopyAll: Boolean);

var

  Buffer: PChar;

  Size: Integer;

  Ptr: PChar;

  I: Integer;

  Line: string[255];

  Count: Integer;

begin

  if not Assigned(ListBox) then

    Exit;

 

  GetMem(Buffer, BufferSize);

  Ptr   := Buffer;

  Count := 0;

  for I := 0 to ListBox.Items.Count - 1 do

  begin

    Line := ListBox.Items.strings[I];

    if not CopyAll and ListBox.MultiSelect and (not ListBox.Selected[I]) then

      Continue;

    { Check buffer overflow }

    Count := Count + Length(Line) + 3;

    if Count = BufferSize then

      Break;

    { Append to buffer }

    Move(Line[1], Ptr^, Length(Line));

    Ptr    := Ptr + Length(Line);

    Ptr[0] := #13;

    Ptr[1] := #10;

    Ptr    := Ptr + 2;

  end;

  Ptr[0] := #0;

  ClipBoard.SetTextBuf(Buffer);

  FreeMem(Buffer, BufferSize);

end;

 

procedure ClipboardToListBox(ListBox: TListbox);

begin

  if not Assigned(ListBox) then

    Exit;

 

  if not Clipboard.HasFormat(CF_TEXT) then

    Exit;

 

  Listbox.Items.Text := Clipboard.AsText;

end;

 

 

//Copy all items from Listbox1 to the clipboard

procedure TForm1.Button1Click(Sender: TObject);

begin

  ListBoxToClipboard(ListBox1, 1024, True);

end;

 

//Paste items in clipboard to Listbox2

procedure TForm1.Button2Click(Sender: TObject);

begin

  ClipboardToListBox(Listbox2);

end;

 

//Copy only selected items from Listbox1 to the clipboard

procedure TForm1.Button3Click(Sender: TObject);

begin

  ListBoxToClipboard(Listbox1, 1024, False);

end;

 

©Drkb::01885

Взято с сайта: http://www.swissdelphicenter.ch