Copier les items d'un ListBox vers le presse-papier

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;


(copier tous les items vers le presse-papier)
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBoxToClipboard(ListBox1,1024,True);
end;

coller les items à partir du presse-papier)
procedure TForm1.Button2Click(Sender: TObject);
begin
ClipboardToListBox(Listbox2);
end;

(copier les items sélectionnés vers le presse-papier)
procedure TForm1.Button3Click(Sender: TObject);
begin
ListBoxToClipboard(Listbox1,1024,False);
end;
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour16/11/2001
VisualisationVu 1088 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Objet
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur