Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TListView: zum markierten Item scrollen (https://www.delphipraxis.net/70591-tlistview-zum-markierten-item-scrollen.html)

Mazel 1. Jun 2006 12:35


TListView: zum markierten Item scrollen
 
Hallo,

ich arbeite mit einer TListView, die mir als Playlist dient. Nun wird automatisch der nächste Item ausgewählt. Das Problem was ich habe ist, das ich nicht sehe welcher Item ausgewählt ist, da die ListView Komponente nicht zu diesen Item scrollt. Wenn also im ListView 230 Einträge sind und es wird der 123. ausgewählt, sehe ich immer noch den letzen Item. Wie kann ich das Problem lösen?

Ich habe es schon mit TListView.Scroll(DX, DY) versucht aber das hat nicht ganz so funktioniert.

Wichtig ist wohl auch noch, das die ListView ihne ihrer Größe (nur Höhe) änderbar ist.

Gruß
Mazel

Dale 1. Jun 2006 14:11

Re: TListView: zum markierten Item scrollen
 
Hallo Mazel,

falls du etwas Zeit und Lust hast, würde ich dir eine andere Komponente empfehlen, die wesentlich mehr Möglichkeiten bietet als das TListView:

"VirtualTreeView"

Falls du dazu keine Lust hast, sollte folgende, nicht besonders schöne Lösung vielleicht helfen. Hierbei sei "lItem" dein ausgewählter Eintrag und "lv" das ListView:

Delphi-Quellcode:
  IF ((lItem.Index + lv.VisibleRowCount) > lv.Items.Count) THEN
  lItem := lv.Items[lv.Items.Count - lv.VisibleRowCount];
WHILE (lItem.Index > lv.TopItem.Index) DO
  lv.Scroll(0, 10);
lv.SetFocus;
Schönen Tag von Dale

Mazel 1. Jun 2006 14:19

Re: TListView: zum markierten Item scrollen
 
Hi,

ich glaube ich habe eine Lösung mit Scroll(DX, DY) gefunden, ist auch nicht gerade schön auf geht:
Delphi-Quellcode:
Form4.Playlist.Scroll(0, -14 * 1000);         //hoch an den Anfang
Form4.Playlist.Scroll(0, 14 * ItemIndex);     //die Zeilen sind 14 Pixel hoch daher mal 14
Zu VirtualTreeView: ich weis nicht ob es bei Delphi 6 Personal dabei ist denn ich finde es auf keiner Palette.

Gruß
Mazel

arbu man 1. Jun 2006 14:22

Re: TListView: zum markierten Item scrollen
 
VirtualTreeView ist eine Fremdkomponete: google sollte helfen.

Gollum 1. Jun 2006 14:34

Re: TListView: zum markierten Item scrollen
 
Hallo,

das, was Du suchst, heißt MakeVisible. Siehe auch

Delphi-Quellcode:
...
  ListView1.Selected.MakeVisible(True);
...

Dale 1. Jun 2006 14:44

Re: TListView: zum markierten Item scrollen
 
Bei MakeVisible steht der ausgewählte Eintrag allerdings am unteren Ende des ListView, bei meinem Vorschlag wird er zum ersten sichtbaren Eintrag (falls möglich).

Dale

Mazel 1. Jun 2006 16:10

Re: TListView: zum markierten Item scrollen
 
Hi,

MakeVisible kann ich leider nicht verwenden, da ich die Playlist schon am Anfang lade und da kommt es zu einer Exception Zugriffsverletzung.

Meine Variante zeigt den gewählten Eintrag ebenfalls am oberen Ende des ListViews an, MakeVisible am unteren Ende.

Da ich den Eintrag oben anzeigen will, bleibe ich bei meiner Variante. Trotzdem danke. :thumb:

Gruß
Mazel


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz