delphi 中子类化 TTreeNode 的问题

2024-01-18

我正在编写一个 delphi 2009 应用程序,它在对接面板上使用 TTreeView。

我发现如果我对 TTreeNode 进行子类化,我可以在我的应用程序中进行很大的简化。它所在的树视图放置在对接面板上。

TInfoTreeNode=class(TTreeNode)
private
  // remember some stuff
public
end;

procedure TfraInfoTree.tvInfoCreateNodeClass(Sender: TCustomTreeView;
  var NodeClass: TTreeNodeClass);
begin
  NodeClass:=TInfoTreeNode;
end;

我想我已经碰壁了......每个“TInfoTreeNode”实例都需要记住有关其自身的事情。由于当包含 TTreeView 自动隐藏的面板时句柄被释放,因此类被销毁。

这是一个问题,因为班级所知道的一切都会被遗忘。

有没有办法解决这个问题(除了再次从数据库重新加载每个 TInfoTreeNode 之外)?

谢谢你!


IIRC,Tag罢工>Data每个 TTreeNode 实例上的属性通过句柄重建得以保留。

您可以将其用作包含带有附加信息的对象的列表的索引,或者使用类型转换来存储对象引用并直接访问对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

delphi 中子类化 TTreeNode 的问题 的相关文章

  • 如何在按键时识别 unicode 键?

    我的应用程序使用 unicode 字符 并且我有几个文本字段 我想限制用户输入特殊字符 例如 begin if not Key in a z A Z 0 9 13 8 then Key 0 if Key 13 then bOk Click
  • Delphi:现场记录应用程序错误

    使用 Delphi 7 我想知道是否有一个免费组件可以在我的应用程序在远程站点运行时收集诊断信息并帮助我调试错误报告 也许它会记录每个选择的菜单项 单击的控件 文本输入等 也许它只是在崩溃时转储堆栈 也许它还有其他作用 我不介意添加代码 例
  • MainFormOnTaskbar + 工具提示导致焦点窃取

    我使用 Delphi XE2 构建了下面的代码 它创建 Form1 Form1 立即创建 Form2 的实例 当我按下 Form2 上的按钮时 会创建第二个 Form2 现在 如果我将鼠标悬停在第二个 最上面的 Form2 上的按钮上 并等
  • D2010编译行数差异

    构建项目时 有两个地方会报告源代码行数 在编译进度对话框中 项目下 信息 在 Delphi 2007 中 对于我们正在构建的项目 这两个数字是相同的 在 Delphi 2010 中 这两个数字截然不同 1st 计数多出 100 万行或 40
  • 有用的 Delphi 代码模板

    我用 Delphi 编程已经两年多了 我大概只有 5 个自定义模板 我觉得我应该有更多 如果有人有任何特别有用的东西 那么在 stackoverflow 上有一个很好的存储库就太好了 我不在乎您使用的是 Delphi 2009 语法还是 D
  • 如何修复这个 delphi 7 编译错误 - “重复资源”

    我正在尝试编译我继承的 Delphi 7 项目 但收到此错误 错误 警告 重复资源 错误 类型 2 位图 ID 编辑 错误 文件 C 路径缩短 common CRGrid res 资源已保留 文件 c common raptree RES
  • Delphi - 如何使用 iPhone 作为图片源通过 OpenDialog 获取目录

    我有一个 Delphi 应用程序 D2010 它允许用户通过 OpenDialog 选择 JPG 文件 当我从普通 Windows 目录中选择文件时 我的 TOpenDialog Filename 包含该文件的完整路径 并且我的代码可以正常
  • 在网格上拖动时拖动图像更改

    我正在 StartDrag 上创建自定义 DragObject 的实例 procedure TForm1 GridStartDrag Sender TObject var DragObject TDragObject begin DragO
  • 面向 Delphi 开发人员的 Qt

    有人知道为 Delphi C Builder VCL 开发人员解释 Qt 的书籍或教程吗 对于具有该背景的开发人员来说 学习 Qt 的最佳方法是什么 我对如何使用 Qt 完成我知道如何在 Delphi 中完成的事情特别感兴趣 例如 Qt 相
  • 在 Delphi 中获取 TCheckbox 的总大小,包括框和文本

    我想获得 TCheckbox 的总大小 包括 Delphi 中的框和文本 我查看这篇文章Delphi FMX TCheckbox TRadiobutton 自动调整大小 https stackoverflow com questions 4
  • 如何将子属性的触发器设置为父属性?

    我有一个带有 ToggleButton ExpanderButton 的 TreeView 切换按钮有两个图像 一张用于展开 另一张用于未展开 但是 当我选择 TreeViewItem 时 我用不同的颜色突出显示它 并且我也想更改图像的颜色
  • 新编译的应用程序需要 UAC/elevation?

    我有一个系统 我将其设置为普通的 UAC 并在我的 delphi 环境中编译名为 ka exe 的项目 并为其创建一个 installshield 项目 设置完毕 一切顺利 但每当我开始我的程序时 它都需要提升 而我不知道为什么 为了确保
  • 我有进程 ID,需要使用 Delphi 5 以编程方式关闭关联进程

    任何人都可以帮我提供一个编码示例 以便在我拥有进程 ID 时关闭关联的进程 我将使用 Delphi 5 在 Windows 2003 服务器上以编程方式执行此操作 如果您有进程 ID 并希望强制终止该进程 可以使用以下代码 function
  • Firebird 或 NexusDB

    我知道有很多与 Delphi 数据库相关的问题 但我只考虑这两个数据库 我需要查询大约 100 000 条记录 根据您的经验 哪个更快 作为嵌入式 as C S Thanks 我还没用过 Nexus tbh 但我经常使用 Firebird
  • 在 ADO 查询 (mysql/MyConnector) 中使用参数

    今天我下载并安装了 MyConnector 这样我就可以通过 ADO 使用 Mysql 一切都安装好了 我可以与 ODBC 连接并从我的 delphi 环境进行连接 当我在运行时构建查询时 我收到一条错误消息 项目 Project1 exe
  • 如何使用 IdTCPClient 等待来自服务器的字符串?

    我的 IdTelnet indy 10 1 有问题 我无法以 Unicode 模式从服务器读取数据 现在我想用 IdTCPClient 编写 telnet 终端 服务器有时发送一行 有时发送越来越多的行 但发送之间没有固定的时间 现在我的问
  • 是否可以在虚拟树视图中选择多个列?

    我需要添加功能来复制节点和列的矩形选择 但我找不到任何方法来实际选择虚拟树视图中的多个列 除了 toFullRowSelect 之外 我只是错过了什么吗 如果没有 是否有一个后代具有类似网格的多列选择支持 经过一些测试后 我得出了以下结论
  • 在该对象调用的事件期间销毁该对象

    我有一个按钮 它的 OnClick 事件调用一个销毁按钮的过程 但随后 线程 想要返回到 OnClick 事件 并且我遇到了访问冲突 我完全被难住了 您需要在按钮的所有代码执行完毕后销毁该按钮 执行此操作的标准方法是将用户定义的消息发布到表
  • Delphi:如何计算大文件的 SHA 哈希值

    您好 我需要生成 5 Gig 文件的 SHA 您知道有一个非基于字符串的 Delphi 库可以做到这一点吗 你应该使用DCPcrypt v2 http www cityinthesky co uk cryptography html读取缓冲
  • 使用 (Object as TClass) 和 TClass(Object) 进行强制转换有什么区别

    有问题在哪里MyObj classnameis TMyClass classname 是真的并且TMyClass MyObj 有效但是 MyObj as TMyclass doSomething抛出转换错误 我真的不需要任何关于这些垃圾的帮

随机推荐

  • 如何从jsp/servlet发送电子邮件?

    如何从 JSP servlet 发送电子邮件 是否需要下载一些 jar 或者您可以在没有任何 jar 的情况下从 JSP servlet 发送电子邮件吗 我的 Java 代码会是什么样子 我的 HTML 代码会是什么样子 如果有的话 是否需
  • in_array() 性能优化

    我有以下条件 if in array needle haystack in array needle somePostfix haystack in array needle someOtherPostfix haystack and so
  • 使用键:值对填充选择框?

    我正在使用 jQuery 并让服务器代码返回以下值 0 SELECT ONE 1 VALUE1 2 VALUE2 etc 如何将其填充到选择框中 var 0 SELECT ONE 1 VALUE1 2 VALUE2 targetSelect
  • ArrayAdapter:按索引删除

    我有一个 ListView 其中填充了新闻服务器概要 只是故事列表 和一个用于修改该 ListView 的 arrayAdapter 我可以通过 remove Object 函数删除项目 但是如果有多个 Object 实例怎么办 remov
  • VssUnauthorizedException VS30063 您无权访问突然抛出错误

    我有以下使用 VSTS 客户端 API 的代码 该代码可以正常工作 但现在返回错误 Microsoft VisualStudio Services Common VssUnauthorizedException VS30063 您无权访问h
  • 卡夫卡偏移量管理

    我们正在使用 Kafka 0 10 我在网上 和文档中 看到了一些相互矛盾的信息 这些信息涉及当enable auto commit 为 TRUE 时如何在 kafka 中管理偏移量 检索消息的同一个 poll 方法是否也按配置的时间间隔处
  • 在 NumPy 中使用字符串作为数组索引

    我正在通过 GUI 处理 python 中的大型数值数组 我想将切片功能公开给 GUI 中的文本框 这样我就可以轻松选择用于手头计算的数组部分 我想做的简单例子 arr array 0 10 20 30 40 50 60 70 80 90
  • 如何确定 Android 应用程序是否使用可信执行环境 (TEE) 和安全元件 (SE)?

    我已经解决了问题One https stackoverflow com questions 61225795 how to check whether android phone supports tee 64422042 64422042
  • 如何在 Mongoose/Node.js 中同时保存多个文档?

    目前我使用保存来添加单个文档 假设我有一个文档数组 我希望将其存储为单个对象 有没有一种方法可以通过单个函数调用将它们全部添加 然后在完成后获得单个回调 我可以单独添加所有文档 但管理回调以计算一切何时完成将是有问题的 Mongoose 现
  • Laravel VueJs:“router-view”不渲染组件

    我知道这个网站上有这样的问题 但它们并不能解决我的问题 因此这里出现了这个问题 在我的 Laravel 5 3 和 VueJs 应用程序中 Vue 的根实例位于app js文件指向App vue and in App vue我有router
  • 在 Google App Engine 上返回空列表在开发服务器上和部署时的行为有所不同

    我创建了一个返回项目列表的端点 当列表为空时 我希望在 JSON 中看到一个空列表 但列表字段被省略了 这不是开发服务器上发生的情况 Ex ApiMethod name udinic path udinic public List
  • 如何给盒子一个圆形描边?

    这就是我最终给我的jetpack Compose盒子一个圆角形状的方式 Box modifier Modifier size 32 dp clip CircleShape border BorderStroke 2 dp Color Red
  • Child_process 和 Worker Threads 有什么区别?

    我试图理解ThreadingNodeJS 及其工作原理 目前我的理解是 Cluster 构建在 Child process 之上 但 TCP 分布在集群之间 最适合分配 平衡传入的 http 请求 但不适合 CPU 密集型任务 通过利用 c
  • iPhone SDK 3.1.3 升级到 iPhone SDK 4 ApplicationWillTerminate 且未调用 dealloc

    我已将 iPhone SDK 从 3 1 2 升级到 4 我在之前版本中开发的应用程序运行良好 但只有一个问题 当我关闭应用程序时 它不会调用应用程序终止并释放任何内容 当我单击主页按钮时 应用程序退出 但当我再次打开它时 它会在我离开的位
  • 在 ASP.NET MVC 中,当使用正确类型的对象渲染页面时,我遇到了不正确的类型错误

    我正在使用 MVC Preview 5 开发一个应用程序 我使用了类型化视图 设置 debug false 后 我发现收到以下形式的错误 模型项目传递到 字典的类型是 blah Models UserAdmin IndexData 但是 这
  • 如何从C++程序调用Linux命令?

    我编写了以下简单的 C 程序 以便学习如何从 C 程序调用 Linux 命令 通过使用系统命令 请告诉我为什么 C 编译器会出现错误 我的程序出了什么问题 更多 exm2 cc include
  • 当位置不是整数时平滑过渡

    我正在尝试显示某种时间线 我的目标是让它顺利刷新 我设法使用 css 变换属性获得比绝对定位更好的东西 但我不太高兴 因为有一些闪烁 特别是当背景很暗时 var background document querySelector backg
  • 位字段是否比屏蔽位并手动提取数据更有效(在计算上)?

    我有许多小数据 我希望能够将它们放入一种更大的数据类型中 假设这是一个日期和时间 最明显的方法是通过像这样的位字段 struct dt unsigned long minute 6 unsigned long hour 5 unsigned
  • WordPress 添加新的用户挂钩

    我想添加一些自定义字段以在 Wordpress 中添加新用户 我正在使用以下钩子 show user profile edit user profile 这些挂钩在编辑个人资料页面上显示新的自定义字段 但我希望新的自定义字段显示在 添加新用
  • delphi 中子类化 TTreeNode 的问题

    我正在编写一个 delphi 2009 应用程序 它在对接面板上使用 TTreeView 我发现如果我对 TTreeNode 进行子类化 我可以在我的应用程序中进行很大的简化 它所在的树视图放置在对接面板上 TInfoTreeNode cl