- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将选定的节点及其所有后代从一个 TTreeView 复制到另一个 TTreeView。
实现这一目标的最佳、最有效的方法是什么?
最佳答案
最简单的方法是递归地执行此操作,如下所示:
procedure WalkChildren(Node: TTreeNode; List: TList<TTreeNode>);
var
i: Integer;
begin
List.Add(Node);
for i := 0 to Node.Count-1 do begin
WalkChildren(Node[i], List);
end;
end;
这样调用它:
List := TList<TTreeNode>.Create;
WalkChildren(Root, List);
此示例添加到列表中,但您可以将该操作替换为您选择的操作之一。
现在我们可以行走一棵树了,是时候串联行走两棵树了。
procedure CopySubTree(Src, DestParent: TTreeNode; DestNodes: TTreeNodes);
var
i: Integer;
Dest: TTreeNode;
begin
Dest := DestNodes.AddChild(DestParent, Src.Text);
//copy other parameters from Src to Dest as you please
for i := 0 to Src.Count-1 do begin
CopySubTree(Src[i], Dest, DestNodes);
end;
end;
你可以这样调用它:
CopySubTree(SrcTree.Selected, nil, DestTree.Items);
关于delphi - 如何将子树从一个 TTreeView 复制到另一个 TTreeView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5967728/
我想将选定的节点及其所有后代从一个 TTreeView 复制到另一个 TTreeView。 实现这一目标的最佳、最有效的方法是什么? 最佳答案 最简单的方法是递归地执行此操作,如下所示: proced
使用 Borland C++ Builder 我有一个带有自行创建的 Breadcrumb 控件的应用程序,位于 TTreeView 控件之上,带有 TListView 控件(alClient 在 T
A.创建一个 Delphi VCL Forms 应用程序。 B.在窗体上放置一个 TTreeView,将其命名为 tvTest 并用项目填充它并设置 Treeview 的大小,以便滚动条在 TreeV
是否可以使用标准 TTreeView 来更改展开和折叠图像? 我指的不是节点图像,而是有子节点旁边的小箭头,如下所示: 理想情况下,我希望箭头显示为 + 和 - 符号,就像 Delphi 组件结构树一
我有一个 TreeView,其中包含项目、客户、运营商和区域等信息组。它们的子项是数据库中每个组的行。每当我双击一个项目时,它都会更改屏幕另一侧的表格,通过我刚刚在 TreeView 中选择的项目过滤
如果 Name 列太窄,Delphi IDE Locals 窗口会剪切局部变量的名称,如下所示: 我想在我的程序中做同样的事情。目前我正在使用 TMS THTMLTreeList,我得到的结果如下所示
我试图在 TreeView 中获取所选节点的所有子节点,但遇到了一些问题。 以这个 TreeView 为例: 我想将所有子节点变为黄色突出显示的“文件夹”节点,这将是旁边有一条蓝线的子节点。 这是我尝
如果我有一个 TTreeView,并且我调用如下内容: myTreeView.Select(nodeIWantSelected); 它被选中,但除非该节点恰好位于当前可见的树部分内,否则我看不到它,并
我使用的是 Delphi 10 Starter 版本。我正在研究如何使用Delphi的TTreeView组件。 一切正常,没有任何问题。我剩下的唯一问题是: 向节点添加对象后,删除该项目及其对象的正确
我有一个对话框,上面有一个 TTreeView 控件以及一个“确定”和“取消”按钮。这些按钮的 Default 和 Canel 属性分别设置为 true,并且 ModalResult 已正确设置。 用
我正在使用Zarko Gajic's Store More (Custom) Data Into The Tree Node Of A Tree View为每个节点项添加额外的字符串,但我发现如果我的
我发现了一个与 TTreeView 相关的错误。 获取一个包含 TTreeView 的表单,并将 HideSelection 设置为 True。 使 TreeView 多选并在 TreeView 中选
我有一个 TTreeView,它可以有很多节点,当展开很多节点时,树会使用大量屏幕空间。 现在假设我想将 TreeView 底部附近的节点拖到顶部,但我实际上看不到 TreeView 的顶部部分,因为
我正在为 TTreeView 实现拖放功能。在其 OnStartDrag 事件中,我正在创建派生类的 DragOcject: TTreeDragControlObject = class(TDra
当这样监听TTreeView事件的AdvancedCustomDraw事件时: if Stage = cdPrePaint then begin // modify some Sender.C
我有一个 TTreeView,它可以有很多节点,当展开很多节点时,树会使用大量屏幕空间。 现在假设我想将 TreeView 底部附近的节点拖到顶部,但我实际上看不到 TreeView 的顶部部分,因为
我想在我的安装程序中的页面中添加一个 TreeView 控件并搜索了 inno setup help对于 TTreeView 类,但只找到了 TFolderTreeView 和 TStartMenuF
我的表单上有一个 TTreeView,它有很多 TTreeViewItem 节点。 我想仅在用户展开其中一个TTreeViewItem节点时调用某些函数(这并不一定意味着用户“选择”了其中一个节点)
我有一个包含可编辑项目的 TreeView。当我在选择后按 F2 或单击任何项目时,就地编辑器出现。 如何在显示之前更改该编辑器中显示的文本?例如,我的树项的文本是 Point 1 (300, 4
使用 TreeNode.MoveTo(...) 方法有时无法正常工作并引发“访问冲突”异常。 大多数时候有效,有时无效。 大多数情况下,“COMCTL32.DLL 模块中存在访问冲突”。读取地址 FE
我是一名优秀的程序员,十分优秀!