我想作MDI显示过的窗体显示在主菜单上,这样就可以通过主菜单来调出已经显示过的MDI窗体,下面这段代码是把显示过的MDI子窗体添加到主菜单中,MenuExec函数用来执行菜单项对应的动作。我想问一下"把MDI窗体添加进去"的代码应该放在哪边最合适? // 把MDI窗体添加进去。
MNadd.Clear;
for i := 0 to Self.MDIChildCount -1 do
begin
P := TMenuItem.Create(Self);
P.Caption := Self.MDIChildren[i].Caption;
P.GroupIndex := 1;
P.RadioItem := true;
P.OnClick := MenuExec;
if Self.MDIChildren[i].Caption = Self.ActiveMDIChild.Caption then
P.Checked := true;
MNadd.Insert(0, P);
end;
procedure TForm1.MenuExec(Sender: TObject);
var i: Integer;
begin
for i := 0 to Self.MDIChildCount - 1 do
begin
TMenuItem(Sender).Checked := false;
if TMenuItem(Sender).Caption = Self.MDIChildren[i].Caption then
begin
TMenuItem(Sender).Checked := true;
Self.MDIChildren[i].Show;
Exit;
end;
end;
//ShowMessage(TMenuItem(Sender).Caption);
end;
MNadd.Clear;
for i := 0 to Self.MDIChildCount -1 do
begin
P := TMenuItem.Create(Self);
P.Caption := Self.MDIChildren[i].Caption;
P.GroupIndex := 1;
P.RadioItem := true;
P.OnClick := MenuExec;
if Self.MDIChildren[i].Caption = Self.ActiveMDIChild.Caption then
P.Checked := true;
MNadd.Insert(0, P);
end;
procedure TForm1.MenuExec(Sender: TObject);
var i: Integer;
begin
for i := 0 to Self.MDIChildCount - 1 do
begin
TMenuItem(Sender).Checked := false;
if TMenuItem(Sender).Caption = Self.MDIChildren[i].Caption then
begin
TMenuItem(Sender).Checked := true;
Self.MDIChildren[i].Show;
Exit;
end;
end;
//ShowMessage(TMenuItem(Sender).Caption);
end;
解决方案 »
- 用delphi打开程序弹出内存不能read,在线求解
- 如何删除动态数组控件?
- 弱弱的问一下,关于Indy的超简单问题
- 问题1:如何压缩与修复数据库(数据库为access)? 第二个问题是现在都用什么工具做打包文件?
- DELPHI+SYBASE开发时碰道的问题
- 请问,怎么创建象DELPHI环境那样的浮动工具栏??
- 为什么??100分求教
- 在Delphi中操作Microsoft office是的问题?UP有分!
- 如和用Delphi注册系统热键?
- 如果在年代增加的同时动态自动增加记录中的数字(如年龄)、年代每加一年年龄也自动加1?
- 新年好,请教VBA代码转化为 Delphi代码
- 求一段向桌面屏幕上打印一段文字的Delphi例码
在Action的OnUpdate里作了子菜单更新。
不能作删除但可以作插入子菜单的操作。
如果是删除子菜单,菜单上会一直闪。