- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在尝试与旧的 VCL TTreeNode 相同的方法。
好吧,没有 TTreeNode
并且没有方法将树节点添加到树中,而是我必须手动创建 TTreeViewItem
实例并将其父属性设置为 TTreeView
实例。现在,TTreeViewItem
有一个 data 属性,但它的类型是 TValue
。
如何处理这种类型?
我尝试了以下方法:
type
TMaster = class(TDevice)
...
end;
...
mstitem := TTreeViewItem.create(self);
mstitem.parent := TreeView1;
mstitem.data := TMaster.Create(i, 'master'+ inttostr(i));
...
procedure TForm1.TreeView1Click(Sender: TObject);
var
obj: TObject;
begin
selectednode := TTreeView1.Selected;
obj := TDevice(selectednode.Data.AsObject); //Invalid typecast
if obj is TDevice then
showmessage( TDevice(obj).DevName );
end;
最佳答案
TFmxObject.SetData
方法是空的虚拟 stub ,必须在后代类中重写。您不能按照使用方式使用 TreeViewItem.Data
,因为 Data
实际上包含 TTreeViewItem.Name
属性。
您必须创建自己的后代 TTreeViewItem
类并使用它而不是默认的
TMyTreeViewItem = class(TTreeViewItem)
protected
fData: TValue;
function GetData: TValue; override;
procedure SetData(const Value: TValue); override;
end;
function TMyTreeViewItem.GetData: TValue;
begin
Result := fData;
end;
procedure TMyTreeViewItem.SetData(const Value: TValue);
begin
fData := Value;
end;
关于delphi - Firemonkey TTreeView - 在 TTreeViewItems、TValue 中存储对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122108/
我想将选定的节点及其所有后代从一个 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
我是一名优秀的程序员,十分优秀!