delphi - 我如何知道控件将停靠在哪里,以及如何防止停靠?

标签 delphi vcl docking

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

表单知道应该对接哪种控件;控件OTOH不知道接受或不接受哪种形式。

现在,我的问题是,发生了一些事件,您可以在其中取消拖放(或拖动/停靠)操作:DragOver,StartDock等。但是,所有这些都发生在“接收”侧,而不是在被删除的控件;那就是我想要的地方-这样停靠的表单可以拒绝停靠到某个控件。

是否有这样的事件,我是否忽略了某些事情,还是我不得不以其他方式来解决?

最佳答案

我认为我应该将此添加为答案,而不仅仅是评论。为自定义表单创建一个基本表单,并在其中添加逻辑。然后,每个控件将只需要知道如何与一个表单类进行交互。您制作的每个新停靠表单都必须从该基本表单继承。这样做的好处是您不需要制作控件的自定义版本,因为可以通过标准事件处理程序来处理所有内容。

关于delphi - 我如何知道控件将停靠在哪里,以及如何防止停靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7321597/

相关文章:

xml - Delphi,IXMLDOMDocument2,加载因无效字符而失败

c++ - C++ 中的类助手

delphi - 在 Delphi 7 中从文本文件加载信息

delphi - 在自定义组件中重写 TScrollBox OnResize 事件

c++ - 启用视觉样式后我可以覆盖控件的颜色吗?

c++ - 透明的频谱图选择叠加

.net - 如何将应用程序停靠在 Windows 桌面上?

delphi - 以一定角度绘制文本

c# - 如何使停靠面板越过另一个停靠面板