![]() |
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. |
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?
|
Re: TListView Spalten vertauschen
Sind keine Objekte enthalten, nur Strings. Ich habe daher nur die Beschriftung geändert.
|
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:
|
Re: TListView Spalten vertauschen
Du könntest auch den Style
![]() |
Re: TListView Spalten vertauschen
Columns.Items[x].Index den entsprechenden Index zuordnen
|
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); |
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?
|
Re: TListView Spalten vertauschen
Hallo,
nee, Du spinnst nicht :( Zitat:
|
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 02:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz