如何使用一个命令将滚动条夹点发送到最上面的位置?
How to send a scrollbar grip to the very top position with one single command?
通过发送 WM_VSCROLL
向控件重复发送消息:
ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_PAGEUP, 0), 0);
但这需要知道我必须将消息发送到控件多少次才能将滚动条设置到最顶部的位置,具体取决于滚动条手柄相对于滚动条高度的比例大小。或者,我可以不合理地重复发送消息,这似乎不是最佳解决方案。
那么如何使用单个命令将滚动条发送到最顶部,而不依赖于滚动条手柄相对于滚动条高度的比例大小?
要将栏滚动到顶部:
ScrollBox1.VertScrollBar.Position := 0;
见Vcl.Forms.TControlScrollBar.Position
或使用windows API WM_VSCROLL message:
滚动到顶部:
ScrollBox1.Perform( WM_VSCROLL, MakeWParam(SB_Top,0),0);
滚动到底部:
ScrollBox1.Perform( WM_VSCROLL, MakeWParam(SB_Bottom,0),0);
通过发送 WM_VSCROLL
向控件重复发送消息:
ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_PAGEUP, 0), 0);
但这需要知道我必须将消息发送到控件多少次才能将滚动条设置到最顶部的位置,具体取决于滚动条手柄相对于滚动条高度的比例大小。或者,我可以不合理地重复发送消息,这似乎不是最佳解决方案。
那么如何使用单个命令将滚动条发送到最顶部,而不依赖于滚动条手柄相对于滚动条高度的比例大小?
要将栏滚动到顶部:
ScrollBox1.VertScrollBar.Position := 0;
见Vcl.Forms.TControlScrollBar.Position
或使用windows API WM_VSCROLL message:
滚动到顶部:
ScrollBox1.Perform( WM_VSCROLL, MakeWParam(SB_Top,0),0);
滚动到底部:
ScrollBox1.Perform( WM_VSCROLL, MakeWParam(SB_Bottom,0),0);