问题标签 [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 回答
542 浏览

delphi - 来自 TVirtualStringTree 的 GetText 被触发更多次

请看下面的代码:

按下按钮后,我收到的消息是:

基本上GetText每个节点和每列都会触发 4 次。

为什么不是只触发一次?像这样:[0,0] [1,0] [0,1] [1,1]

在此处输入图像描述

0 投票
2 回答
443 浏览

delphi - 如何在 TVirtualStringTree 中绘制动画水平条?

我的目标是在VST

我的目标是绘制与下图类似的结果,我尝试做这样的事情OnBeforeCellPaint

但我不能做相同的结果并达到与以下图像相同的方法:

在此处输入图像描述

这就是我在编码中得到的结果:

在此处输入图像描述

进度条出现在不在它旁边的节点上,它的设计与图像中显示的不同,它来自节点的黄色长背景,我想在节点的左侧制作它,并具有与我在上面发布的动画图像。

0 投票
5 回答
581 浏览

delphi - TStringEditLink 被破坏后的访问冲突 (TVirtualStringTree) - Lazarus 示例

我尝试基于Lazarius的示例为 VirtualStringTree 实现一个编辑器

你能告诉我为什么我在TStringEditLink被销毁后会出现访问冲突吗?

奇怪的是,只有当我按 ESCAPE 或 ENTER 时才会出现错误。如果我从一个单元格单击到另一个单元格,则没有错误。

就像一个观察,我播种,如果我FEdit.Free从错误中删除代码destructor TStringEditLink.Destroy消失。

您对此有解决方案吗?

下面是完整代码:

EditorLink单位

0 投票
1 回答
196 浏览

delphi - 如何在 TvirualTree 中内联绘制节点?

我目前正在Tvirtualdrawtree使用 on before paint 在里面绘制一些图像。这是我的绘图代码

绘制的图像是垂直的。例如,我想水平显示它们,如下图所示

在此处输入图像描述

这是数据结构

0 投票
1 回答
457 浏览

delphi - TVirtualDrawTree - 如何将节点放置在一行中?

是对我的另一个问题的跟进。

正如我在评论中被建议提出关于这个主题的新问题

有人建议我在 Row 中绘制不同的图像。我的目标从一开始就并排插入节点我被告知这不能用 VDT 来完成,它不是为此目的而制造的。但是是什么让我确定有办法,因为我看到一个在线项目使用相同的 VDT

这是这个项目的屏幕截图

在此处输入图像描述

使用像PE资源管理器这样的资源查看器,我发现了这个表格数据

所以我告诉自己,我必须用它Tviruaildrawtree来实现相同的目标,然后我开始创建数据

因为我在想我必须为节点创建图像对象,因为我将从 url 下载一些图像列表然后将它们添加到节点,如下所示,所以下面的代码是将图像从字符串列表下载到桌面然后将其加载到节点Tgifimage

以及我如何在 VDT 内绘制节点

但我无法安排与我上面显示的图像相同的节点

它似乎不是可以制造的onbeforecellpanit

在我的另一个问题中,Tom Brunberg建议将图像划分为 10 个节点,如果添加的图像是 80 个并且每行需要 8 个,例如,每个有 8 个图像并且每个图像显示在它自己的列中。但我不知道如何在编码中或从哪里开始。

当前代码的问题

我在下面的代码中遇到了一个异常我在字符串列表中添加了 6 个图像路径然后尝试在每列上绘制

0 投票
2 回答
919 浏览

delphi - 检测用户是否通过选项卡或单击获得组件的焦点

如何检测用户是通过tab按键还是鼠标进入组件click

更新 1

事实上TVirtualStringTree,这是关于一个重点关注的方式,它打开一个专注于一个或另一个列的自定义编辑器。

更新 2

查看下面的代码。

我想做的是:

  • 如果用户按键输入,则编辑焦点节点的第一列Tab
  • 如果通过鼠标输入,则编辑相应的命中列click

如果我点击组件,OnEnter首先触发,然后触发OnClick,所以问题是编辑节点被触发了 2 次。

0 投票
1 回答
713 浏览

delphi - 如何在过滤的 TVirtualStringTree 上制作适当的备用行颜色

以前我用它VirtualStringTree来显示所有节点,我用它Node.Index来检查事件中的奇数行和偶数行OnBeforeCellPaint

但是当我过滤节点时,我意识到Node.Index用作备用行是无关紧要的,如下面的屏幕截图所示:

过滤节点上的 VirtualStringTree 备用颜色

任何想法/解决方案来解决这个问题?

0 投票
1 回答
1036 浏览

delphi - 在 Delphi 应用程序中结束或取消拖放操作

我正在从 Outlook 中拖放电子邮件附件。文件被放入虚拟树视图中。

我在拖拽事件结束时的导入功能需要一段时间来处理文件,它会冻结 Outlook 应用程序,直到功能结束。

我希望能够在功能中途结束拖动操作。

0 投票
1 回答
93 浏览

delphi - 如何使 TVirtualStringTree 进程具有更高优先级的按键?

我们最近修改了一个特定的搜索表单。它的功能是标准搜索表单的功能:在顶部的某些框中输入一些条件,点击“搜索”按钮,然后在下方的网格中显示结果。但它很丑而且功能非常有限,所以我的一个同事重建了它……就在去换新工作之前。现在我正在尝试完成最后几个细节。

其中一项更改是用TListBox更强大的TVirtualStringTree. 但是在这个过程中,它似乎破坏了一些东西:之前,如果您单击网格中的一行(使网格处于放置焦点)并点击Enter,相应的事件处理程序将触发并处理您的输入,打开详细视图对于所选项目。然而,在这个网格中,按下Enter会导致TButton带有属性的表单上的Default = true触发它OnClick

当它具有输入焦点时,我怎样才能使其TVirtualStringTree优先,以便它在将其发送到表单之前(最好而不是)响应用户按下 Enter 本身?

0 投票
2 回答
3027 浏览

delphi - 选择更改后如何检索 VirtualStringTree 中的选定节点?

我启用了 MultiSelect 选项的 VST。How can I retrieve the list of selected nodes in VirtualStringTree when the selection changes via keyboard events?

我尝试在 OnFocusChanged 事件中使用以下代码

如果我使用鼠标和 shift 键,这很好用,但是,如果我使用键盘,即选择节点,然后按 shift,然后按向下箭头选择多个节点,则选择返回完整列表 - 1。

这似乎是一个错误?关于如何在使用键盘时获得完整选择的任何想法?