项目控件将其自身从容器控件中删除

2023-12-06

有一个容器控件(TScrollBox),它是多个项目控件的父控件。

每个项目控件本身都是复合的,包含(父级和拥有)一个删除按钮。按下该按钮将启动项目控件的删除。

删除涉及释放组件,因此实际操作应该与该项目无关。问题是,最好的方法是什么?

我实际上知道有几个选择:

  • 一个小间隔定时器(通过单击按钮启动);
  • 隐藏的外部按钮(向其发布鼠标向下和向上消息);
  • 表单的自定义消息处理程序。

虽然我可以自信地实施这些方法中的任何一种,但正如我自夸的那样,我不确定哪种方法最好。此外,计时器选项看起来很幼稚,隐藏按钮有点黑客,而自定义消息则有点矫枉过正。简而言之,这三者似乎或多或少都是半可接受的。

我可能只是存有偏见,并且不介意被说服相反的观点。最重要的是,我想知道在这种情况下使用的常用方法是什么(也许我一直缺少的东西)。


正常的方法是向要释放的控件发送消息。怎么看TForm.Release例如实施。事实上,我看不出为什么你不能重新使用CM_RELEASE信息。

发布消息的要点是,它会被放到队列的后面,并且只有在任何同步消息(即由SendMessage)已完成处理。这可以避免在释放对象后调用该对象的方法,这显然是一个您很清楚的错误。

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

项目控件将其自身从容器控件中删除 的相关文章

  • Postmessage 和 sendmessage 的替代方案

    我有一个程序 它使用多个线程来执行某些任务 每个线程都有一堆任务要执行 执行其中之一后 每个线程都会向主屏幕调用一条发布消息来更新日志 现在我有六万个任务 每个线程一万个 六个线程 执行每个任务线程后调用发布消息 但由于这些帖子消息 我的应
  • 创建 Tform2 时显示消息?

    我想在创建 Tform2 时向用户显示一条消息 我使用这段代码 但效果不好 procedure TForm1 Button1Click Sender TObject var a TForm2 begin if a nil then begi
  • QList、QVector 或 std::vector 多线程使用

    我希望两个线程像这样工作 第一个线程会将值附加到向量 第二个线程将通过索引对元素进行只读访问 我可以在第二个线程开始读取之前创建互斥体并进行深度复制 但是这种方式真的很慢 如何在没有互斥体的情况下进行此操作 这里 STL向量和线程安全 ht
  • 在哪里可以找到列出控件中所有状态的属性?

    我正在查看 winrt 项目的模板 它的后退按钮具有以下样式
  • 在 Delphi 中实现 MVVM 绑定(View <-> ViewModel)的最佳方法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于使用本机组件的多平台应用程序 标准的 Delphi 方法已不再足够 到目前为止 我们的结构只有几个部分 GUI 表单 和业务逻辑 现在我们需
  • 更改控制台大小

    Delphi中的简单问题 我创建了一个控制台应用程序 如果控制台窗口的高度少于 80 行 我需要将其高度更改为 80 行 这需要从代码中完成 并且实际上是在代码内有条件的 即 当发生错误时 它会增加控制台的大小 以便整个 巨大的 错误报告可
  • 从注册表中读取已知的文件扩展名/类型

    我想向用户提供已知文件扩展名的列表供他选择 我知道它们通常存储在注册表中的 HKEY CLASSES ROOT 下 如下所示 txt gt 默认 txtfile 其中 txtfile 包含有关关联程序等的信息 不幸的是 注册表中的该位置还存
  • 使用Delphi Dll和一些问题

    我想使用Delphi制作的dll 它有这个功能 函数 CryptStr str Key AnsiString DecryptStr boolean AnsiString 标准调用 我将 Dll 复制到 bin debug 和应用程序根目录中
  • Delphi 的免费软件数据透视表组件?

    Delphi 是否有开源或免费软件的数据透视表组件 据我所知 Delphi 没有免费的枢轴组件 在 Torry net 上查找 delphi 中最著名的枢轴组件是 Develop Express 的 ExpressPivotGrid Sui
  • 德尔福XE5安卓。硬件后退按钮按下

    如何模拟硬件后退按钮按下来关闭应用程序 我需要通过代码关闭应用程序 但 Application Terminate Close Hide 和 DisposeOf 不起作用 所以我想到模拟硬件后退按钮按下来实现我的目标 IFDEF ANDRO
  • 使用局部函数和全局函数哪个更优化?

    我想知道使用 a 是否更优化局部功能 在下面的例子中 drawBitmap 只需要3个参数 and 无法内联因为该函数访问一些所有者过程变量 或者使用可以内联的全局函数 但它真的会内联吗 这需要5个参数 也不知道这是否重要 但是这段代码主要
  • Delphi 远程调试器冻结

    我有运行 Delphi 2007 应用程序的 Windows Server 2008 R2 计算机 Update 当前无法切换 Delphi 版本 我有 Delphi XE 但在进行任何切换之前需要检查超过 300 000 行代码 我遇到了
  • Windows EventLog:它的操作速度有多快?

    我有一个服务应用程序 它通过 TCP 处理客户端请求并将任何事件写入 Windows EventLog 由于该应用程序预计会在短时间内为许多客户端和每个客户端的大量请求提供服务 假设每秒 1 到 50 个请求 因此我很想知道密集程度 CPU
  • NvCplGetThermalSettings 返回 false

    问题 您好 我正在尝试使用 Delphi 获取 nividia gtx 980 的 GPU 温度 我看过C 问题 他的解决方案是不使用nvcpl dll 我认为这不是正确的解决方案 因为 nivida 有完整的文档说明如何处理 API 见下
  • Delphi 2009之前如何处理UTF-8和ANSI转换?

    在 Delphi 2009 中 我们有 RichEdit1 Lines LoadFromFile OpenDialog1 FileName TEncoding UTF8 RichEdit1 Lines SaveToFile OpenDial
  • 将 TPopupMenu 与窗体的右侧对齐?

    TPopupMenu 如何与窗体的右侧对齐 问题是 在调用之前似乎没有办法获取弹出菜单的宽度Popup X Y Integer 我正在尝试获得与 Chrome 中的系统菜单类似的行为 你也可以只设置Alignment http docwik
  • 如何隐藏 WebBrowser 直到网站完成加载/下载过程?

    我想知道我该如何隐藏WebBrowser直到网站加载过程完成 另外 我使用 Panel1 和WebBrowser在它的上面 为什么 好吧 这样 我可以完全像我想要的 WebBrowser 一样设置 Panel1 的大小和位置 然后将 Web
  • 如何在不实际调整大小的情况下触发 Control.Resize 事件?

    我不会对控件进行子类化 尝试通过触发事件Control Size Control Size失败 因为即使新大小实际上不同 它也不会触发 如果您要子类化Control 你可以打电话OnResize直接 或者将其暴露在 API 上 public
  • 开发 Delphi Windows 7 应用程序的规则 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到开发适用于 Windows 7 的 Delphi 应用程序时应遵循的最佳规则集 Marco 最近发表了 2 篇关于此主题的帖
  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人

随机推荐

  • 填补 OpenCV 中的漏洞[重复]

    这个问题在这里已经有答案了 我有一个从边缘检测模块中提取的边缘图OpenCV 精明的边缘检测 我想做的是填补边缘图中的漏洞 我在用C and OpenCV图书馆 在OpenCV中有一个cvFloodFill 函数 它将用种子填充孔 以及开始
  • 带有 ASP.Net 的新 Google Recaptcha

    我正在尝试获取新的谷歌验证码在我的 ASP NET 项目中工作 我在使其成为新项目 我不是机器人 时遇到问题 我在那里有旧的 在对developers google com网站进行了大量研究之后 一切看起来都一样 他们甚至向我指出了相同的d
  • Binding 与 x:Bind、使用 StaticResource 作为默认值以及它们在 DataContext 中的差异

    我花了大半天的时间试图制作ItemTemplate of a ListView with a UserControl可通过以下方式配置DependencyProperty上说UserControl 我遇到了关于这两种不同的一些奇怪的不一致之
  • Google+ android API PlusClient writeMoment 不执行任何操作

    为了在 Android 应用程序中实现社交功能 我尝试使用 PlusClient 类的 writeMoment 方法 但没有任何反应 我能够与 PlusClient 成功连接 并使用我的应用程序编写深层链接帖子 这是我打开 Google 连
  • 查找内存最后被释放的位置?

    非常一般 当发生访问冲突时 是否有一种简单的方法可以判断哪一行代码最后释放了内存块 不太一般 我对探查器的理解是它们会覆盖分配和释放过程 如果这是真的 他们是否会碰巧存储最后释放一段内存的代码行 以便当它稍后因访问冲突而崩溃时 您知道最后释
  • 无法加载默认凭据? (Node.js Google 计算引擎教程)

    情况 我按照这个教程 https cloud google com nodejs tutorials bookshelf on compute engine 一切正常 直到我这样做npm start并转到 http 本地主机 8080 我在
  • UITextField 的初始 iPhone 虚拟键盘显示速度很慢。是否需要这种破解?

    我有一个带有 UITextField 的应用程序 等等 当用户第一次点击文本字段时 在虚拟键盘出现之前有明显的延迟 在 3GS 上 延迟不太明显 但在较旧的 iPhone 上 延迟可能约为 1 秒 之后键盘总是立即弹出 延迟只是应用程序启动
  • 当图像接近边缘时,9 块阴影消失

    我正在使用 9 patch 为盒子生成阴影 如果图像宽度为 280dp 距框边缘 20dp 我会得到很好的阴影 315 度 但是 如果我让图像接触框边缘 右边缘的阴影几乎消失 这是我的布局
  • 需要根据 T-SQL 中准入日期列计算出的第一个“3 个月”,为列中的每个值添加 3 个月

    我有 14K 记录表 如下所示 与一个特定 client id 1002 相关的数据示例 我的日期格式是 mm dd yyyy 月份在前 ClientsEpisodes client id adm date disch date 1002
  • Android Fragment 生命周期问题(onActivityResult 上的 NullPointerException)

    我遇到一个问题 我找不到任何解释 我有一个使用 TabManager 显示片段的 FragmentActivity 如下所示 public class WorkOrderFormTabFragmentActivity extends Fra
  • django 更改默认运行服务器端口

    我想设置默认端口manage py runserver侦听无关的指定内容config ini 有没有比解析更简单的修复方法sys argv inside manage py并插入配置的端口 目标是跑 manage py runserver不
  • Wamp 服务器:更改 apache 的 httpd.conf?

    我正在尝试解决我的错误 我无法从服务器连接到我的 Android 应用程序 所有来源都将我引向以下教程作为解决方案 我已成功完成本教程中的所有步骤 除了 编辑Wamp服务器的httpd conf文件 IE 该教程说明了以下内容 4 在htt
  • 如何杀死 goroutine? [复制]

    这个问题在这里已经有答案了 我想知道如何杀死 停止 goroutine 所有示例都基于通道和选择 这似乎只有在 goroutine 包含一些可以在通道上监听的重复任务时才有效 有没有办法在下面的 goroutine 返回之前停止它 pack
  • 使用认知登录而不是证书来验证和订阅 aws IoT MQTT 主题?

    我是 AWS 的新手 我正在尝试弄清楚我的用例是否可行 我想创建一个移动应用程序 用户可以登录 电子邮件 facebook google 等 然后订阅 aws IoT 上的一些 MQTT 主题 以接收园艺系统的实时传感器数据 AWS 上有很
  • 使用循环提取一系列整数

    我有一些数据想要提取整数出现的频率 这是一些示例数据 df lt read table header T text A B C D 1 1 5 3 1 2 1 2 3 2 3 2 3 5 3 4 1 4 5 3 5 3 1 4 2 6 5
  • PostgreSQL 逻辑复制在 CREATE SUBSCRIPTION 上挂起

    我在 PostgreSQL 逻辑复制版本 15 上遇到问题 我也在 v10 和 v12 上进行了测试 但遇到了同样的问题 它需要复制来进行测试 因此源数据库和目标数据库位于同一服务器上 在我设置的配置文件中 postgresql conf
  • 在两个用户控件和主窗体之间传递对象

    因此 我有一个用作导航栏的主窗体和两个显示一些控件的用户控件 In UserControlsA我有一些字段需要填写 使用这些数据 我创建了一个包含一些信息的对象 我需要将该对象传递给UserControlsB所以我可以在那里显示一些数据 我
  • 正则表达式是测试 url 的好方法吗

    我正在尝试测试使用 php5 输入的 url 的有效性 我想过使用正则表达式 但假设它始终正常工作 它只能解决 url 在语法上有效的问题 它没有告诉我有关网址正确或有效的任何信息 如果可能的话 我正在尝试寻找另一种解决方案来同时完成这两件
  • 带参数改造post请求

    我正在使用邮递员扩展来发送请求 我想对 android 提出同样的请求 我使用改造库来实现我的目标 但我无法获得成功的结果 我的代码错误在哪里 Postman 我的界面 public interface Interfacem FormUrl
  • 项目控件将其自身从容器控件中删除

    有一个容器控件 TScrollBox 它是多个项目控件的父控件 每个项目控件本身都是复合的 包含 父级和拥有 一个删除按钮 按下该按钮将启动项目控件的删除 删除涉及释放组件 因此实际操作应该与该项目无关 问题是 最好的方法是什么 我实际上知