- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 VirtualStringTree,第一个 VST 已填充数据,我想检查第二个 VST 并添加第一个 VST 中尚未存在的节点。或者我想添加第二个 VST 中不与第一个 VST 重复的节点。
procedure Tcreatevtform.copy2tosimvt(vt: Tvirtualstringtree);
var
data: PMyRec;
simvtdata: PMyRectF;
rootnode, simvtnode: PVirtualNode;
ty: string;
begin
rootnode := vt.GetFirst; //vt is second virtualstringtree
while Assigned(rootnode) do
begin
data := vt.GetNodeData(rootnode);
ty := data^.caption;
if checksimduplicate(ty)=false then
begin
simvtnode := similarvt.AddChild(nil); //similarvt is the first virtualstringtree
simvtdata := similarvt.GetNodeData(simvtnode);
simvtdata^.caption := data^.caption;
end;
rootnode := vt.GetNext(rootnode,false);
end;
end;
function Tcreatevtform.checksimduplicate(t: string): boolean;
var
data: PMyRectf;
rootnode: PVirtualNode;
typew: string;
begin
Result := False;
rootnode := similarvt.GetFirst;
while Assigned(rootnode) do
begin
data := similarvt.GetNodeData(rootnode);
typew := data^.caption; // problem here, typew is always a constant or it is always the first
if t=typew then
begin
// node's caption of vt (letter 'a' is the first node's caption in my
// app. So this function is always false.
Result := True;
Break;
end;
similarvt.GetNext(rootnode, False);
end;
end;
我正在使用 D7。
最佳答案
使用列表比较算法可以轻松找到一个列表中但不是第二个列表中的所有项目。基本思想如下:
您可以向等于情况或第一个唯一或第二个唯一情况添加操作,以确定在这些情况下要执行的操作。在您的具体情况下,您需要让第二个唯一的情况向 VST 添加一个项目。如果您必须保留树结构,它可能会变得更加复杂,但这是基本思想。
关于delphi - 如何不向 TVirtualStringTree 添加重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456514/
VirtualStringTree的可视树结构始终停留在第一列(索引为0的那一列)。当您通过拖动列标题来更改列顺序时,树可能看起来很奇怪(下图)。是否有可能总是在第一个可见列中看到该结构? 最佳答案
我有一个带有 toFullRowSelect 的 VST(有几列)。我想在节点上启用拖放。 问题是,只有直接单击节点标题标题,才能开始拖动节点。如果单击的是行选择而不是节点标题,则拖动操作将不会启动,
我有一个 TVirtualStringTree(版本 5.2.2),我需要向它的节点添加对象而不是记录。 我已经查看了该问题提供的答案: Delphi, VirtualStringTree - cla
这是重现问题的非常小的项目(VirtualStringTree 版本 6.5): type TForm1 = class(TForm) vstTest: TVirtualStringTre
当启用 toThemeAware 时,VirtualTrees.pas 5.0.0 版本中的复选框处理似乎已损坏。 csUncheckedNormal 的节点被绘制为选中 + 热。 要使用 DrawE
我想根据搜索条件突出显示 VirtualStringTree 节点中的文本,如下例所示: 请问有什么建议吗? 最佳答案 感谢 TLama 的回答(How to underline or highlig
我已经学会了如何使用 TVirtualStringTree,并且发现它非常好。我有一个名为 PackedList 的自定义非可视列表,它由另一个线程填充。我想实时显示 TVirtualStringTr
攀登 TVirtualTreeView 的学习高峰,我尝试创建一个自定义后代,以确保在调整控件大小时,最后一列的宽度完全填充控件的宽度,而不需要水平滚动条。 我看到了许多与“AutoFitColumn
我有一个应用程序,可以从二进制日志文件加载记录并将其显示在虚拟 TListView 中。一个文件中可能有数百万条记录,并且显示可以由用户过滤,所以我不会一次性加载内存中的所有记录,并且ListView
在我们的应用程序中,我正在从 TStringGrid 组件迁移到 TVirtualStringTree 组件。正在显示大量数据(最多 50000 行和 5 列)。一列包含一行或多行文本。我设法在字符串
我有一个 VirtualStringTree,其 Header.Column 设置为 taLeftJustify(默认)。 有没有一种方法可以将该列的单元格/节点设置为 taRightJustify,
我试图让 VST 在其高度和宽度发生变化时自动调整大小。 我对其他放置的 VCL 组件没有这个问题,其中一些具有像 TImage 这样的属性“Stretch”,可以让它们自动调整。 VST 保持固执并
我有两个 VirtualStringTree,第一个 VST 已填充数据,我想检查第二个 VST 并添加第一个 VST 中尚未存在的节点。或者我想添加第二个 VST 中不与第一个 VST 重复的节点。
我们正在使用某种搜索表单,最近对其进行了修改。它的功能是标准搜索表单的功能:在顶部的一些框中输入一些条件,点击“搜索”按钮,然后在下面的网格中显示结果。但它很丑陋,而且功能非常有限,所以我的一位同事在
我正在学习 TVirtualStringTree 的用法,并且必须实现增量搜索。当用户在 TEdit 中输入字符时,我想将焦点节点移动到树中的第一个合格节点。 我正在阅读我能找到的所有演示和示例代码,
之前,我使用此VirtualStringTree来显示所有节点,并使用Node.Index来检查OnBeforeCellPaint<内的奇数行和偶数行 事件。 但是当我过滤节点时,我意识到 Node.
我有一个包含 4 列的 VirtualStringTree (VST) 的简单示例,在第二列或第三列中我可以有更多适合默认列宽度的文本。我启用了 hoAutoSpanColumns,因此大文本将与其他
如果我没记错的话,在 a 中不可能有不可见的节点。TVirtualStringTree TreeView ,因为没有启用、可见或其他属性来这样做。我的说法正确吗? 如果是,我是如何设法拥有不可见节点的
如何使用自己的自定义按钮(图像)来替换 VST 中的默认 [-]/[+] 按钮? 我想改用箭头( 、 ),同时也支持 RTL bidi 模式( 、 )。 编辑:我知道 bsTriangle 样式(Bu
我需要填充(用黑色)下图中突出显示的白色小方 block 。 我尝试添加额外的列。我尝试扩展 PaintInfo.PaintRectangle。我已经尝试了“金额”列中我能想到的所有设置。我没有主意了
我是一名优秀的程序员,十分优秀!