ich versuche gerade mittels Tastatur in einem TListview zu Navigieren das Klappt auch ganz Gut, doch wenn ich an eine bestimmte Stelle im Listview "Springen" möchte geht das leider nicht wirklich,
ich habe dabei 2 Probleme
1. Der Cursor wird zwar korrekt an die neue Zeile gesetzt die Gui springt aber nicht hin (das Problem ist auf Linux und Windows)
2. Wenn ich nun mittels "Hoch" / "Runter" weiter navigieren möchte begint der Curser direkt an Index 0 (dieses Problem habe ich nur unter Windwos unter Linux springt die Ansicht dann so, dass ich den Cursor richtig sehen kann)
Anbei der Code und eine Kleine Demo die das Problem demonstriert:
Code: Alles auswählen
Procedure TForm1.FormCreate(Sender: TObject);
Var
item: TListItem;
i: Integer;
Begin
Randomize;
For i := 1 To 100 Do Begin
item := ListView1.Items.Add;
item.Caption := inttostr(i);
item.SubItems.Add('Random');
item.SubItems.Add(inttostr(Random(10000)));
End;
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
ListView1.ClearSelection;
ListView1.Items[80].Selected := true;
ListView1.SetFocus;
ListView1.ItemIndex := 80; // Der Itemindex wird zwar gesetzt, aber die Ansicht springt nicht nach unten so etwas wie "Topindex" scheint es nicht zu geben
End;
Procedure TForm1.Button2Click(Sender: TObject);
Begin
ListView1.ClearSelection;
ListView1.Items[10].Selected := true;
ListView1.SetFocus;
ListView1.ItemIndex := 10;
End;