问题标签 [virtualtreeview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - VirtualStringTree 隐藏节点
是否可以隐藏 VirtualStringTree 中的特定节点?我正在实现“过滤”功能(VST 充当带有列的列表),并且我想避免在每次更改过滤器时重新加载内容 - 相反,告诉 VST 不要渲染特定项目要快得多。 ..任何解决方案?
delphi - 如何确定单元格是否在虚拟树视图的视口中?
如何确定单元格是否在虚拟树视图的视口中?谢谢。
delphi - 即使树没有聚焦,也可以突出显示选择
我在同一个表单上同时使用了几个 TVirtualStringTree。
如果一棵树有一个选定的节点,但焦点当前位于另一棵树上,则该选择会以浅灰色突出显示。
有没有一种简单的方法可以用通常的选择颜色(我的计算机上的蓝色)突出显示未聚焦的 TVirtualStringTree 的选择?
谢谢
delphi - 是否可以更改虚拟字符串树中行的颜色?
我想更改虚拟字符串树的特定行中文本的颜色。是否可以?
delphi - Delphi - 大量节点的虚拟字符串树慢GetText方法
我对 TVirtualStringTree 组件还不是很有经验,因此也许我忽略了一些微不足道的事情。
我的应用程序将文件信息收集到记录(文件名、路径、大小)中,并在虚拟字符串树中显示数据。
现在,当有很多节点(200K+)时,我经历了严重的减速,整个树基本上都滞后了。我知道仅记录数据占用的内存就很大,但我发现延迟是由 VST 的 OnGetText 方法引起的。因此,该方法是否读取实际数据或将 CellText 设置为静态字符串(例如 CellText := 'Test';)并不重要,减速很重要。如果我在不设置 CellText 的情况下退出 OnGetText,它可以正常工作 - 即使我的树中有多达 1,000,000 个节点。此外,如果我折叠树(FullCollapse)以这种方式隐藏 90% 的节点,OnGetText 的行为也可以,或者至少要好得多。
据我了解,仅在实际可见的屏幕节点上调用 OnGetText,因此我不明白为什么树中有大量节点会出现这样的问题。
有人有任何提示让我指出一个方向吗?
编辑:
德尔福版本:D2010 VST 版本:4.8.6
我最简单的测试形式的代码基本上如下:
如果我设置 CellText,它会滞后,如果我退出,它不会。奇怪的是,我越往下滚动,情况就越糟。
这是分配为 NodeData 的内容:
我注意到,扩展/折叠和重新扩展似乎以某种方式改善了这种情况,但我无法说出为什么这实际上会产生任何影响。
delphi - 虚拟树视图的滚动限制是多少?
如何在 onchange 事件期间获得 virtualstringtree 中 X 和 Y 的最大滚动?
delphi - 如何将文件从 Explorer Shell 拖放到 Delphi 应用程序中的 VirtualTreeView 控件中?
Mike Lischke 在 VirtualTreeView 中有广泛的拖放支持,我正在使用 TVirtualStringTree,它有一些拖放事件,但我不知道如何让它接受 shell 拖放将 Windows 资源管理器外壳中的一些文件放入我的应用程序中。我想加载文件,当它们被拖到放置控件上时。
我尝试使用来自 Anders Melander 的第三方代码集来处理拖放,但是因为 VirtualTreeView 已经将自己注册为放置目标,所以我不能使用它。
编辑:我找到了一个简单的解决方法:在 VT.TreeOptions.MiscOptions 中关闭 toAcceptOLEDrop。如果有人知道如何使用 VirtualTreeView 而不使用第三方 OLE-shell-drag-drop 库并使用其广泛的 OLE 拖放支持来提取从 Shell 中拖入的文件名列表,那将是很酷的。
delphi - 使用 VirtualTreeview 和 OTL 的内存泄漏
我创建了一个小型多线程应用程序,我正在尝试将其转换为使用 OmniThreadLibrary。我正在使用 Virtualtreeview 来显示日志和状态/结果。Vst Log只有两列,记录只包含两个字符串字段(非常简单,记录内没有对象)。
使用 OTL 附带的 DEMO 项目(线程池 #11)我将项目更改为使用 VirtualTreeview 而不是列表框。当我从演示中“运行任务”时,没有内存泄漏,但如果我多次运行“运行任务”,就会发生内存泄漏。如果我多次运行任何任务,就会发生内存泄漏。如果我根本不使用 VirtualTreeView,任何时候都不会发生内存泄漏。就在我使用 VST 并且任务运行不止一次时。
我确实使用了 FreeNode 事件并清除了字符串,甚至尝试使用 Finalize ...
例子:
为什么在多次运行任务时会出现内存泄漏?Delphi 2010 与 FastMM4 最新的 Virtualtreeview 和 OTL
delphi - Delphi VirtualTreeView对多列进行排序?
我听到了很多关于 VirtualTreeView 组件的赞誉,并考虑在我们正在进行的重写中使用它。目前我们使用 StringGrid。
我找不到对多列进行排序的方法,尽管单列排序效果很好。有什么方法可以做类似于单击第 1 列>排序、Ctrl+单击第 2 列>在第 1 列之后对第 2 列进行排序等操作?
具体来说,我想至少对三列进行排序:采购订单编号、行项目、发布。
在此先感谢您的帮助!
这是我正在测试理论的代码(略微简化)(不是来自上面引用的同一个项目):
注意:在您更新后,我还编辑了我的代码,以显示它当前的状态。下面我发布了排序的结果:
这产生了以下结果(我只显示我在这里尝试排序的三列):
最初加载时:
订单行发布
153 7 2
153 7 1
153 1 1
153 1 2
153 4 1
153 6 2
153 6 1
120 3 2
120 3 1
153 2 1
153 4 2
120 2 1
153 4 1
120 1 1
153 3 1
153 2 1
111 2 1
111 1 5
111 1 1
111 4 2
111 3 1
111 4 1
111 1 3
111 1 2
111 1 4
第一次点击后
订单行下达
111 2 1
111 1 5
111 1 1
111 4 2
111 3 1
111 4 1
111 1 3
111 1 2
111 1 4
120 3 2
120 3 1
120 2 1
120 1 1
153 7 2
153 7 1
153 1 1
153 1 2
153 4 1
153 6 2
153 6 1
153 2 1
153 4 2
153 4 1
153 3 1
153 2 1
第二次点击后
订单行下达
153 7 2
153 7 1
153 6 2
153 6 1
153 4 1
153 4 2
153 4 1
111 4 2
111 4 1
153 3 1
120 3 2
120 3 1
111 3 1
153 2 1
153 2 1
120 2 1
111 2 1
153 1 1
153 1 2
120 1 1
111 1 5
111 1 1
111 1 3
111 1 2
111 1 4
第三次点击后
订单行下达
111 1 1
120 1 1
153 1 1
111 2 1
120 2 1
153 2 1
153 2 1
111 3 1
120 3 1
153 3 1
111 4 1
153 4 1
153 4 1
153 6 1
153 7 1
111 1 2
153 1 2
120 3 2
111 4 2
153 4 2
153 6 2
153 7 2
111 1 3
111 1 4
111 1 5
谢谢你的时间!