• Delphi动态创建菜单


    在程序运行中动态创建菜单,主要使用TMeunItem类,所有菜单的条目都是TMenuItem的一个实例。

    打开Delphi7集成开发环境,在默认新建工程里,放置一个Button1按钮和MainMenu1菜单项,设置Button1的Caption属性为添加主菜单。

    在Button1的Object Inspector选项卡设置Button1的OnClick响应事件,代码如下:

    procedure TForm1.Button1Click(Sender: TObject);

    var

      files,edit:TMenuItem;

    begin

      files:=TMenuItem.Create(self);

      edit:=TMenuItem.Create(self);

      files.Caption:='文件';

      edit.Caption:='编辑';

      Form1.MainMenu1.AutoHotkeys:=mamanual;//指定为手动快捷键; 默认是自动添加的

      Form1.MainMenu1.Items.Add(files);

      Form1.MainMenu1.Items.Add(edit);

    end;

    F9运行程序,点击添加主菜单按钮后,可以看到程序多了两个菜单项,分别为文件和编辑

    关闭程序,在窗体上再放置一个Button2按钮,设置Captain属性:添加菜单项,同样的方法给Button2添加OnClick响应函数,代码如下:

    procedure TForm1.Button2Click(Sender: TObject);

    var

      files,edit,new,copy:TMenuItem;

    begin

      files:=TMenuItem.Create(self);

      edit:=TMenuItem.Create(self);

      files.Caption:='文件';

      edit.Caption:='编辑';

      Form1.MainMenu1.AutoHotkeys:=mamanual;

      Form1.MainMenu1.Items.Add(files);

      Form1.MainMenu1.Items.Add(edit);

      new:=TMenuItem.Create(self);

      copy:=TMenuItem.Create(self);

      new.Caption:='新建';

      copy.Caption:='拷贝';

      files.Add(new);

      edit.Add(copy);

    end;

    F9运行程序,可以发现在文件菜单下增加了新建菜单项,在编辑菜单增加了拷贝菜单项

    在Unit1.pas中为我们添加的菜单项添加响应事件,在Form1类的private中添加方法声明,在implement中编写函数具体代码如下:

      private

        { Private declarations }

        procedure test(Sender:TObject);

      public

        { Public declarations }

      end;

    var

      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.test(Sender: TObject);

    begin

      showmessage('测试动态添加菜单') ;

    end;

    同时在上面的Button2的响应方法中添加两行代码,为新建和复制按钮OnClick添加响应方法test(),添加后Button2的OnClick响应方法如下:

    procedure TForm1.Button2Click(Sender: TObject);

    var

      files,edit,new,copy:TMenuItem;

    begin

      files:=TMenuItem.Create(self);

      edit:=TMenuItem.Create(self);

      files.Caption:='文件';

      edit.Caption:='编辑';

      Form1.MainMenu1.AutoHotkeys:=mamanual;

      Form1.MainMenu1.Items.Add(files);

      Form1.MainMenu1.Items.Add(edit);

      new:=TMenuItem.Create(self);

      copy:=TMenuItem.Create(self);

      new.Caption:='新建';

      copy.Caption:='拷贝';

      new.OnClick:=test;

      copy.OnClick:=test;

      files.Add(new);

      edit.Add(copy);

    end;

    F9运行程序,点击添加菜单项后,再点击文件-新建菜单,会弹出对话框。证明菜单项的响应事件添加成功。

  • 相关阅读:
    嵌套查询别名必须性示例。HAVING用法
    分组查询限制。HAVING可写在GROUP BY前。
    合并查询结果集UNION(去重), UNION ALL(不去重),INTERSECT(交集),MINUS(差集,第一个结果集减去第二个结果集,第一个结果集中不在第二个结果集中的记录行),[NOT] EXIST
    18-matlab知识点复习一
    53-java中的queue
    52-2018 蓝桥杯省赛 B 组模拟赛(一)java
    51-迷宫(一)- java版dfs和bfs
    50-2018 蓝桥杯省赛 B 组模拟赛(五)
    49-2015年第6届蓝桥杯Java B组
    46-web页面登入前和登入后控制
  • 原文地址:https://www.cnblogs.com/jijm123/p/11216483.html
Copyright © 2020-2023  润新知