Delphi 7中的TActionMainMenuBar主菜单项switch stutters

Delphi 7中的TActionMainMenuBar主菜单项switch stutters,delphi,menu,delphi-7,Delphi,Menu,Delphi 7,我在Delphi7项目中使用了带有TActionMainMenuBar的TActionToolBar。当我浏览一个主菜单时,我想切换到另一个主菜单(要编辑的4ex文件),我必须在另一个菜单项上单击两次以进行更改(1,关闭第一个,2,打开新的子菜单)。使用TMainMenu,这是无缝的,只要移动另一个菜单项,子菜单就会自动更改。我应该覆盖哪些消息,或者应该进行哪些api调用来实现类似TMainMenu的行为?必须有一个解决方案,因为Delphi7IDE使用相同的组件,并且其行为是正确的 dclac

我在Delphi7项目中使用了带有TActionMainMenuBar的TActionToolBar。当我浏览一个主菜单时,我想切换到另一个主菜单(要编辑的4ex文件),我必须在另一个菜单项上单击两次以进行更改(1,关闭第一个,2,打开新的子菜单)。使用TMainMenu,这是无缝的,只要移动另一个菜单项,子菜单就会自动更改。我应该覆盖哪些消息,或者应该进行哪些api调用来实现类似TMainMenu的行为?必须有一个解决方案,因为Delphi7IDE使用相同的组件,并且其行为是正确的

dclact70.bpl的日期:2002年8月10日(年月日)

单元1.pas:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, XPStyleActnCtrls, ActnMan, ToolWin, ActnCtrls,
  ActnMenus;

type
  TForm1 = class(TForm)
    ActionMainMenuBar1: TActionMainMenuBar;
    ActionManager1: TActionManager;
    Action1: TAction;
    Action1_1: TAction;
    Action1_2: TAction;
    Action2: TAction;
    Action2_1: TAction;
    Action2_2: TAction;
    procedure emptyActionHandler(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.emptyActionHandler(Sender: TObject);
begin
//
end;

end.
单元1.dfm:

object Form1: TForm1
  Left = 584
  Top = 180
  Width = 870
  Height = 640
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object ActionMainMenuBar1: TActionMainMenuBar
    Left = 0
    Top = 0
    Width = 854
    Height = 29
    ActionManager = ActionManager1
    Caption = 'ActionMainMenuBar1'
    ColorMap.HighlightColor = clWhite
    ColorMap.BtnSelectedColor = clBtnFace
    ColorMap.UnusedColor = clWhite
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clMenuText
    Font.Height = -12
    Font.Name = 'Segoe UI'
    Font.Style = []
    Spacing = 0
  end
  object ActionManager1: TActionManager
    ActionBars = <
      item
        Items = <
          item
            Items = <
              item
                Action = Action1_1
                Caption = '&Action1_1'
              end
              item
                Action = Action1_2
                Caption = 'A&ction1_2'
              end>
            Action = Action1
            Caption = '&Action1'
          end
          item
            Items = <
              item
                Action = Action2_1
              end
              item
                Action = Action2_2
              end>
            Action = Action2
            Caption = 'A&ction2'
          end>
        ActionBar = ActionMainMenuBar1
      end
      item
        Items = <
          item
            Action = Action2_1
          end
          item
            Action = Action2_2
          end>
      end>
    Left = 8
    Top = 40
    StyleName = 'XP Style'
    object Action1: TAction
      Caption = 'Action1'
      OnExecute = emptyActionHandler
    end
    object Action1_1: TAction
      Category = 'ac1'
      Caption = 'Action1_1'
      OnExecute = emptyActionHandler
    end
    object Action1_2: TAction
      Category = 'ac1'
      Caption = 'Action1_2'
      OnExecute = emptyActionHandler
    end
    object Action2: TAction
      Caption = 'Action2'
      OnExecute = emptyActionHandler
    end
    object Action2_1: TAction
      Category = 'ac2'
      Caption = 'Action2_1'
      OnExecute = emptyActionHandler
    end
    object Action2_2: TAction
      Category = 'ac2'
      Caption = 'Action2_2'
      OnExecute = emptyActionHandler
    end
  end
end
对象格式1:t格式1
左=584
顶部=180
宽度=870
高度=640
标题='Form1'
颜色=clBtnFace
Font.Charset=默认字符集
Font.Color=clWindowText
字体高度=-11
Font.Name='MS Sans Serif'
Font.Style=[]
OldCreateOrder=False
PixelsPerInch=96
text高度=13
对象操作MainMenuBar1:TActionMainMenuBar
左=0
Top=0
宽度=854
高度=29
ActionManager=ActionManager 1
标题='ActionMainMenuBar1'
ColorMap.HighlightColor=clWhite
ColorMap.btSelectedColor=clBtnFace
ColorMap.UnusedColor=clWhite
Font.Charset=默认字符集
Font.Color=clMenuText
字体高度=-12
Font.Name='Segoe用户界面'
Font.Style=[]
间距=0
结束
对象ActionManager 1:TActionManager
操作栏=<
项目
项目=<
项目
项目=<
项目
动作=动作1\u 1
标题=“&Action1\u 1”
结束
项目
动作=动作1\u 2
标题='A&ction1_2'
结束>
动作=动作1
标题=“&Action1”
结束
项目
项目=<
项目
动作=动作2\u 1
结束
项目
动作=动作2\u 2
结束>
动作=动作2
标题='A&C'2'
结束>
ActionBar=ActionMainMenuBar1
结束
项目
项目=<
项目
动作=动作2\u 1
结束
项目
动作=动作2\u 2
结束>
结束>
左=8
Top=40
StyleName='XP样式'
目标行动1:战术
标题='Action1'
OnExecute=emptyActionHandler
结束
对象操作1_1:战术
类别='ac1'
标题='Action1_1'
OnExecute=emptyActionHandler
结束
对象操作1_2:战术
类别='ac1'
标题='Action1_2'
OnExecute=emptyActionHandler
结束
目标行动2:战术
标题='Action2'
OnExecute=emptyActionHandler
结束
目标行动2_1:战术
类别='ac2'
标题='Action2_1'
OnExecute=emptyActionHandler
结束
对象操作2_2:战术
类别='ac2'
标题='Action2_2'
OnExecute=emptyActionHandler
结束
结束
结束

您需要包括一份报告,以便我们可以重现该问题。我可以在很多应用程序中使用它。这里有没有附加rar/zip的方法?我只是在一个空项目的表单中插入一个TActionMainMenuBar和一个TActionManager。创建一些操作并将它们链接到没有内容的ActionMenu项OneExecute事件处理程序。当它运行时,行为就是上面描述的。您是否使用Delphi 7?否。所有相关信息都需要在您的问题中。创建一个新的应用程序并不难。启动一个新的Delphi项目,添加相关组件,并生成OnExecute处理程序。右键单击表单并选择“查看为文本”,然后复制文本。再次右键单击并以表单形式查看,您就回来了。现在将剪贴板内容粘贴到此处。这是表格部分。现在复制并粘贴代码,就可以设置了。我们这里有些东西可以参考。谢谢你的详细描述。我没有想到它(以文本形式查看)。我很快就会这么做。我可以向Delphi 7确认您的问题。它不会出现在Delphi2007中,以防您可以切换到该版本。