Nun ist es so, dass wenn man aus einem Unterverzeichnis "zurück" wechselt. Ich dem User ganz gerne den Eintrag anzeigen würde aus welchem er kam, dazu sucht meine Anwendung den entsprechenden Eintrag in der Listview heraus und versucht diesen dann mittels:
Code: Alles auswählen
Procedure ListViewSelectItemIndex(Const Listview: TListView; aIndex: integer);
Var
Idx: Integer;
Begin
If aindex >= Listview.Items.Count Then exit;
If Not assigned(Listview.TopItem) Then exit;
form1.caption := 'Index: ' + inttostr(aIndex + 1); // In der Caption zeigen welcher Eintrag angewählt wurde
Listview.BeginUpdate;
Listview.ClearSelection;
// So hinscrollen, dass man das man den aIndex uberhaupt sehen kann
Listview.Items[aIndex].MakeVisible(False);
// Der Versuch den ausgewählten Eintrag ungefähr "mittig" in der Listview an zu zeigen
Idx := Listview.TopItem.Index + (Listview.VisibleRowCount Div 2);
If aIndex <> Idx Then
Idx := aIndex + (aIndex - Idx);
If (Idx < 0) Then
Idx := 0;
If (Idx >= Listview.Items.Count) Then
Idx := Listview.Items.Count - 1;
Listview.Items[Idx].MakeVisible(False);
// Der Versuch den Eintrag auch so zu selektiern dass dieser
// 1. Blau hinterlegt ist
// 2. Wenn der User die Pfeiltasten verwendet von diesem auch weiter "navigiert" wird
Listview.Items[aIndex].Selected := true; // Das macht den Eintrag "blau"
Listview.ItemIndex := aIndex; // Das hier scheint nichts zu bewirken
Listview.Selected := Listview.Items[aIndex]; // Das hier scheint nichts zu bewirken
Listview.EndUpdate;
// Dem Listview den "Focus" geben, damit der User nicht "rein" clicken muss
Listview.SetFocus;
End;
Unter Windows scrollt die Gui richtig hin und man sieht das dann auch, aber wenn ich dann mit Pfeil Hoch oder Runter "weiter" navigieren will, springt der Cursor "irgendwo" hin. Unter Linux funktioniert das komplett nicht

Damit ihr das nu ausprobieren könnt ohne direkt eine Beispielanwendung coden zu müssen habe ich das mal eben für euch gemacht:
Durch Klick auf einen der 3 Buttons kann der Cursor entsprechend "verschoben" werden (der Focus wechselt dann in die Listview, denn Klickt der User auf die Blaue Zeile ist zumindest unter Windows der Cursor Tasten Bug weg ..), bzw der Jeweilige "Bug" gezeigt werden.
Hat einer von euch eine Ahnung wie man das "korrekt" macht, so dass das auf Linux und Windows funktioniert ?