Ich habe ein ListView auf meinem Programm das ich je nachdem auf welche Spalte ich klicke sortiere. Das funktioniert soweit:
Das sind die zum sortieren notwendigen Programmteile:
Code: Alles auswählen
procedure TMainForm.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin
Screen.Cursor:=crHourGlass;
TListView(Sender).SortType := stNone;
if Column.Index<>SortedColumn then begin
SortedColumn := Column.Index;
Descending := False;
end else
Descending := not Descending;
TListView(Sender).SortType := stText;
Screen.Cursor:=crDefault;
end;
procedure TMainForm.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
if SortedColumn = 0 then Compare := CompareText(Item1.Caption, Item2.Caption)
else if SortedColumn <> 0 then Compare := CompareText(Item1.SubItems[SortedColumn-1], Item2.SubItems[SortedColumn-1]);
if Descending then Compare := -Compare;
end;
Allerdings möchte ich nach Programmstart, die Nummer der Spalte nach der sortiert werde soll, aus meiner INI einlesen und sofort den ListView sortieren, ohne das ich jedesmal nach Programmstart wieder auf die Spalte klicken muß.
Das Speichern und Einlesen der zu sortierenden Spalten-Nummer funktioniert auch, nur das Aufrufen des Ereignisses vom ListView nicht.
Ich versuche zum Test das Ereignis im Programmcode wie folgt aufzurufen, was aber zu einem Programmabsturz führt:
Code: Alles auswählen
var sort : TListColumn;
procedure TMainForm.Button1Click(Sender: TObject);
begin
sort.Index:=2;
ListView1ColumnClick(self, sort);
end;
Wie kann ich ListView1ColumnClick aufrufen das er den ListView so sortiert als hätte ich auf eine der Spaltenüberschriften geklickt?
Gruß
Michael