问题标签 [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 投票
1 回答
1444 浏览

delphi - 如何在 InitNode 事件中将数据分配给 VirtualStringTree 的节点

我不确定如何将数据分配给 VirtualStringTree 中的节点。我需要在树控件的 InitNode 事件中将指向记录对象的指针分配给节点的 Data 属性。但是,我收到“需要指针类型”编译时错误。

我需要将数据分配给 InitNode 事件中的节点,但不确定如何分配。

0 投票
1 回答
1605 浏览

delphi - TVirtualStringTree:如何获取已编辑的文本?

我正在编辑 TVirtualStringTree 中显示节点的第二列。但是,编辑完成后,我无法使用 Sender.GetNodeData(Node) 检索文本 - 它不包含任何文本。

如何获取 OnEdited 事件中的文本?还有其他方法可以获取编辑后的文本吗?我已经阅读了 Virtual Treeview CHM 帮助文档的前几个常见问题页面,并且还参考了这个 SO question中的答案,但找不到答案。

这是当前代码:

0 投票
1 回答
308 浏览

delphi - VirtualStringTree - 存储的指针 <> 检索到的指针!我的编码方法错了吗?

我正在使用 TVirtualStringTree 来存储指向记录的指针。

最初有一个包含记录列表的 TList。

我正在使用 OnInitNode 事件遍历 TList 并将每个记录的数据分配给树的节点。

但是,当检索与 OnNewText 事件处理程序中的节点关联的数据时,返回的指针具有与树中最初存储的地址不同的地址。

此外,我通过调试可以看出,从节点中检索到的指针(指向记录数据)最初存储在节点中的指针不同。我需要将更改的数据保存到数据库中,并且需要使用更改的数据引用记录。应该像引用指针一样简单,但问题是指针不一样。

我不确定我做错了什么,希望有人能帮我解决这个问题。

提前致谢。

这是我的代码:

数据结构和声明:

将数据加载到 TList 中,然后加载到树中:

检索数据。我注意到这里的问题:

这是我将列表数据保存到数据库的地方,也是我需要树来更改原始数据而不是副本的原因:

这是 Debug->Watch List 窗口的屏幕截图:

在此处输入图像描述

0 投票
1 回答
4550 浏览

delphi - VirtualTreeView - 同一节点中不同颜色的文本

我正在尝试创建一个TVirtualStringTree类似于以下内容的视图:

具有不同字体颜色的文件夹视图

在上面的例子中,我展示了我想要达到的一些可能的场景。FolderA有粗体文本,之后是同一节点中的红色非粗体文本。我正在寻找进行这种输出的方法。

但是,如果这太难或太难创建,我会对FolderBFolderC类型的输出感到满意 - 这可能由 2 列组成,一个包含文件夹名称,另一个包含里面的文件数。

FolderD在这里只是作为没有文件的文件夹的示例以及该文件夹的输出(文本是非粗体并且没有数字)。

我正在寻找如何产生这种效果的任何方向,因为 VirtualTreeView 似乎每个节点只能有单一颜色或粗体设置。任何提示或建议如何在FolderAFolderBFolderC的方向上移动都非常感谢,所以我有一个起点。欢迎使用 Delphi 或 C++ Builder 示例(尽管最终代码将在 C++ Builder 中)。

0 投票
1 回答
195 浏览

delphi - 如何解决这个 TVirtualStringTree Onheaderclick 不兼容参数?

我在 Delphi 7.0 Windows XP 2 上测试了 Mike Lischke 的 TVirtualStringTree(版本 4.8.7)。它运行良好。我在另一台机器(Delphi 7.0 Windows XP 3 系统)上安装了相同的 TVirtualStringTree (v.4.8.7),并在 Windows XP 3 系统上测试了相同的项目。当我单击标题时,它提示错误。我从 Delphi 7.0 Windows XP 3 中删除了 TVirtualStringTree(版本 4.8.7),并在 Windows XP 3 上安装了更高版本的 TVirtualStringTree(版本 5.3.0)。同样的问题仍然存在。

当我在 Windows XP 3 上构建项目时,它提示如下:

我单击“否”并运行测试程序。当我单击标题时,它提示“访问冲突在...”

它提示了以下错误:

我该如何解决这个问题?

0 投票
0 回答
563 浏览

delphi - 如何正确处理 OnChange 事件 - VirtualStringTree

我已经创建了一个代表我的节点数据的记录,现在,我想正确处理事件OnChange,每次单击不同的节点时,它都会调用一次事件(不是两次,这是我的问题)。

此树显示压缩文件的目录结构。每次我单击树中的一个项目时,它都会加载该文件夹中包含的文件列表。但是当我使用OnChange事件并单击一个项目(或按向上/向下箭头键)时,它会调用该事件两次,使我的应用程序按顺序加载文件列表两次。

仅当焦点项目更改时,如何正确使用事件来加载文件列表?

0 投票
1 回答
905 浏览

delphi - 当用户单击 VirtualTreeView 控件中的标题列复选框时如何获得通知?

是否有事件通知 VirtualTreeView 标题列复选框单击?它是这张图片上突出显示的复选框:

在此处输入图像描述

0 投票
1 回答
696 浏览

delphi - TVirtualStringTree:OnGetText 事件中的 Column 参数是什么?

OnGetText 事件过程定义为:

此事件的文档 CHM 帮助文件只是说:

使用新闻组或 Delphi Gems 留言板等其他资源来查找说明。

我在 SO 上看到了一些其他帖子,他们在此事件中检查 (Column < 0),所以我很好奇这是什么?

FWIW,我正在尝试从数据库数据中实现父子树视图。

0 投票
2 回答
1087 浏览

delphi - VirtualStringTree - 无法让父子节点正常工作

我需要在 TVirtualStringTree 中呈现主菜单 - 每个菜单项都有一个类别。类别将构成树的根节点,在每个类别根节点下,将是菜单项。

类别和菜单项的数据集字段如下所示: 数据集结构

我在 OnInitNode 中的代码滚动浏览 Category 数据集的记录,并将每个 Category 的菜单项加载为子节点。但是我出了点问题(见图),类别节点都是相同的文本——这意味着数据集没有滚动到下一条记录。

似乎InitNode事件中的这行代码导致它退出循环,并且似乎是问题的原因:

但是,渲染子节点的正确方法是什么?

这是我的代码:

这是正在发生的事情。每个根节点(父节点)应该不同,但事实并非如此。此外,第二个根节点的子节点应该不同,但它似乎卡在第一个根节点的最后一个子节点上:

渲染错误!

提前致谢!

0 投票
1 回答
303 浏览

delphi - 悬停图像时 TVirtualStringTree 更改光标

从节点悬停 ImageIndex 时如何更改光标

基本上我在节点上显示了一个附加图标,我想让用户通过更改光标来了解他可以通过按下文件来下载文件。