问题标签 [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.
delphi - 如何在 InitNode 事件中将数据分配给 VirtualStringTree 的节点
我不确定如何将数据分配给 VirtualStringTree 中的节点。我需要在树控件的 InitNode 事件中将指向记录对象的指针分配给节点的 Data 属性。但是,我收到“需要指针类型”编译时错误。
我需要将数据分配给 InitNode 事件中的节点,但不确定如何分配。
delphi - TVirtualStringTree:如何获取已编辑的文本?
我正在编辑 TVirtualStringTree 中显示节点的第二列。但是,编辑完成后,我无法使用 Sender.GetNodeData(Node) 检索文本 - 它不包含任何文本。
如何获取 OnEdited 事件中的文本?还有其他方法可以获取编辑后的文本吗?我已经阅读了 Virtual Treeview CHM 帮助文档的前几个常见问题页面,并且还参考了这个 SO question中的答案,但找不到答案。
这是当前代码:
delphi - VirtualStringTree - 存储的指针 <> 检索到的指针!我的编码方法错了吗?
我正在使用 TVirtualStringTree 来存储指向记录的指针。
最初有一个包含记录列表的 TList。
我正在使用 OnInitNode 事件遍历 TList 并将每个记录的数据分配给树的节点。
但是,当检索与 OnNewText 事件处理程序中的节点关联的数据时,返回的指针具有与树中最初存储的地址不同的地址。
此外,我通过调试可以看出,从节点中检索到的指针(指向记录数据)与最初存储在节点中的指针不同。我需要将更改的数据保存到数据库中,并且需要使用更改的数据引用记录。应该像引用指针一样简单,但问题是指针不一样。
我不确定我做错了什么,希望有人能帮我解决这个问题。
提前致谢。
这是我的代码:
数据结构和声明:
将数据加载到 TList 中,然后加载到树中:
检索数据。我注意到这里的问题:
这是我将列表数据保存到数据库的地方,也是我需要树来更改原始数据而不是副本的原因:
这是 Debug->Watch List 窗口的屏幕截图:
delphi - VirtualTreeView - 同一节点中不同颜色的文本
我正在尝试创建一个TVirtualStringTree
类似于以下内容的视图:
在上面的例子中,我展示了我想要达到的一些可能的场景。FolderA有粗体文本,之后是同一节点中的红色非粗体文本。我正在寻找进行这种输出的方法。
但是,如果这太难或太难创建,我会对FolderB或FolderC类型的输出感到满意 - 这可能由 2 列组成,一个包含文件夹名称,另一个包含里面的文件数。
FolderD在这里只是作为没有文件的文件夹的示例以及该文件夹的输出(文本是非粗体并且没有数字)。
我正在寻找如何产生这种效果的任何方向,因为 VirtualTreeView 似乎每个节点只能有单一颜色或粗体设置。任何提示或建议如何在FolderA或FolderB或FolderC的方向上移动都非常感谢,所以我有一个起点。欢迎使用 Delphi 或 C++ Builder 示例(尽管最终代码将在 C++ Builder 中)。
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 上构建项目时,它提示如下:
我单击“否”并运行测试程序。当我单击标题时,它提示“访问冲突在...”
它提示了以下错误:
我该如何解决这个问题?
delphi - 如何正确处理 OnChange 事件 - VirtualStringTree
我已经创建了一个代表我的节点数据的记录,现在,我想正确处理事件OnChange
,每次单击不同的节点时,它都会调用一次事件(不是两次,这是我的问题)。
此树显示压缩文件的目录结构。每次我单击树中的一个项目时,它都会加载该文件夹中包含的文件列表。但是当我使用OnChange
事件并单击一个项目(或按向上/向下箭头键)时,它会调用该事件两次,使我的应用程序按顺序加载文件列表两次。
仅当焦点项目更改时,如何正确使用事件来加载文件列表?
delphi - 当用户单击 VirtualTreeView 控件中的标题列复选框时如何获得通知?
是否有事件通知 VirtualTreeView 标题列复选框单击?它是这张图片上突出显示的复选框:
delphi - TVirtualStringTree:OnGetText 事件中的 Column 参数是什么?
OnGetText 事件过程定义为:
此事件的文档 CHM 帮助文件只是说:
使用新闻组或 Delphi Gems 留言板等其他资源来查找说明。
我在 SO 上看到了一些其他帖子,他们在此事件中检查 (Column < 0),所以我很好奇这是什么?
FWIW,我正在尝试从数据库数据中实现父子树视图。
delphi - VirtualStringTree - 无法让父子节点正常工作
我需要在 TVirtualStringTree 中呈现主菜单 - 每个菜单项都有一个类别。类别将构成树的根节点,在每个类别根节点下,将是菜单项。
类别和菜单项的数据集字段如下所示:
我在 OnInitNode 中的代码滚动浏览 Category 数据集的记录,并将每个 Category 的菜单项加载为子节点。但是我出了点问题(见图),类别节点都是相同的文本——这意味着数据集没有滚动到下一条记录。
似乎InitNode
事件中的这行代码导致它退出循环,并且似乎是问题的原因:
但是,渲染子节点的正确方法是什么?
这是我的代码:
这是正在发生的事情。每个根节点(父节点)应该不同,但事实并非如此。此外,第二个根节点的子节点应该不同,但它似乎卡在第一个根节点的最后一个子节点上:
提前致谢!
delphi - 悬停图像时 TVirtualStringTree 更改光标
从节点悬停 ImageIndex 时如何更改光标
基本上我在节点上显示了一个附加图标,我想让用户通过更改光标来了解他可以通过按下文件来下载文件。