use*_*348 5 delphi treeview scroll delphi-10.1-berlin
A. 创建一个 Delphi VCL Forms 应用程序。
B、在窗体上放一个TTreeView,命名tvTest并填充items并设置Treeview的大小,这样在TreeView上滚动条是可见的,例如:
C. 在窗体上放置一个按钮并在其单击处理程序中编写以下代码:
procedure TForm1.btnScrollClick(Sender: TObject);
begin
tvTest.ScrollBy(tvTest.Width, 0);
end;
Run Code Online (Sandbox Code Playgroud)
D. 现在运行程序并单击按钮。假设水平滚动条应该从左到右滚动。但什么也没有发生。为什么?
那么我怎样才能让滚动条(当然还有滚动条的内容)从左到右、从右到左、向下或向上滚动?
Delphi 10.1 柏林更新 2
Windows 7 x64 SP1
编辑:当我使用此代码时(类似于萨米的建议):
tvTest.ScrollBy(-3, -3);
...我得到了这幅现代艺术作品:
要滚动 TreeView 发送它(或Perform)WM_VSCROLL和/或WM_HSCROLL消息。
tvTest.Perform(WM_HSCROLL, MakeWParam(SB_LINERIGHT, 0), 0);
Run Code Online (Sandbox Code Playgroud)
或者
tvTest.Perform(WM_VSCROLL, MakeWParam(SB_LINEDOWN, 0), 0);
Run Code Online (Sandbox Code Playgroud)
参数见对应的消息文档。
ScrollBy是 VCL 的ScrollWindowAPI包装器,它改变控件的内容。这是绘制滚动控件的客户端部分的快捷方式,应另外绘制显示的(空)部分。它通常由控件的内部实现使用。不是你要找的。