我想做一个效果就是在程序的右上角有一个按钮,点击按钮可以显示程序打开的窗体名称...注意,是打开的,然后窗体关闭的时候,这里也就不显示了.比如程序有10个窗体(我没用mdi子窗体,就是普通的窗体),如果用户在使用打开了其中任意几个,那这个按钮就动态的显示打开的菜单名称..比如,打开基本信息单录入后. 按钮点击可显示这个'基本信息单录入', 打开多个,可以通过这个按钮快速切换不同的菜单操作....求方法......求实例....... 谢谢!
解决方案 »
- 如何直接用fastreport打印dbgrideh表格?
- 安装了Raize控件后,DELPHI不能正常运行了,怎么回事
- Midas开发的问题,求救!
- 哪里有水晶报表下载亚
- 有关Delphi的DLL调用问题, 主程序如何在不知道Dll中函数定型义的情况下进行调用。
- 在sql 数据库中插入日期型数据出错“没有执行可选特性”,什么意思
- edit框的editmask功能
- 如果程序做到一半,发现数据表的结构有问题,改动时,在程序里应该注意什么地方?
- 采用paradox数据库,在用installshield打包时,在objects/merge modules中应该选择哪几项才有加载Idpdx32.dll?
- 关于明细表的数据输入
- 怎么清除指定名称的打印机驱动程序中的待打印任务
- 我用IdHTTP.post 登录上了一个网站,然后在登录的情况下,访问该网站的其它网页。
你说的按钮按下是弹出菜单的么,如果是的话
简单点的,你就直接先定义好一个菜单,菜单项目就直接好按窗口名称定义好(包括事件),然后设置所有项为的Visible为false
然后打开一个窗口时,去设置那个菜单的Visible为TRUE
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;
窗口关闭时,再删除。
这样,你即可以知道有几个FOrm打开,具体哪几个,显示出它的标题,Form的所有信息都可以
每打开一个窗口,就添加到TPopupMenu菜单里.
每关闭一个窗口则减少相应的项.关闭最后一个的时候将此按钮也隐藏或释放掉
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事件的过程名。楼主可以慢慢捉摸下。