使用INTAServices接口在IDE的MainMenu插入新顶级菜单的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 alexou
  • 开始时间 开始时间
A

alexou

Unregistered / Unconfirmed
GUEST, unregistred user!
新建一个设计期package,加入一个单元,在这个单元中使用一段代码向Delphi IDE的主菜单插入一个顶级菜单项:
procedure AddNewMenu;
var
service : INTAServices;
MainMenu : TMainMenu;
NewMenuItem, SubMenuItem : TMenuITem;
I : integer;
begin
service := BorladnIDEServices as INTAServices;
MainMenu := service.MainMenu;
NewMenuItem := TMenuItem.Create(MainMenu);
NewMenuItem.Caption := 'test';
MainMenu.Items.Insert(MainMenu.Items.Count -2, NewMenuItem);
for i := 0 to 9 do //插入10个子菜单
begin
SubMenuItem := TMenuItem.Create(NewMenuItem);
SubMenuItem.Caption := IntToStr(random(100));
NewMenuItem.Add(SubMenuItem);
end;
end;
运行这段代码后,可以正常创建出顶级菜单项,位于window菜单的左方,子菜单也很正常,唯一的问题在于:用鼠标激活其他菜单,弹出子菜单后,移动鼠标到新加入的菜单处,本来应该弹出新菜单的子菜单,但却没有任何响应。如果之间点击新菜单则可以正常弹出子菜单。
感觉上是个很奇怪的问题,不太明白这种不正常的情况是因为什么产生的,请有过类似经验的朋友不吝赐教,谢谢。
 
新建一个设计期package,加入一个单元,在这个单元中使用一段代码向Delphi IDE的主菜单插入一个顶级菜单项:
procedure AddNewMenu;
var
service : INTAServices;
MainMenu : TMainMenu;
NewMenuItem, SubMenuItem : TMenuITem;
I : integer;
begin
service := BorladnIDEServices as INTAServices;
MainMenu := service.MainMenu;
NewMenuItem := TMenuItem.Create(MainMenu);
NewMenuItem.Caption := 'test';
MainMenu.Items.Insert(MainMenu.Items.Count -2, NewMenuItem);
for i := 0 to 9 do //插入10个子菜单
begin
SubMenuItem := TMenuItem.Create(NewMenuItem);
SubMenuItem.Caption := IntToStr(random(100));
NewMenuItem.Add(SubMenuItem);
end;
end;
运行这段代码后,可以正常创建出顶级菜单项,位于window菜单的左方,子菜单也很正常,唯一的问题在于:用鼠标激活其他菜单,弹出子菜单后,移动鼠标到新加入的菜单处,本来应该弹出新菜单的子菜单,但却没有任何响应。如果之间点击新菜单则可以正常弹出子菜单。
感觉上是个很奇怪的问题,不太明白这种不正常的情况是因为什么产生的,请有过类似经验的朋友不吝赐教,谢谢。
 
没人理,甚至没人看……
算了,结贴。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
692
import
I
I
回复
0
查看
629
import
I
后退
顶部