首页 文章

如何以编程方式滚动TTreeView?

提问于
浏览
4

A.创建Delphi VCL Forms应用程序 .

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

enter image description here

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

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

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

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

Delphi 10.1柏林更新2
Windows 7 x64 SP1

EDIT :当我使用此代码时(类似于Sami的建议):

tvTest.ScrollBy(-3, -3);

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

enter image description here

1 回答

  • 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包装器,它会移动控件的内容 . 它正在寻找.1403718_ .

相关问题