![]() |
ListView Sortierung: Markierung auf ausgewähltem Icon beibeh
Hi@all,
beim sortieren eines ListViews über den Spaltenkopf, möchte ich das , dass ausgewählte Item markiert bleibt. Wie könnte man das realisieren? Gruß Karsten |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
1. ListViews: Kann das eine ListBox sein ?
2. Item oder Icon - was meinst du nun? Also ich gehe mal davon aus, dass das markierte Item, also der ItemIndex, nach dem Sortieren deiner ListBox wieder markiert werden soll. Das könntest du so machen: Merke dir den Inhalt des markierten Items, suche nach dem Sortieren nach diesem Item und markiere es.
Delphi-Quellcode:
In Etwa müsste das so gehen...
var s: String; i: Integer;
begin s:=ListBox1.Items[ListBox1.ItemIndex]; //sortieren i:=0; while s<>ListBox1.Items[i] do Inc(i); ListBox1.ItemIndex:=i; end; |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
Danke probier ich mal aus:)
|
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
Sorry hab nur den Source gelesen.
Ist eine TListView keine Box, darum funkt der Code so auch nicht. Und ich meine Items, TListItems um genau zu sein. |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
Hallo Karsten,
das Prinzip ist immer dasselbe. Meine ListViews sind alle virtuell. Ich merke mir vor dem Sortieren das identifizierende Merkmal des gerade fokusierten Items, sortiere meine Datenliste und bestimme dann die neue Position des Items anhand des zwischengespeicherten Merkmals. Wenn du ohne Multiselect arbeitest, dann kannst du an Stelle des fokusierten auch das selektierte Item nehmen. Grüße vom marabu |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
Sorry, habe nich nie mit ListView gearbeitet... :oops:
Aber theoretisch müsste das dann so gehen:
Delphi-Quellcode:
var s: TListItem; i: Integer;
begin s:=ListView1.Items[ListView1.ItemIndex]; //sortieren i:=0; while s<>ListView1.Items[i] do Inc(i); ListView1.ItemIndex:=i; end; |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
@marabu
Irgendwie hab ich gerad nicht die geringste Ahnung wie ich vorgehen muss. Bin ja noch Anfänger in Delphi :) In C++ gibt es eine SetItemState - Methode der man einfach den Index mitgibt welches Item markiert sein soll. Gibt es so was auch in Delphi? @Martin K Hab ich auch gedacht! Nur arbeitet er hier die While Schleife gar nicht erst ab. |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
So Funktioniert es jetzt:
Delphi-Quellcode:
Var TL : TListItem;
S : String; I : Integer; begin TL := lvTermine.Items[lvTermine.ItemIndex]; S := TL.Caption; I := 0; //Sortierung while S <> lvTermine.Items[I].Caption do Inc(I); lvTermine.ItemIndex := I; End; |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
Wie gesagt, ich habe zwar nicht viel Ahnung von ListViews, aber wenn ich mir den Code so anschaue, müsste man ihn noch vereinfachen können:
Delphi-Quellcode:
Da sparst du dir dann eine Variable !
Var S : String;
I : Integer; begin S := lvTermine.Items[lvTermine.ItemIndex].Caption; I := 0; //Sortierung while S <> lvTermine.Items[I].Caption do Inc(I); lvTermine.ItemIndex := I; End; Gruß, Martin |
Re: ListView Sortierung: Markierung auf ausgewähltem Icon be
Hallo ihr beiden,
hier noch was zum Kennenlernen:
Delphi-Quellcode:
Die Sortierung geschieht hier im Ereignis OnCompare() der nicht virtuellen ListView.
procedure TDemoForm.lvTermineColumnClick(Sender: TObject;
Column: TListColumn); var sCaption: string; index: integer; begin index := lvTermine.ItemIndex; if index > -1 then sCaption := lvTermine.ItemFocused.Caption; lvTermine.CustomSort(nil, Column.Index); if index > -1 then with lvTermine do ItemFocused := FindCaption(0, sCaption, false, true, false); end; Weihnachtsgrüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 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