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