![]() |
Listview nach erfolgreichem Multiselect neu sorteiren
Hallo alle zusammen.
In suche in einem Listview alle Einträge, die mit dem in TEdit enthaltenen Text übereinstimmen. Das funktioniert alles einwandfrei. Die Einträge sind an verschiedenen Stellen in der Listview. z.B. stehen die gefundenen Einträge an Zeile 1, 33, 459, 1299 usw. Meine Frage ist die, wie kann ich jetzt die gefundenen und mit Multiselect markierten Zeilen untereinander darstellen, so daß die Reihenfolge nicht mehr an Zeile 1, 33, 459, 1299 sondern an Zeile 1, 2, 3, 4, usw. ist ? Danke schon mal jetzt. Cu |
Re: Listview nach erfolgreichem Multiselect neu sorteiren
Hallo
das listview mit alphasort sortieren. Bei dem oncompare-ereignis vergleichst du dann statt der caption/subitems die Selected eigenschaft. Wenn es auch wieder rücksortiert werden muß: entweder du hast eine durchgehende Nummerierung oder du mußt dir dises schaffen, z.B. in dem du die data-eigenschaft des listitems nutzt. Mfg Frank |
Re: Listview nach erfolgreichem Multiselect neu sorteiren
Hallo Frank.
Danke für den Hinweis, aber ich stehe voll auf dem Schlauch. Das habe ich dazu in der OH gefunden
Delphi-Quellcode:
Meine Meinung nach müsste ich irgendwie hier landen
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var ix: Integer; begin if ColumnToSort = 0 then Compare := CompareText(Item1.Caption,Item2.Caption) else begin ix := ColumnToSort - 1; Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); end; end;
Delphi-Quellcode:
Kriegs einfach nicht hin.
compare := Compare(ListView2.Selected.Index[ix], Item2.ListView.Selected.Index[ix]);
CU Achim |
Re: Listview nach erfolgreichem Multiselect neu sorteiren
probiers mal so
Delphi-Quellcode:
ix ist die Spalte, nach der sortiert weden soll, das brauchst du nicht. du mußt die item1 und item2 vergleichen, nicht die listview.selected eigenschaft.
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer); begin compare := 0; if (item1.Selected) and not(item2.Selected) then compare := -1; if not(item1.Selected) and (item2.Selected) then compare := 1; end; Mfg Frank |
Re: Listview nach erfolgreichem Multiselect neu sorteiren
Hallo Frank.
:thumb: Fluppt einwandfrei. :spin: Danke schön. Cu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 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-2025 by Thomas Breitkreuz