目前项目用delphi,我在数据库版赚的分都花费在delphi,分少了点,别在意哦主菜单“窗口”项,click时动态生成当前已打开的窗体的caption
procedure TFrmStart.N4Click(Sender: TObject);
var
popItem:TMenuItem;
i:integer;
frmCap:string;
begin
n4.Clear;// n4.Items.Clear 会报错,用n4.Clear;没任何效果
for i:=0 to screen.FormCount-1 do
begin
frmCap:=screen.Forms[i].Caption;
popItem:=TMenuItem.Create(self);
popItem.Tag:=i;
popItem.Caption:=frmCap;
n4.Add(popItem);
end;end;
procedure TFrmStart.N4Click(Sender: TObject);
var
popItem:TMenuItem;
i:integer;
frmCap:string;
begin
n4.Clear;// n4.Items.Clear 会报错,用n4.Clear;没任何效果
for i:=0 to screen.FormCount-1 do
begin
frmCap:=screen.Forms[i].Caption;
popItem:=TMenuItem.Create(self);
popItem.Tag:=i;
popItem.Caption:=frmCap;
n4.Add(popItem);
end;end;
property Items[Index: Integer]: TMenuItem read GetItem; default;
我都这样说了
1 首先你应当在N4下边放一个子菜单,作为一个占位,比如增加一个
"全部关闭"或者"下一个窗口"
这里我假设增加了一个"全部关闭"子菜单
2 在N4Click不要用clear,否则会弹不出东西来的
var
popItem: TMenuItem;
i: integer;
frmCap: string;
begin
while N4.Count>1 do
N4.Remove(N4.Items[1]);
//如果你使用了两个占位菜单,比如一个"全部关闭"一个分割线,这里就用2替换上边代码中的1
for i := 0 to screen.FormCount - 1 do
begin
frmCap := screen.Forms[i].Caption;
popItem := TMenuItem.Create(self);
popItem.Tag := i;
popItem.Caption := frmCap;
n4.Add(popItem);
end;
end;或许有其它办法,我不太清楚
// n4.Items.Clear 会报错,用n4.Clear;没任何效果
实验:
for I := n4.Count - 1 downto 0 do
begin
n4.Delete(I);
end;
这样和clear效果一样
这次没有全部清空,留下一个菜单:
for I := n4.Count - 1 downto 1 do
begin
n4.Delete(I);
end;
再添加菜单后,可以正长显示,楼主可以自己试下