在 Delphi 2006(我认为)引入 TFlowPanel 和 TGridPanel 之前,我做了一个概念上相似的控件。它仍然做了一些那些控件不做的事情,当我将代码升级到 Delphi 2009 时,我决定也添加一些增强功能。
现在,子控件的顺序由它们的创建顺序决定。FlowPanel 和 GridPanel 显示了使用 ControlIndex 和其他过滤属性的更好方法,但我想知道是否有办法在设计时处理拖放重新排序?据我所知,将编辑控件拖放到我的面板上不会调用我在设计时可以访问的任何内容。
我半幻想着有一种方法可以直接检测放置操作,或者检测控件何时移动,以便我可以确定它应该去哪里。
有任何想法吗?
更新: 好的,让它工作。容器控件已经覆盖了 AlignControls 来管理控件的放置。当您拖放嵌套控件时,将再次调用 AlignControls。然后,我将控件的新坐标与列表中的其他控件进行比较,并将其移动到适当的位置。
我必须解决几个问题(主要与对 AlignControls 的许多调用有关),但基本概念很简单。感谢所有评论者的帮助。