Sortere en TListView av kolonnen klikket av user

Hvordan sortere en Listview i stigende eller synkende rekkefølge ved en gitt kolonne Sortere et TListView av kolonnen klikkes av brukeren
Vi ønsker følgende oppførsel for en Listview?:

Når brukeren klikker på en kolonneoverskrift, bør List sorteres etter at kolonnen

den første sortering bør stigende. Hvis brukeren klikker på den samme kolonnen igjen, skal rekkefølgen slås. Hvis brukeren klikker på en annen kolonne, bør sorteringsrekkefølgen for den nye kolonnen være den samme som sist sortert kolonnen.
For gjennomføringen trenger vi to variabler å holde den siste kolonnen klikkes av brukeren og gjeldende sorteringsrekkefølge: var LastSortedColumn: integer; Stigende: boolean, vi kan initialisere dem når opprettes formen: prosedyre TForm1.FormCreate (Sender: TObject); begynne LastSortedColumn: = 1; Stigende: = true; enden, I ColumnClick tilfelle av List bestemme vi sorteringsrekkefølgen og utføre sorteringen: prosedyre TForm1.ListView1ColumnClick (Sender: TObject; Kolonne: TListColumn); begynne hvis Column.Index = LastSortedColumn deretter Stigende: = ikke Stigende annet LastSortedColumn: = Column.Index; TListView (Sender) .CustomSort (SortByColumn, Column.Index); ende, SortByColumn er en funksjon som skal tidligere erklært, og er en funksjon som brukes av CustomSort å sammenligne to elementer. Verdien gått til data parameter av CustomSort vil bli vedtatt som Data parameter til SortByColumn og vi bruker det for slags kolonne: funksjon SortByColumn (Art.1, ITEM2: TListItem; Data: heltall): integer; STDCALL; begynner om Data = 0 da Resultat: = AnsiCompareText (Item1.Caption, Item2.Caption) ellers Resultat: = AnsiCompareText (Item1.SubItems [Data-1], Item2.SubItems [Data-1]); hvis ikke Stigende deretter Resultat: = -Resultat; end, du finner hele kildekoden til denne artikkelen i arkivet som følger med Pascal Nyhetsbrev # 25