2

我正在使用 Delphi 的“常规”对接(DockSite = True 和 UseDockManager = True)。现在有几个 DockSite 控件和几个可停靠表单。但是,并非每个可停靠表单都应该进入每个停靠站点。

表单知道它们应该停靠什么样的控件;控制,OTOH,不知道接受或不接受什么形式。

现在,我的问题是有几个事件发生了,您可以在其中取消拖放(或拖放)操作:DragOver、StartDock 等。但这些都发生在“接收”端,而不是在被丢弃的控制;这就是我想要它的地方——以便停靠的表单可以拒绝停靠到某个控件。

是否有这样的事件,我是否忽略了某些事情,或者我必须以不同的方式解决这个问题?

4

2 回答 2

1

我想我应该将其添加为答案,而不仅仅是评论。为您的自定义表单创建一个基本表单并将您的逻辑放入其中。然后每个控件只需要知道如何与一个表单类进行交互。您制作的每个新对接形式都必须从这个基本形式下降。这样做的好处是您不需要制作自定义版本的控件,因为一切都可以通过标准事件处理程序处理。

于 2011-09-07T15:53:09.917 回答
0

OnStartDock事件是为正在停靠的控件/表单触发的,而不是为正在停靠的 DockSite 控件触发的。因此,您可以为可停靠表单分配一个OnStartDock事件处理程序,或者更好地覆盖虚拟DoStartDock()方法。

于 2011-09-18T00:54:54.693 回答