Avatar billede koden12 Nybegynder
30. maj 2004 - 14:11 Der er 10 kommentarer og
1 løsning

Listbox og copy pasta

Hvordan kan jeg med en popmenu copy og pasta fra en listbox det som musen peger på.
Jeg syntes ikke jeg kan få noget listbox1.copyclibbord frem ?

VH
Koden12
Avatar billede ullesan Nybegynder
30. maj 2004 - 14:46 #1
Avatar billede stoney Nybegynder
30. maj 2004 - 15:47 #2
eller

procedure TForm1.Copy1Click(Sender: TObject);
var
sl : TStringlist;
  i: integer;
  clp : String;
begin
sl := TStringlist.Create;
  for i:= 0 to  ListBox1.Items.Count-1 do
  if ListBox1.Selected[i] then
  sl.Add(listbox1.Items.Strings[i]);
  clp := sl.Text;
  Clipboard.AsText  :=  clp ;


  sl.Free;


end;

procedure TForm1.Paste1Click(Sender: TObject);
begin
memo1.PasteFromClipboard;
end;

Stoney
Avatar billede hrc Mester
30. maj 2004 - 19:04 #3
Hvis du ikke forstår hvad Stony viser (lad være med at bruge hans måde at indrykke koden på ;-)), så kopierer han de valgte linier i listboksen over i en TStringList der altså har en Clipboard-tingest.

Må antage at hver linie er adskilt af en #13#10 (cr,lf), men det må du prøve dig frem.
Avatar billede koden12 Nybegynder
30. maj 2004 - 19:34 #4
Mange tak jeg ser på dem.. den af Stoney kan den ikke sættes ind i en form1.listbox1.clik eller skal den være selvstændig ?
Og hej hrc ...øøøøø fin kommentar, ja så langt er jeg at TStringlist er en kunstig mem eller sådan noget..(jeg rykker heller ikke min kode ind, men jeg har set at det gør "De rigtige" ...  mærkelig ide ... : )

Forsat go pinse.

VH
koden12
Avatar billede koden12 Nybegynder
30. maj 2004 - 19:41 #5
PROBLEMER :

Clipboard.AsText  :=  clp ;
den vil den ikke ha ?

[Error] min.pas(158): Undeclared identifier: 'Clipboard'

VH
koden12
Avatar billede koden12 Nybegynder
30. maj 2004 - 19:59 #6
Men den her virker !!!


procedure TForm3.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;

Så ullasan sku ha haft de 30 spir...

Næste gang OK ?

VH
koden12
Avatar billede stoney Nybegynder
31. maj 2004 - 10:32 #7
Du mangler clipbrd i uses i mit eks.

Jeg synes det andet er overkill, men OK bare det virker.
Du må lige sige hvis du vil have dine 30 point tilbage.

hrc>> Du har ret med hensyn til "layoutet" af min kode ligesom de andre du har punket
for det samme, men hvad vil du helst have om morgenen når du skal på arbejde, at din bil er pæn eller den kan starte :-)

Stoney
Avatar billede hrc Mester
31. maj 2004 - 11:21 #8
Stoney: For at føre analogien videre: Min bil starter altid fordi den er pæn og velholdt - fik du den ;-)
Avatar billede koden12 Nybegynder
31. maj 2004 - 12:14 #9
Hej i to : )  nej lad det bare være.. jeg håber ullesan ved at han burde ha sendt en svar..
Hvis jeg skrev clipbrd i uses (så dårlig er jeg heller ikke )
Så når jeg lavede pasta skrev den : clipbrd....
Måske fordi det var tal der stod i den ?

VH
koden12

PS : jeg har kun en cykel..
Avatar billede ullesan Nybegynder
31. maj 2004 - 12:15 #10
svar ;)
Avatar billede ullesan Nybegynder
31. maj 2004 - 12:15 #11
mm... er logget ind men kan ikke finde svar boksen... hvad sker der mon?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester