有一个容器控件(TScrollBox),它是多个项目控件的父控件。
每个项目控件本身都是复合的,包含(父级和拥有)一个删除按钮。按下该按钮将启动项目控件的删除。
删除涉及释放组件,因此实际操作应该与该项目无关。问题是,最好的方法是什么?
我实际上知道有几个选择:
- 一个小间隔定时器(通过单击按钮启动);
- 隐藏的外部按钮(向其发布鼠标向下和向上消息);
- 表单的自定义消息处理程序。
虽然我可以自信地实施这些方法中的任何一种,但正如我自夸的那样,我不确定哪种方法最好。此外,计时器选项看起来很幼稚,隐藏按钮有点黑客,而自定义消息则有点矫枉过正。简而言之,这三者似乎或多或少都是半可接受的。
我可能只是存有偏见,并且不介意被说服相反的观点。最重要的是,我想知道在这种情况下使用的常用方法是什么(也许我一直缺少的东西)。
正常的方法是向要释放的控件发送消息。怎么看TForm.Release
例如实施。事实上,我看不出为什么你不能重新使用CM_RELEASE
信息。
发布消息的要点是,它会被放到队列的后面,并且只有在任何同步消息(即由SendMessage
)已完成处理。这可以避免在释放对象后调用该对象的方法,这显然是一个您很清楚的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)