问题标签 [tvirtualstringtree]

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.

0 投票
0 回答
179 浏览

delphi-7 - Virtual TreeView 输给 UseExplorer 主题

我在 virtualtreeview (DesignTime) 中启用了网格线和 toUseExplorerTheme。

我想在运行时删除网格线,但似乎我失去了 toUseExplorerTheme 属性。这是一个错误还是我错过了什么?我试图将它添加回设置/选项,但没有运气。我也有 XP 清单。

这里有一点代码:

谢谢您的帮助。

0 投票
1 回答
655 浏览

delphi-7 - VirtualStringTree如何释放多个节点

我有一个带有 X 根和 X 子节点的 VirtualStringTree。

每个根都分配了一个特殊的 NodeData。每个子节点都分配了另一个 NodeData。我怎么知道 OnFreeNode 哪个是哪个?因为我无法在不知道分配给它的记录的情况下释放数据。有任何想法吗?

0 投票
1 回答
1614 浏览

delphi - VirtualStringTree 对齐的文本和网格线

我有一个带有 X 标头和 x 根的 virtualstringtree(启用了网格线)。我想将子项(至少 1 个)添加到只有 1 个文本位于中间并通过所有标题(独立)的根。因此,无论我是否调整标题等的大小,文本始终与 VirtualStringTree 的实际客户端大小对齐。

这可能吗?如果是这样,怎么做?

在此处输入图像描述

0 投票
2 回答
3154 浏览

delphi-7 - VirtualStringTree OnNodeRightClick

如果我右键单击节点(或通常在 VirtualStringTree 上),我正在寻找一个程序或被触发的东西

我有以下情况:

  • 我的 VST 靠近列表视图。
  • 我只能用鼠标多选根节点(按住鼠标按钮并移动鼠标)
  • 如果我单击任何子节点(右或左) - 它被选中(+ [VSelected] 状态)
  • 如果我右键单击根节点,它会自动选择并打开一个弹出菜单。

现在我想为我的所有子节点(并且只有当它们被选中时)有一个不同的弹出菜单( 1 common )。

希望你能明白我的意思,谢谢你的帮助。

0 投票
1 回答
7975 浏览

delphi - 如何选择 VirtualStringTree 中的所有根节点或所有子节点?

我想选择所有根节点或所有子节点(不是 VirtualTreeView 中的所有节点)。
我尝试使用此代码选择所有根节点:

我可以说有一个小故障。选择不完整或卡住。我究竟做错了什么 ?

编辑:
我使用多选。

0 投票
1 回答
3954 浏览

delphi - 是否可以将 VirtualStringTree 用于主细节网格视图?

好吧,我在这里遇到了一些非常棘手的事情......我想将标题绘制/使用到 ChildNode。我认为这个想法是合理的,因为在子节点中有标题看起来很神奇,因此可以在表中指定子节点。VST 是否具有或根本不可能的功能?

谢谢你的帮助。

0 投票
2 回答
3199 浏览

delphi - 如何让 TVirtualStringTree 在禁用状态下显示图标?

我需要将目录中的文件显示到 TVirtualStringTree。所以,我使用 SHGetFileInfo 来获取文件的图标。但似乎我只能获得“正常”图标(以下屏幕截图的左侧)。如果是这样,TVirtualStringTree 可以将图标绘制为“禁用”吗?就像您禁用了 a 节点一样。请看屏幕截图:

在此处输入图像描述

更新

Soft Gems 论坛中有一个类似的主题。我可以得到图标的矩形,然后自己绘制图标。我正在使用 TcxImageList,它可以轻松绘制“禁用”图标。我首先在 GetImageIndex 事件中分配了一个不存在的图像索引,这样我就有了绘制图标的空间。然后使用以下代码进行绘制。

0 投票
1 回答
1583 浏览

delphi - OnNewText 事件后何时重绘 VirtualTreeView?

我使用此代码填充 VirtualStringTree 并允许重命名项目:

问题- 当InitializeTree()最初被调用并被VirtualStringTree1->FocusedNode分配时,它被正确分配(不是 NULL)。

但是,如果在重命名事件后InitializeTree()调用此函数以实际从数据库重新加载树 - 分配后它仍然为 NULL。所以很明显,树不能从事件中重新加载和分配。OnNewTextFocusedNodeFocusedNodeOnNewText

我实现了延迟调用以重新加载新树并重新分配FocusedNode- 通过实现一个快速而肮脏的计时器(可以使用 PostMessage 进行延迟函数调用,但这只是一个愚蠢的例子) - 在计时器内分配后它不再为 NULL 并且按预期工作。

谁能指出实现树重新加载的最佳方法是什么 - 就像使用一个特定的事件,在该事件中可以安全地设置新的FocusedNode并且不会重新分配回 NULL?延迟函数调用是实现此目的的唯一方法,还是有更好的事件来捕获(例如,如果一个事件发生在OnNewText该事件不允许设置聚焦节点之后)。当然这可行,但如果有更好的方法可以做到这一点,我很感兴趣。

0 投票
1 回答
623 浏览

delphi - VirtualStringTree:在 OnBeforeCellPaint 之后修复节点命中框

我的表单上有一个 virtualstringtree 控件,它必须为某些节点显示来自图像列表的图标。这很好用,但是,对于某些节点,它还必须显示与节点和正方形一样高的自定义绘制图标。

我正在使用 OnBeforeCellPaint 事件来绘制这些图像并更改 ContentRect 以适应它在项目中所需的额外空间。

(+4 与“图标”的文本间距与从图像列表加载的间距相同)

这种方法似乎工作正常,节点绘制正确,选择矩形也是如此。但是,用于单击节点的 hitboxes 似乎没有得到更新。我必须单击原始 ContentRect 来选择节点。

如何更新碰撞箱?

0 投票
1 回答
1281 浏览

delphi - 如何从 TVirtualStringTree 中删除所有节点?

如何在事件处理程序中删除所有节点,包括 VirtualStringTree 后代,关闭包含 VirtualStringTree 的表单?