• Delphi Menu Designer(菜单设计器)之三


    弹出菜单(快捷菜单)

    继续菜单的讨论,在Delphi中,可以和主菜单一样地建立弹出菜单。Delphi的优点是可通过组建的PopupMenu属性把特殊弹出菜单赋给组建。当鼠标放在组件上时,点击右键,就会自动弹出菜单。弹出菜单的事件处理程序和主菜单一样。

    文本编辑器的共同特点就是把Cut、Copy和Paste操作放到了快捷菜单上,下面将要为ScratchPad程序的Memo组建增加这样的功能。要建立弹出菜单,复制部分主菜单,遵循以下步骤:

    1、从组件面板中选择PopupMenu组件,并放置到窗体上。

    2、改变其Name属性为MemoPopup

    3、双击PopupMenu图标运行Menu Designer。

    4、点击右键弹出Menu Designer的快捷菜单,从快捷菜单中选择“Select Menu”。出现的对话框显示出应用程序中可以获得的菜单,选择MainMenu点击OK。如下图:

    0167

    5、点击Edit菜单,点击Cut菜单项,按住Shift键点击Paste菜单项。选中Cut、Copy和Paste三项。

    6、复制选择的项到剪贴板,从Delphi主菜单中选择【Edit | Copy】或者Ctrl + C

    7、在从Menu Designer的快捷菜单中选择“Select Menu”,这次选择MemoPopup并点击OK。Menu Designer弹出空弹出菜单。

    8、从Delphi主菜单选择【Edit | Paste】或Ctrl + V,Cut、Copy和Paste菜单项都插入到弹出菜单中,如下:

    0168

    在做几件事情就完成了,更改新的菜单项的Name属性:

    1、对于Cut菜单项,Name属性改为PopupCut

    2、对于Copy菜单项,Name属性改为PopupCopy

    3、对于Paste菜单项,Name属性改为PopupPaste

    最后步骤就是为弹出菜单写事件处理程序,主菜单中Cut、Copy和Paste事件处理已经写好了,重复写是多余的,还记得以前建立多个组件共享同一个事件处理程序吗?下面我来逐步实现:

    1、在Cut菜单上点击。

    2、在Object Inspector中点击Event标签。

    3、在OnClick事件的Value栏中点击下列按钮,显示出当前已有事件处理程序清单。

    4、从清单中选择EditCutClick。当点击弹出菜单的Cut时,Edit | Cut将被调用。

    0169

    5、对弹出菜单中的Copy菜单项的OnClick事件设置为EditCopyClick,Paste菜单项的OnClick事件设置为EditPasteClick

    6、在主窗口上点击Memo组件,改变其PopupMenu属性为MemoPopup

    image

    现在程序已经完成了,再次运行测试效果,如下:

    0170

    创建并保存菜单模板

    delphi提供了几个菜单模板,可以插入到主菜单和弹出菜单中。也可以在程序创建和保存自己的模板为将来使用。首先启动Menu Designer,建立菜单。

    创建了菜单后,从Menu Designer的快捷菜单选择“Save As Template…”,显示Save Template对话框。给菜单起一个有意义的名称,点击OK按钮,菜单作为模板保存。如下:

    0171

    要插入菜单,和以前一样从Menu Designer中选择“Insert From Template…”,在Insert Template对话框中选择即可。如下:

    0172

    要删除菜单模板,从Menu Designer中选择“Delete Template…”,在Delete Template对话框选择要删除的模板名称,点击OK即可。如下:

    0173

    Menu Designer是强有力的工具,特别由于输入菜单的能力,它使菜单的建立和编辑变得容易而有趣。

    以上代码均在Delphi 7中测试通过,本节示例代码下载:ScratchPad(菜单设计器之三).rar

  • 相关阅读:
    ORACLE PL/SQL 实例精解之第七章 迭代控制之二
    ORACLE PL/SQL 实例精解之第六章 迭代控制之一
    ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句
    ORACLE PL/SQL 实例精解之第四章 条件控制:if 语句
    sql中用JOIN USING 简化JOIN ON
    ORACLE PL/SQL 实例精解之第三章 PL/SQL中的SQL
    ORACLE PL/SQL 实例精解之第二章 通用编程语言基础
    删除文件时提示“找不到该项目”,怎么解决? 转摘自:http://jingyan.baidu.com/article/e4d08ffdf5ab470fd2f60df4.html
    C#获取文件夹/文件的大小以及占用空间 转摘自:http://www.cnblogs.com/chenpeng-dota/articles/2176470.html
    git update-index --assume-unchanged on directory 转摘自:http://stackoverflow.com/questions/12288212/git-update-index-assume-unchanged-on-directory
  • 原文地址:https://www.cnblogs.com/pchmonster/p/2325030.html
Copyright © 2020-2023  润新知