我创建了一个由 MainForm 和几个 MDIChild Forms 组成的应用程序。我正在使用 TMS 组件中的 AdvDockPanel 和 AdvToolbar。我的主窗体在窗体的顶部、底部、左侧和右侧都有 AdvDockPanel 以显示 AdvToolbars。
每个 MDIChild 表单都包含一个 AdvToolbar,在创建这些表单时,AdvToolbar.Parent 设置为 MainForm 上的 AdvDockPanel。起初,AdvToolbar.Visible 为 False,在激活每个 MDIChild 表单时,我将其可见性设置为 True。
总而言之,在激活 MDIChild 表单时,我希望它的 AdvToolbar 显示在 MainForm.AdvDockPanel 上,而在停用它时,我希望它隐藏。
这一切都很好,除非我尝试将 AdvToolbar 从一个 AdvDockPanel 拖动到另一个将穿过我的 MainForm 的中间,这使我的活动 MDIChild 表单隐藏并导致此错误:“无法在 OnShow 或 OnHide 中更改可见”。
我已经对其进行了调试,并找到了引发此异常的位置。它在 Vcl.Forms 中。过程 TCustomForm.CMShowingChanged(var Message: TMessage);
所以,我想知道是否有一种方法可以在 MainForm 上从我的活动 MDIChild 表单中显示 AdvToolbar,同时能够在我的 MainForm 中拖动我的工具栏。
谢谢,
- 查尔斯