读书人

请教这个效果(动态菜单)该如何做啊

发布时间: 2012-02-22 19:36:56 作者: rapoo

请问这个效果(动态菜单)该怎么做啊??
我想做一个效果就是在程序的右上角有一个按钮,点击按钮可以显示程序打开的窗体名称...注意,是打开的,然后窗体关闭的时候,这里也就不显示了.

比如程序有10个窗体(我没用mdi子窗体,就是普通的窗体),如果用户在使用打开了其中任意几个,那这个按钮就动态的显示打开的菜单名称..比如,打开基本信息单录入后. 按钮点击可显示这个'基本信息单录入', 打开多个,可以通过这个按钮快速切换不同的菜单操作....



求方法......求实例....... 谢谢!


[解决办法]

Delphi(Pascal) code
或者根据窗口名列表来显示procedure TForm1.ComboBox1Change(Sender: TObject);begin  if Assigned(Application.FindComponent(Trim(ComboBox1.Text))) then TForm(Application.FindComponent(Trim(ComboBox1.Text))).Show;end;其它子form中维护这个窗口名列表就行了,比如procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);begin  Form1.ComboBox1.Items.Delete(form1.ComboBox1.Items.IndexOf(Self.Caption));end;procedure TForm2.FormShow(Sender: TObject);begin  if Form1.ComboBox1.Items.IndexOf(Self.Caption)<0 then form1.ComboBox1.Items.Add(Self.Caption);  form1.ComboBox1.ItemIndex:=Form1.ComboBox1.Items.IndexOf(Self.Caption);end;
[解决办法]
用一个 Combobox。记录每打开一个Form记录下Form对象。
窗口关闭时,再删除。
这样,你即可以知道有几个FOrm打开,具体哪几个,显示出它的标题,Form的所有信息都可以

[解决办法]
用TPopupMenu菜单也可以.
每打开一个窗口,就添加到TPopupMenu菜单里.
每关闭一个窗口则减少相应的项.关闭最后一个的时候将此按钮也隐藏或释放掉
[解决办法]
太不厚道了,会的人都从来不授业解惑的,还说什么20分太少,这类人真是蹦着分去的,楼主,百度下你就知道:

1.动态生成菜单项

var
FirstItem: TMenuItem;
SecondItem: TMenuItem;

begin
FirstItem := TMenuItem.Create(Self);
FirstItem.Caption := ‘FirstName’;
PopupMenu1.Items.Add(FirstItem); //添加一级分类

SecondItem := TMenuItem.Create(Self);
SecondItem.Caption := ‘SecondName’;
FirstItem.Add(SecondItem);//添加二级分类

ThirdItem := TMenuItem.Create(Self);
ThirdItem.Caption := ‘ThirdName’;
ThirdItem.OnClick := MenuClick;
SecondItem.Add(ThirdItem);//添加三级节点

end;

2.自定义动态菜单的事件

//先自定义一个函数

procedure TForm1.MenuClick(Sender: TObject);
var
i: Integer;
begin
ShowMessage(TMenuItem(Sender).Caption);//显示当前点击的菜单项的Caption
end;

//将自定义函数赋给菜单项

FirstItem := TMenuItem.Create(Self);
FirstItem.Caption := FirstName;
FirstItem.OnClick := MenuClick; //增加这句
PopupMenu1.Items.Add(FirstItem); //添加一级分类

3.去掉菜单项Caption中的&符号

FirstItem := TMenuItem.Create(Self);
FirstItem.AutoHotkeys := maManual;//增加这句
PopupMenu1.AutoHotkeys := maManual;//或者增加这句
FirstItem.Caption := ‘FirstName’;
FirstItem.OnClick := MenuClick;
PopupMenu1.Items.Add(FirstItem); //添加一级分类


至于popupmenu的click事件,可以以过程形式再另写出来,如上面代码中FirstItem.OnClick := MenuClick;其中Menuclick就是click事件的过程名。楼主可以慢慢捉摸下。。。。

读书人网 >.NET

热点推荐