gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:26:07 55 4
gpt4 key购买 nike

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

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

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

我实际上知道几个选项:

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

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

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

最佳答案

通常的方法是向要释放的控件发送消息。例如,了解如何实现TForm.Release。事实上,我认为您没有理由不能重新使用 CM_RELEASE 消息。

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

关于delphi - 项目控件将其自身从容器控件中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472742/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com