如何以编程方式滚动TTreeView?

时间:2016-11-29 20:08:07

标签: delphi scroll treeview delphi-10.1-berlin

一个。创建Delphi VCL Forms应用程序。

B中。在表单上放置一个TTreeView,将其命名为tvTest并填充项目并设置Treeview的大小,以便在TreeView上显示滚动条,例如:

enter image description here

℃。在表单上放一个按钮,在其单击处理程序中写下以下代码:

  procedure TForm1.btnScrollClick(Sender: TObject);
  begin
    tvTest.ScrollBy(tvTest.Width, 0);
  end;

d。现在运行程序并单击按钮。据说水平滚动条应该从左向右滚动。但没有任何反应。为什么呢?

那么如何制作滚动条(当然还有滚动条的内容)从左到右,从右到左,向下或向上滚动?

Delphi 10.1 Berlin Update 2
Windows 7 x64 SP1

编辑:当我使用此代码时(类似于萨米的建议):

tvTest.ScrollBy(-3, -3);

......我得到了这件现代艺术品:

enter image description here

1 个答案:

答案 0 :(得分:4)

要滚动TreeView,请发送它(或PerformWM_VSCROLL和/或WM_HSCROLL消息。

tvTest.Perform(WM_HSCROLL, MakeWParam(SB_LINERIGHT, 0), 0);

tvTest.Perform(WM_VSCROLL, MakeWParam(SB_LINEDOWN, 0), 0);

请参阅参数消息的相应文档。

ScrollBy是VCL的ScrollWindow API包装器,它会移动控件的内容。它是绘制滚动控件的客户端的一部分的快捷方式,显示(空)部分应该另外绘制。它通常由控件的内部实现使用。不是你想要的。