In TListview Navigieren [Gelöst]

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

In TListview Navigieren [Gelöst]

Beitrag von corpsman »

Hallo Zusammen,
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; 
Dateianhänge
Test.zip
(2.19 KiB) 55-mal heruntergeladen
Zuletzt geändert von corpsman am Fr 11. Feb 2022, 08:57, insgesamt 1-mal geändert.
--
Just try it

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: In TListview Navigieren

Beitrag von sstvmaster »

So mal ein wenig probiert. Mit Hilfe von hier: viewtopic.php?p=64067#p64067 habe ich dein Test angepasst.
Außerdem habe ich von hier: https://forum.lazarus.freepascal.org/in ... #msg375975, nur zum Test, die CenterItem Procedure geholt.

Den einzigen Unterschied macht wohl nur das:

Code: Alles auswählen

ListView1.ItemFocused := ListView1.Items[80];
Siehe Anhang
Dateianhänge
Test_sstvmaster.zip
(3.85 KiB) 58-mal heruntergeladen
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: In TListview Navigieren

Beitrag von corpsman »

Danke genau das hatte ich nicht gefunden, obwohl ich eigentlich auch danach gesucht hatte.
Nun Funktioniert es wie es soll ;)
--
Just try it

Antworten