我想做一个效果就是在程序的右上角有一个按钮,点击按钮可以显示程序打开的窗体名称...注意,是打开的,然后窗体关闭的时候,这里也就不显示了.比如程序有10个窗体(我没用mdi子窗体,就是普通的窗体),如果用户在使用打开了其中任意几个,那这个按钮就动态的显示打开的菜单名称..比如,打开基本信息单录入后.  按钮点击可显示这个'基本信息单录入', 打开多个,可以通过这个按钮快速切换不同的菜单操作....求方法......求实例....... 谢谢!

解决方案 »

  1.   


    你说的按钮按下是弹出菜单的么,如果是的话
    简单点的,你就直接先定义好一个菜单,菜单项目就直接好按窗口名称定义好(包括事件),然后设置所有项为的Visible为false
    然后打开一个窗口时,去设置那个菜单的Visible为TRUE
      

  2.   

    窗体.onshow 里在窗体列表中增加名称,onclose时删除
      

  3.   

    或者根据窗口名列表来显示
    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;
      

  4.   

    用一个 Combobox。记录每打开一个Form记录下Form对象。
    窗口关闭时,再删除。
    这样,你即可以知道有几个FOrm打开,具体哪几个,显示出它的标题,Form的所有信息都可以
      

  5.   

    用TPopupMenu菜单也可以.
    每打开一个窗口,就添加到TPopupMenu菜单里.
    每关闭一个窗口则减少相应的项.关闭最后一个的时候将此按钮也隐藏或释放掉
      

  6.   

    太不厚道了,会的人都从来不授业解惑的,还说什么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事件的过程名。楼主可以慢慢捉摸下。