Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView ganze reihe in zwischenablage kopieren (https://www.delphipraxis.net/153075-listview-ganze-reihe-zwischenablage-kopieren.html)

SyntaxXx 19. Jul 2010 22:55

ListView ganze reihe in zwischenablage kopieren
 
Guten Abend zusammen,
ich habe nun noch eine kleine Frage bezüglich der ListView Komponente.

Und zwar habe ich eine ListView mit 4 SubItems.
Jetzt möchte ich beim klicken auf einen Button, das er die ausgewählte Row also alle 5 Felder
(1x Form1.ListView1.Items.Item[i].Caption & 4x Form1.ListView1.Items.Item[i].Subitems.Add())
in die zwischenablage kopiert.

Leider habe ich es bis jetzt nur hin bekommen, das er entweder nur die erste Spalte, oder die 4 anderen kopiert, aber nie beides gleichzeitig.
Ein weiteres Problem ist, das wenn ich die 4 SubItems kopiere und z.b. in ein Textdokument einfüge, das mir die Werte in den Spalten untereinander ausgegeben werden, obwohl sie ja in der Row nebeneinander stehen.

Könnt ihr mir vielleicht sagen, wie ich das genau machen muss?

sx2008 19. Jul 2010 23:14

AW: ListView ganze reihe in zwischenablage kopieren
 
Delphi-Quellcode:
const
  TAB = #8;
var
  li : TListItem;
  line : string;
  i : Integer;
begin
  li := ListView1.Selected;
  if not Assigned(li) then
    exit; // nichts selektiert
  // Zeile mit Tabulator als Trennzeichen bilden
  line := li.Caption;
  for i := 0 to li.SubItems.Count-1 do
    line := line + TAB + li.SubItems[i];
  Clipboard.AsText := line; // ab ins Clipboard

SyntaxXx 19. Jul 2010 23:21

AW: ListView ganze reihe in zwischenablage kopieren
 
Erstmal danke für deine Antwort, habs jetzt mal übernommen, doch leider bekomme ich so immer nur die zweite Spalte ausgegeben. Bzw er speichert nur die zweite Spalte.

EDIT:

Sry war mein Fehler, jetzt gehts.

Aber leider wird mir statt nem Tab ein ausgegeben.
Ist das richtig so?

Edit2:

Soa nun geht alles. Hab einfach dem "TAB" ein " " zugewiesen.

omata 20. Jul 2010 07:28

AW: ListView ganze reihe in zwischenablage kopieren
 
Kleine Korrektur...
Delphi-Quellcode:
const
  TAB = #9;
var
  li : TListItem;
  line : string;
  i : Integer;
begin
  li := ListView1.Selected;
  if Assigned(li) then begin
    // Zeile mit Tabulator als Trennzeichen bilden
    line := li.Caption;
    for i := 0 to li.SubItems.Count-1 do
      line := line + TAB + li.SubItems[i];
    Clipboard.AsText := line; // ab ins Clipboard
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz