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