DaffyMenu 扩展:弹出菜单扩展,为组件添加弹出式菜单功能

« 返回首页

DaffyMenu 扩展

DaffyMenu 是一个免费的非可视扩展,用于创建弹出式菜单。该扩展为组件添加了弹出式菜单功能,支持多种菜单选项和自定义配置。

包名:com.gordonlu.daffymenu

版本:1

发布日期:2022年3月31日

下载链接

扩展文件

com.gordonlu.daffymenu.aix

demo:

Test.aia

功能概述

扩展特性

  • 弹出式菜单:为任何组件添加右键菜单功能
  • 自定义选项:支持添加多个菜单项
  • 事件响应:处理菜单项点击事件
  • 菜单样式:提供默认和可自定义的菜单外观
  • 非可视组件:不会占用界面空间
  • 组件友好:可绑定到任意组件

截图

Logo 和界面

DaffyMenu Logo DaffyMenu Screenshot

应用示例

示例截图1

示例截图2

功能展示

界面示例

移动端示例1

移动端示例2

配置界面

函数

ShowMenu 显示菜单(组件,菜单项列表)
显示绑定到指定组件的弹出菜单。
  • 组件:组件类型,要绑定菜单的组件
  • 菜单项列表:列表类型,菜单项文本列表
AddMenuItem 添加菜单项(组件,菜单项文本)
为指定组件添加一个菜单项。
  • 组件:组件类型,目标组件
  • 菜单项文本:文本类型,菜单项显示文本
ClearMenuItems 清除菜单项(组件)
清除指定组件的所有菜单项。
  • 组件:组件类型,目标组件
SetMenuTitle 设置菜单标题(组件,标题)
设置弹出菜单的标题。
  • 组件:组件类型,目标组件
  • 标题:文本类型,菜单标题文本
SetMenuIcon 设置菜单图标(组件,图标路径)
设置菜单项的图标。
  • 组件:组件类型,目标组件
  • 图标路径:文本类型,图标文件路径
SetItemIcon 设置项目图标(菜单项索引,图标路径)
设置指定菜单项的图标。
  • 菜单项索引:数字类型,菜单项的索引位置
  • 图标路径:文本类型,图标文件路径
SetTextColor 设置文本颜色(组件,颜色)
设置菜单项的文本颜色。
  • 组件:组件类型,目标组件
  • 颜色:数字类型,颜色值
SetBackgroundColor 设置背景颜色(组件,颜色)
设置菜单的背景颜色。
  • 组件:组件类型,目标组件
  • 颜色:数字类型,背景颜色值
SetMenuHeight 设置菜单高度(组件,高度)
设置弹出菜单的高度。
  • 组件:组件类型,目标组件
  • 高度:数字类型,菜单高度(像素)
SetMenuWidth 设置菜单宽度(组件,宽度)
设置弹出菜单的宽度。
  • 组件:组件类型,目标组件
  • 宽度:数字类型,菜单宽度(像素)
SetAnimationDuration 设置动画时长(组件,时长)
设置菜单弹出/隐藏的动画时长。
  • 组件:组件类型,目标组件
  • 时长:数字类型,动画时长(毫秒)
DisableMenu 禁用菜单(组件)
禁用指定组件的菜单功能。
  • 组件:组件类型,目标组件
EnableMenu 启用菜单(组件)
启用指定组件的菜单功能。
  • 组件:组件类型,目标组件
HideMenu 隐藏菜单(组件)
隐藏当前显示的菜单。
  • 组件:组件类型,目标组件

事件

MenuItemClicked 菜单项点击(组件,菜单项索引,菜单项文本)
当用户点击菜单项时触发。
  • 组件:组件类型,触发事件的组件
  • 菜单项索引:数字类型,被点击的菜单项索引
  • 菜单项文本:文本类型,被点击的菜单项文本
MenuShown 菜单显示(组件)
当弹出菜单显示时触发。
  • 组件:组件类型,菜单所属的组件
MenuHidden 菜单隐藏(组件)
当弹出菜单隐藏时触发。
  • 组件:组件类型,菜单所属的组件

属性

IsMenuVisible 菜单可见(组件) {:.boolean .read-only}
返回指定组件的菜单是否当前可见。
  • 组件:组件类型,要检查的组件
  • 返回值:布尔类型,菜单是否可见
MenuItemCount 菜单项数量(组件) {:.number .read-only}
返回指定组件的菜单项数量。
  • 组件:组件类型,要检查的组件
  • 返回值:数字类型,菜单项总数
MenuTitle 菜单标题(组件) {:.text .read-only}
返回指定组件的菜单标题。
  • 组件:组件类型,要检查的组件
  • 返回值:文本类型,菜单标题文本

使用示例

基础菜单设置

当 屏幕1.初始化
  // 为按钮1添加菜单项
  调用 DaffyMenu1.添加菜单项 按钮1 "复制"
  调用 DaffyMenu1.添加菜单项 按钮1 "粘贴"
  调用 DaffyMenu1.添加菜单项 按钮1 "删除"
  调用 DaffyMenu1.添加菜单项 按钮1 "设置"

  // 设置菜单标题
  调用 DaffyMenu1.设置菜单标题 按钮1 "操作菜单"

  // 设置菜单颜色
  调用 DaffyMenu1.设置背景颜色 按钮1 0xFFFFFF  // 白色背景
  调用 DaffyMenu1.设置文本颜色 按钮1 0x000000  // 黑色文字

处理菜单点击事件

当 DaffyMenu1.菜单项点击 组件 索引 文本
  如果 索引 = 0 则
    // 复制操作
    调用 文本复制 复制到剪贴板
    显示通知 "已复制到剪贴板"
  否则如果 索引 = 1 则
    // 粘贴操作
    设置 输入框1.文本 = 获取剪贴板内容
    显示通知 "已从剪贴板粘贴"
  否则如果 程引 = 2 则
    // 删除操作
    设置 输入框1.文本 = ""
    显示通知 "内容已清除"
  否则如果 索引 = 3 则
    // 设置操作
    调用 打开设置界面
  否则
    显示通知 "未知操作: " & 文本

为多个组件设置菜单

当 设置多组件菜单按钮.被点击
  // 按钮菜单
  调用 DaffyMenu1.添加菜单项 操作按钮 "新建文件"
  调用 DaffyMenu1.添加菜单项 操作按钮 "打开文件"
  调用 DaffyMenu1.添加菜单项 操作按钮 "保存文件"

  // 文本框菜单
  调用 DaffyMenu1.添加菜单项 输入框1 "全选"
  调用 DaffyMenu1.添加菜单项 输入框1 "复制"
  调用 DaffyMenu1.添加菜单项 输入框1 "粘贴"
  调用 DaffyMenu1.添加菜单项 输入框1 "清除"

  // 图片组件菜单
  调用 DaffyMenu1.添加菜单项 图片组件1 "加载图片"
  调用 DaffyMenu1.添加菜单项 图片组件1 "保存图片"
  调用 DaffyMenu1.添加菜单项 图片组件1 "清除图片"

菜单样式自定义

当 自定义样式按钮.被点击
  // 设置菜单大小
  调用 DaffyMenu1.设置菜单宽度 按钮1 300
  调用 DaffyMenu1.设置菜单高度 按钮1 200

  // 设置动画效果
  菜单显示动画 = 300  // 毫秒
  调用 Daffy1.设置动画时长 按钮1 300

  // 设置主题颜色
  调用 DaffyMenu1.设置背景颜色 按钮1 0xF0F0F0F  // 深灰色背景
  调用 DaffyMenu1.设置文本颜色 按钮1 0xFFFFFF  // 白色文字

  设置 菜单提示文本.文本 = "右键菜单已自定义"

菜单状态管理

当 禁用菜单按钮.被点击
  调用 DaffyMenu1.禁用菜单 按钮1
  设置 状态标签.文本 = "菜单已禁用"

当 启用菜单按钮.被点击
  调用 DaffyMenu1.启用菜单 按钮1
  设置 状态标签.文本 = "菜单已启用"

动态菜单管理

当 动态添加按钮.被点击
  设置 当前索引 = 动态菜单项数量.值

  // 动态添加菜单项
  设置 菜单项名称 = "项目" & 当前索引
  调用 DaffyMenu1.添加菜单项 动态按钮 菜单项名称
  设置 动态菜单项数量.值 = 当前索引 + 1

  显示通知 "已添加菜单项: " & 菜单项名称

条件菜单显示

当 条件菜单按钮.被点击
  设置 用户权限 = 获取用户权限级别

  如果 用户权限 = "管理员" 则
    // 管理员菜单
    调用 DaffyMenu1.清除菜单项 管理按钮
    调用 DaffyMenu1.添加菜单项 管理按钮 "用户管理"
    调用 DaffyMenu1.添加菜单项 管理按钮 "系统设置"
    调用 DaffyMenu1.添加菜单项 管理按钮 "数据备份"
  否则如果 用户权限 = "用户" 则
    // 普通用户菜单
    调用 DaffyMenu1.清除菜单项 用户按钮
    调用 DaffyMenu1.添加菜单项 用户按钮 "个人资料"
    调用 DaffyMenu1.添加菜单项 用户按钮 "修改密码"
  否则
    // 访客菜单
    调用 DaffyMenu1.清除菜单项 访客按钮
    调用 DaffyMenu1.添加菜单项 访客按钮 "登录"
    调用 DaffyMenu1.添加菜单项 访客按钮 "注册"

应用程序主菜单

当 显示主菜单按钮.被点击
  // 文件操作
  调用 DaffyMenu1.添加菜单项 主菜单 "新建"
  调用 DaffyMenu1.添加菜单项 主菜单 "打开"
  调用 DaffyMenu1.添加菜单项 主菜单 "保存"
  调用 DaffyMenu1.添加菜单项 主Menu "另存为"

  // 分隔符(可通过空项实现)
  调用 DaffyMenu1.添加菜单项 主菜单 "---------"

  // 编辑操作
  调用 DaffyMenu1.添加菜单项 主菜单 "撤销"
  调用 DaffyMenu1.添加菜单项 主菜单 "重做"
  调用 DaffyMenu1.添加菜单项 主菜单 "剪切"
  调用 DaffyMenu1.添加菜单项 主菜单 "复制"
  调用 DaffyMenu1.添加菜单项 主Menu "粘贴"

  // 分隔符
  调用 DaffyMenu1.添加菜单项 主菜单 "---------"

  // 其他操作
  调用 DaffyMenu1.添加菜单项 主菜单 "设置"
  调用 DaffyMenu1.添加菜单项 主菜单 "关于"
  调用 DaffyMenu1.添加菜单项 主Menu "退出"

  调用 DaffyMenu1.设置菜单标题 主菜单 "应用程序菜单"

菜单事件处理

当 DaffyMenu1.菜单显示 组件
  显示通知 "菜单已显示"
  设置 当前激活菜单 = 组件

当 DaffyMenu1.菜单隐藏 组件
  显示通知 "菜单已隐藏"
  设置 当前激活菜单 = 空文本

当 DaffyMenu1.菜单项点击 组件 索引 文本
  如果 组件 = "主菜单" 则
    处理主菜单操作
  否则如果 组件 = "编辑按钮" 则
    处理编辑操作
  否则如果 组件 = "用户按钮" 则
    处理用户操作

  设置 最后选中项 = 索引 & ": " & 文本
  显示通知 "选择了: " & 最后选中项

高级应用

上下文相关菜单

当 显示上下文菜单按钮.被点击
  设置 选中文本 = 文本框1.选中文本

  如果 选中文本 = "" 则
    // 文本为空时的菜单
    调用 DaffyMenu1.清除菜单项 文本框1
    调用 DaffyMenu1.添加菜单项 文本框1 "粘贴"
    调用 DaffyMenu1.添加菜单项 文本框1 "全选"
  否则
    // 文本不为空时的菜单
    调用 DaffyMenu1.清除菜单项 文本框1
    调用 DaffyMenu1.添加菜单项 文本框1 "复制"
    调用 DaffyMenu1.添加菜单项 文本框1 "剪切"
    调用 DaffyMenu1.添加菜单项 文本框1 "粘贴"
    调用 DaffyMenu1.添加菜单项 文本框1 "删除"
    调用 DaffyMenu1.添加菜单项 文本框1 "全选"
    调用 DaffyMenu1.添加菜单项 文本框1 "清除"

图标菜单设置

当 图标菜单按钮.被点击
  // 带图标的菜单项
  调用 DaffyMenu1.添加菜单项 图标按钮 "复制"
  调用 DaffyMenu1.设置项目图标 0 "/path/to/copy.png"  // 设置第一项图标
  调用 DaffyMenu1.添加菜单项 图标按钮 "粘贴"
  调用 DaffyMenu1.设置项目图标 1 "/path/to/paste.png"  // 设置第二项图标
  调用 DaffyMenu1.添加菜单项 图标按钮 "删除"
  调用 DaffyMenu1.设置项目图标 2 "/path/to/delete.png"  // 设置第三项图标

注意事项

  1. 非可视组件:DaffyMenu 是非可视组件,不会在应用界面中显示
  2. 组件绑定:必须将菜单绑定到具体的组件才能使用
  3. 菜单冲突:避免为同一组件绑定多个菜单
  4. 事件处理:确保正确处理菜单点击事件
  5. 性能考虑:菜单项数量不宜过多
  6. 图标支持:支持菜单项图标,需要提供图标路径
  7. 动画效果:可配置菜单弹出和隐藏的动画时长
  8. 颜色配置:支持自定义菜单的文本和背景颜色

应用场景

  • 文本编辑器:复制、粘贴、剪切、全选等功能
  • 文件管理器:新建、打开、保存、删除文件操作
  • 应用程序:设置、关于、退出等系统操作
  • 媒体播放器:播放控制、音量调节、全屏等功能
  • 图片查看器:图片操作、缩放、旋转、保存等功能
  • 社交应用:分享、收藏、举报、设置等功能

技术规格

  • 扩展类型:非可视扩展
  • 组件要求:需要绑定到具体组件
  • 菜单项限制:建议控制在合理数量内
  • 动画支持:支持弹出和隐藏动画
  • 颜色支持:支持ARGB颜色格式
  • 图标支持:支持本地图标文件
  • 最低系统:基于发布时间推测兼容性良好

版权信息

  • 原作者:Gordon Lu (gordonlu310)
  • 原始网址:https://community.appinventor.mit.edu/t/free-daffymenu-popup-menus-for-your-components/54771/12
  • 发布日期:2022年3月31日
  • 许可协议:免费开源扩展
  • 致谢:感谢 AI2 Popup Menu 提供的灵感

文档最后更新:2025年11月20日

文档反馈