delphi – 如何进行虚拟Treeview控制以始终按行滚动?
发布时间:2020-12-15 09:37:25 所属栏目:大数据 来源:网络整理
导读:虚拟树视图按像素垂直滚动,不像标准Delphi网格,TListView和TTreeView(或我所知道的大多数其他此类控件)的方式逐行滚动并保持控件顶部的整行可见倍.当我使用光标键进行导航时,根据方向,第一行或最后一行是完全可见的.使用鼠标滚动时无论如何都没有对齐. 例如,
虚拟树视图按像素垂直滚动,不像标准Delphi网格,TListView和TTreeView(或我所知道的大多数其他此类控件)的方式逐行滚动并保持控件顶部的整行可见倍.当我使用光标键进行导航时,根据方向,第一行或最后一行是完全可见的.使用鼠标滚动时无论如何都没有对齐.
例如,使用Delphi 2007和2009中的Structure窗口可以观察到此行为. 有没有办法设置许多属性以具有标准Windows控件的行为?或者是否有一组补丁来实现这一目标? 解决方法
您可以拦截TBaseVirtualTree.OnScroll事件并使用虚拟树视图的画布的textheight(‘M’)返回值作为更改TBaseVirtualTree.offsety的数量,以便递增(向上滚动)或递减(向下滚动).还可以测试以确保预滚动位置模数textheight(‘M’)为零(以避免从错误位置滚动正确的数量).
或者,虚拟Treeview论坛上的this post建议另一种方法:使用VCL滚动条隐藏虚拟树视图的本机滚动条,然后自己滚动(捕获VCL滚动事件并以编程方式滚动虚拟树视图). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |