Delphi-PRAXiS
Seite 1 von 2  1 2      

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 TListView Spalten vertauschen (https://www.delphipraxis.net/142884-tlistview-spalten-vertauschen.html)

martin_ 5. Nov 2009 12:25


TListView Spalten vertauschen
 
Hallo,
wie ist es bei einer TListView(vsReport), bestehend aus 2 Spalten mit mehreren Einträgen möglich die Reihenfolge der Spalten zu verändern (vertauschen)?
danke.

DeddyH 5. Nov 2009 12:42

Re: TListView Spalten vertauschen
 
Ich kenne da jetzt kein vordefinierte Routine dafür, aber mit etwas Handarbeit sollte das zu machen sein. Enthalten die Items/SubItems denn auch Objekte oder handelt es sich um eine reine Anzeige?

martin_ 5. Nov 2009 12:50

Re: TListView Spalten vertauschen
 
Sind keine Objekte enthalten, nur Strings. Ich habe daher nur die Beschriftung geändert.

DeddyH 5. Nov 2009 13:13

Re: TListView Spalten vertauschen
 
Auch wenn es nicht sonderlich elegant ist: Du könntest in einer Schleife durch die Items iterieren, Dir die Caption merken und mit SubItems[0] einen Dreieckstausch durchführen. BeginUpdate und EndUpdate dabei genauso wenig vergessen wie die Columns, die müssten ja auch getauscht werden. Andererseits gibt es da bestimmt eine Methode, die mir nur gerade nicht einfällt :gruebel:

jfheins 5. Nov 2009 13:27

Re: TListView Spalten vertauschen
 
Du könntest auch den Style LVS_EX_HEADERDRAGDROP setzen :stupid:

himitsu 5. Nov 2009 13:38

Re: TListView Spalten vertauschen
 
Columns.Items[x].Index den entsprechenden Index zuordnen

Lannes 5. Nov 2009 13:43

Re: TListView Spalten vertauschen
 
Hallo,

es gibt eine Methode :zwinker:
Delphi-Quellcode:
for z := a to b do
  ListView.Items[z].SubItems.Exchange(Spalte1,Spalte2);
//eventuell noch
ListView.UpdateItems(a,b);

DeddyH 5. Nov 2009 14:09

Re: TListView Spalten vertauschen
 
Aber tauscht das nicht nur die SubItems aus? Bei 2 Spalten müsste man doch aber Item und 1. SubItem austauschen, oder spinne ich gerade?

Lannes 5. Nov 2009 14:26

Re: TListView Spalten vertauschen
 
Hallo,

nee, Du spinnst nicht :(
Zitat:

Zitat von martin_
...bestehend aus 2 Spalten

... wer lesen kann, ist klar im Vorteil :wall:

DeddyH 5. Nov 2009 15:20

Re: TListView Spalten vertauschen
 
Meine Gedanken von oben einmal in Code gefasst:
Delphi-Quellcode:
procedure TFormWuppdi.ButtonTauschClick(Sender: TObject);
var i: integer;
    tmp: string;
begin
  ListView1.Items.BeginUpdate;
  try
    tmp := ListView1.Columns[0].Caption;
    ListView1.Columns[0].Caption := ListView1.Columns[1].Caption;
    ListView1.Columns[1].Caption := tmp;
    for i := 0 to ListView1.Items.Count - 1 do
      begin
        tmp := ListView1.Items[i].Caption;
        ListView1.Items[i].Caption := ListView1.Items[i].SubItems[0];
        ListView1.Items[i].SubItems[0] := tmp;
      end;
  finally
    ListView1.Items.EndUpdate;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 Uhr.
Seite 1 von 2  1 2      

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