Delphi 启用VCL样式时的TActionMainMenuBar绘制错误

Delphi 启用VCL样式时的TActionMainMenuBar绘制错误,delphi,vcl,delphi-10.3-rio,vcl-styles,tactionmanager,Delphi,Vcl,Delphi 10.3 Rio,Vcl Styles,Tactionmanager,TActionMainMenuBar中存在一个关键且易于复制的错误,只有在启用VCL样式时才会发生,我想知道是否有人已经看到了它并找到了解决方法。我使用的是最新的Delphi 10.3.3 Rio(同样发生在悉尼10.4.1),而不是高DPI监视器 重新创建的步骤: 创建一个新的Delphi VCL应用程序。通过项目选项启用VCL样式。为其指定任何内置样式 添加3个组件:TActionManager、TActionMainMenuBar和一个TCustomizeDlg。通过ActionMana

TActionMainMenuBar中存在一个关键且易于复制的错误,只有在启用VCL样式时才会发生,我想知道是否有人已经看到了它并找到了解决方法。我使用的是最新的Delphi 10.3.3 Rio(同样发生在悉尼10.4.1),而不是高DPI监视器

重新创建的步骤:

  • 创建一个新的Delphi VCL应用程序。通过项目选项启用VCL样式。为其指定任何内置样式
  • 添加3个组件:TActionManager、TActionMainMenuBar和一个TCustomizeDlg。通过ActionManager属性链接TActionMainMenuBar和TActionManager。还要将TCustomizeDlg链接到ActionManager
  • 现在,向ActionManager组件添加一些操作。在我的示例中,我添加了4个数据集标准操作+3个对话框标准操作
  • 将新创建的操作拖放到ActionMain菜单栏,这样现在有两个顶部菜单项,第一个有4个操作,第二个有3个操作。见图片

  • 现在将此代码添加到某个用户触发的事件(我使用了ActionMainMenuBar DblClick事件):
  • 运行应用程序并双击ActionMain菜单栏。此时将显示CustomizeDlg,操作主菜单栏进入设计模式,允许您对其进行自定义
  • 从对话框中拖动一个操作,并将鼠标移动到第二个顶部菜单项上(它将下拉,并且所有3项都将可见)。见下图:

  • 现在将鼠标移到另一个顶部菜单操作(该示例中为DataSet),并将其移回对话框菜单项。现在,菜单的绘制已完全中断:

从现在起,菜单的绘制将中断,直到您关闭CustomizeDlg

到目前为止我所知道的:

  • 如果未启用VCL样式,则不会发生此问题
  • 该错误与CustomizeDlg无关,但与进入设计模式时的ActionMainMenuBar有关(祖先TCustomActionBar有一个名为DesignMode的属性)
  • 至少在Delphi10.3.3里约和10.4.1悉尼会发生这种情况。可能是其他人
不幸的是,调试此类场景非常耗时,有时无法直接调试(在处理鼠标消息等时,调试本身会改变场景)


是否有任何已知的修复、补丁或解决方法(除了禁用VCL样式之外,这不是一个选项)?

应将此错误报告给此消息。此消息看起来是一个完美的描述,带有复制步骤。已报告,包括一个测试项目。真不敢相信,像这样一个显而易见的问题以前从未遇到过。。。
   procedure TForm9.ActionMainMenuBar1DblClick(Sender: TObject);
   begin
     CustomizeDlg1.Show;
   end;