2016-12-05 1 views
1

Es ist einfach, eine Kontrolle der Scrollbar vom ganz unten Position zum sehr Spitzenposition durch Senden einer WM_VSCROLL Nachricht wiederholt an die Steuerung zu senden:Wie schicke ich einen Scrollbar-Griff mit einem einzigen Befehl an die oberste Position?

ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_PAGEUP, 0), 0); 

enter image description here

Dies erfordert aber zu wissen, Wie oft muss ich die Nachricht an das Steuerelement senden, um die Bildlaufleiste auf die oberste Position zu setzen, abhängig von der proportionalen Größe des Bildlaufleistengriffs im Verhältnis zur Höhe der Bildlaufleiste. Alternativ kann ich die Nachricht für eine irrationale Anzahl von Malen wiederholt senden, die nicht die beste Lösung zu sein scheint.

Also wie kann ich die Bildlaufleiste an die Spitze mit ONE SINGLE Befehl unabhängig von der proportionalen Größe des Scrollbar Griff in Bezug auf die Scrollbar Höhe senden?

+3

Warum die Scrollbar-Position nicht auf Null setzen? –

+0

Vielen Dank! Bitte poste dies als Antwort, damit ich es annehmen kann. – user1580348

Antwort

7

den Balken nach oben blättern:

ScrollBox1.VertScrollBar.Position := 0; 

Vcl.Forms.TControlScrollBar.Position


oder besuchen Sie die Windows-API WM_VSCROLL message verwenden:

Zurück nach oben:

ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_Top,0),0); 

Nach unten scrollen:

ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_Bottom,0),0); 
+0

Wenn die Bildlaufleiste zu einem Fenster-Steuerelement gehört, können Sie die Win32-API ['SetScrollPos()'] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb787597.aspx) oder [ 'SetScrollInfo()'] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb787595.aspx) Funktion. –

Verwandte Themen