Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Scrollen in TListView
csigg - Di 05.04.05 11:45
Titel: Scrollen in TListView
ich brauch ein OnScroll Event oder sowas ähnliches für mein TListView, aber sowas gibts hier nicht, kann mir jemand sagen wie ich mir ähnlich weiterhelfen kann??
Lannes - Do 07.04.05 14:55
Hallo,
mit einer Suche nach "WM_VSCROLL" müsstest Du einen Ansatz für Deine Problemlösung finden.
csigg - Fr 08.04.05 13:35
Ich hab nur das hier gefunden,
Delphi-Quelltext
1:
| SendMessage(ListBox1.Handle,WM_VSCROLL,SB_BOTTOM,0); |
Ich will aber abfragen ob grad gescrollt wird.
Kann ich über das WM_VSCROLL auch ne Abfrage erstellen??
csigg - Fr 08.04.05 13:51
Nachtrag zu oben:
ich sollte das irgendwie in mein Form reinbekommen, das immer wenn man im ListView Scrollt, sich die ansicht aktualisiert.
hab im Moment kein plan wie ich das machen soll.
Lannes - Fr 08.04.05 21:15
Hallo,
- welchen ViewStyle benutzt Du im ListView? vsReport oder ...?
- was willst Du erreichen mit der Aktualisierung?
Also ich gehe jetzt mal von vsReport aus.
Du musst folgende Aktionen des Anwenders berücksichtigen die zu einem Scrollvorgang führen.
1. Mausrad = WM_MOUSEWHEEL
2. Benutzung der senkrechten Scrollleiste = WM_VSCROLL
3. und waagerechte Scrollleiste = WM_HSCROLL
4. Cursor-Tasten, PageDown, PageUp, Pos1, Ende = in onKeyPress
5. und alle anderen Tasten die auch zum Scrollen führen,
weil man ja über die Eingabe eines Anfangszeichen der Item-Caption zu diesem Item scrollen kann.
Hier der Code um Mausrad und Scrollleiste Punkt 1. - 3. zu erkennen.
Ich hab mal WM_HSCROLL auskommentiert.
Den Code entsprechend des Beispiels an die richtigen Stellen in deine Unit einbauen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| private ListView1Proc : TWndMethod; procedure ListView1WindowProc(var Message: TMessage); implementation
{$R *.DFM}
procedure TForm1.ListView1WindowProc(var Message: TMessage); begin ListView1Proc(Message); if ((Message.Msg = WM_VSCROLL) or (Message.msg = WM_MOUSEWHEEL)) then begin if ListView1.Items.Count > 0 then Label1.Caption := 'Gescrollt ! ' +'TopItem.Caption ist jetzt : ' +ListView1.TopItem.Caption; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin ListView1Proc := ListView1.WindowProc; ListView1.WindowProc := ListView1WindowProc; end; end. |
Die weiteren Punkte 4. u. 5. kannst Du im ListView1onKeyPress bearbeiten.
csigg - Mo 11.04.05 11:26
hat sich erledigt, die anforderungen an mein Programm haben sich geändert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!