10.7 本地菜单

本地菜单<o:p></o:p>

Native Menu API 提供了创建程序,窗口,上下文菜单和弹出式菜单的相关类。<o:p></o:p>

<o:p></o:p>

AIR 菜单概要 <o:p></o:p>

native menu类运行程序访问到操作系统的本地菜单特性。NativeMenu对象用于创建应用程序菜单(OSX系统可用),window menus (Windows系统可用), 上下文菜单和弹出式菜单。<o:p></o:p>

菜单的类型<o:p></o:p>

 <o:p></o:p>

AIR支持一下类型的菜单:<o:p></o:p>

应用程序菜单<o:p></o:p>

应用程序菜单必须通过Shell类访问,在Mac OS X,系统上应用程序菜单由操作系统自动提供。应用程序使用这些AIR菜单API添加菜单项和子菜单到标准菜单上并注册处理函数,当然你也可以完全替换掉标准菜单。<o:p></o:p>

<o:p></o:p>

窗体菜单<o:p></o:p>

通过创建NativeMenu对象,然后赋值给NativeWindow.menu属性来添加窗体菜单。Windows操作系统支持窗体菜单,但是Mac OS X不可以。<o:p></o:p>

<o:p></o:p>

上下文菜单<o:p></o:p>

上下文菜单被添加到HTMLControl组件的交互对象和文档元素上。最典型的例子就是在HTML元素上使用Webkit API,当然也可以直接在HTMLControl上使用上下文菜单。<o:p></o:p>

<o:p></o:p>

系统托盘菜单<o:p></o:p>

通过创建NativeMenu对象并赋值给Shell.shell.icon.menu属性来创建系统托盘菜单。<o:p></o:p>

<o:p></o:p>

Flex 菜单<o:p></o:p>

Flex framework提供了一组Flex菜单类。这些Flex菜单类不需要窗体继承系统窗体风格即可使用而且还可在MXML格式中声明。如果你使用Flex Framework,这时就可以用Flex菜单类来代替本地菜单类了。<o:p></o:p>

<o:p></o:p>

自定义菜单<o:p></o:p>

本地菜单是在Flash和HTML渲染模型之外由操作系统负责绘制的,当然我们也可以自己绘制自己的非本地菜单,不过遗憾的是目前AIR菜单类还不支持“自绘制”菜单<o:p></o:p>

<o:p></o:p>

菜单结构 <o:p></o:p>

 <o:p></o:p>

一个菜单包含一个或多个菜单项。一个菜单项可以是一个命令,一个子菜单,或一个分隔符,一般情况下,一个菜单项就是一个命令,如果菜单项的submenu属性被赋值为NativeMenu对象则变为子菜单,如果菜单项构造函数的isSeparator参数为true,则变为分隔符。<o:p></o:p>

最顶层的菜单项显示在菜单栏上,其他子菜单添加在应用程序和窗体菜单的顶层菜单中(虽然有些操作系统可以直接把菜单项放在菜单栏上,这样看起来好像很不符合常规)。<o:p></o:p>

下面的图标演示典型的菜单结构。根菜单包含子菜单“File”和“Edit”。"File"菜单包含两个命令和一个子菜单(用于显示最近打开的文档,它也是一个子菜单,包含三个菜单项)。"Edit"菜单包含三个命令和一个分隔符。<o:p></o:p>

 <o:p></o:p>

菜单事件<o:p></o:p>

 <o:p></o:p>

菜单和菜单项都可以发出displaying 和 select事件:<o:p></o:p>

Displaying: <o:p></o:p>

在菜单即将被显示之前,菜单及其子菜单会发出displaying事件通知其注册的监听器。Displaying事件给你一个机会来更新菜单内容或菜单项状态。例如在"Open Recent"菜单项的displaying处理函数可以改变反应当前阅读过的文档菜单项。<o:p></o:p>

<o:p></o:p>

Event对象的target属性指向被显示的菜单,currentTarget 则是被注册监听器监听的对象,既可以是菜单本身,也可以是其菜单项。<o:p></o:p>

Select:  <o:p></o:p>

当用户点击命令项时,该命令项会发出一个select事件给注册的监听器,不过子菜单和分隔符不能被选择也不会发出select事件。<o:p></o:p>

<o:p></o:p>

菜单项的Select事件会一直往上传递到顶层菜单,所以你可以直接在菜单项上监听也可以在菜单结构的上层的监听。当监听select事件时,需要通过event的target属性确定是哪个菜单项触发了事件,而currentTarget 属性可以确定当前的菜单对象。<o:p></o:p>

快捷键<o:p></o:p>

 <o:p></o:p>

快捷键是菜单上操作系统键盘的一部分功能。无论是Mac OS X还是Windows 系统都允许用户用键盘打开或选择某个菜单命令项.<o:p></o:p>

用字符串的索引指定快捷字符,字符串的第一个字母索引值为“0”。这样如果把“Format”字符串的“r“字母作为快捷字符,应设置其索引值mnemonicIndex属性为2。<o:p></o:p>

var item:NativeMenuItem = new NativeMenuItem("Format"); <o:p></o:p>

item.mnemonicIndex = 2; <o:p></o:p>

<o:p></o:p>

菜单项状态<o:p></o:p>

 <o:p></o:p>

菜单项有两个状态属性,checked 和enabled:<o:p></o:p>

checked <o:p></o:p>

设置为true会在菜单项字符前加上标志<o:p></o:p>

<o:p></o:p>

var item:NativeMenuItem = new NativeMenuItem("Format"); <o:p></o:p>

item.checked = true; <o:p></o:p>

 <o:p></o:p>

enabled <o:p></o:p>

设置菜单项是否可用<o:p></o:p>

<o:p></o:p>

var item:NativeMenuItem = new NativeMenuItem("Format"); <o:p></o:p>

item.enabled = false; <o:p></o:p>

 <o:p></o:p>

关联对象到菜单项<o:p></o:p>

 <o:p></o:p>

NativeMenuItem 类的data属性允许与任意类型的对象相关联。例如"Open Recent"菜单中,你可以赋值一个File对象到菜单项上:<o:p></o:p>

var file:File = new File("app-storage:/GreatGatsby.pdf"); <o:p></o:p>

var menuItem:NativeMenuItem = docMenu.addItem(new NativeMenuItem(file.name)); <o:p></o:p>

menuItem.data = file; <o:p></o:p>

<o:p></o:p>

 
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值