PowerBuilder菜单生成教程:从零开始
需积分: 30 75 浏览量
更新于2024-09-08
收藏 26KB TXT 举报
"PB 菜单生成详解(从无到有)"
在PowerBuilder(PB)开发环境中,创建动态菜单是一项常用的任务。本教程将详细介绍如何从零开始生成PB菜单,特别是如何遍历菜单中的所有非级联菜单项。我们将通过一个实例来理解这个过程。
首先,`PBMENUOBJECT`是PowerBuilder中的一个对象,它包含了一系列属性和方法,用于定义和操作菜单。其中,`Item[]`属性是一个数组,专门用来存储菜单对象下的菜单项。这意味着你可以通过这个属性访问和修改菜单结构,包括添加、删除或更新菜单项。
在实现动态菜单生成时,有三个关键点需要注意:
1. 创建菜单:一个菜单可以包含多个子菜单项(ITEM),这些子项可以通过`Item[]`属性来指定。每个ITEM可以有自己的文本、标签和事件处理程序。
2. 遍历菜单:当你需要对菜单进行遍历时,通常会用到数组的索引。如果菜单项是非级联的,你可以直接通过`Item[]`的`upperbound()`和`lowerbound()`方法获取其范围,并逐个处理每个菜单项。
3. 动态调整:在PB中,菜单项的数量可能在运行时发生变化,因此你需要能够动态地添加或删除菜单项。这通常涉及到实例化新的`PBMENUOBJECT`,并将其插入到现有菜单结构中。
以下是一个简单的示例代码,展示了如何创建一个带有特定标签的菜单:
```pb
// 实例化变量
INSTANCE VARIABLES
menuim_new[] // 新建菜单项数组
m_newclicked = 0 // 记录点击的菜单项
string ls_tag
ls_tag = this.tag
parentwindow.dynamicevent ue_open(ls_tag) // 触发父窗口的打开事件
// 在open事件中创建菜单
ON OPEN EVENT
string m_str[], m_tag[]
String ls_ywzm[26] = {'(&A)', '(&B)', '(&C)', '(&D)', '(&E)', '(&F)', '(&G)', '(&H)', '(&I)', '(&J)', '(&K)', '(&L)', '(&M)', '(&N)', '(&O)', '(&P)', '(&Q)', '(&R)', '(&S)', '(&T)', '(&U)', '(&V)', '(&W)', '(&X)', '(&Y)', '(&Z)'}
int li_i, li_count
menu m_newitem[], m_temp
This.ChangeMenu(m_main) // 设置当前窗口的菜单为m_main
// 创建前8个菜单项
for li_i = 1 to 8
m_str[li_i] = 'Item_' + string(li_i)
m_tag[li_i] = right('0000' + string(li_i), 4)
next
// 将新创建的菜单项添加到m_main的第2个位置开始
m_temp = m_main.item[2]
for li_i = 2 to 8
m_newitem[li_i] = create m_new
m_main.item[li_i] = m_newitem[li_i]
m_main.item[li_i].text = m_str[li_i]
m_main.item[li_i].tag = m_tag[li_i]
next
```
这段代码首先定义了必要的变量,然后在窗口的`Open`事件中执行菜单的创建。它创建了一个8个元素的菜单,每个菜单项都有自己的文本和标签。通过`ChangeMenu`方法,我们可以将新创建的菜单应用到当前窗口。
理解如何使用PowerBuilder的`PBMENUOBJECT`和`Item[]`属性是创建动态菜单的关键。通过实例化新的菜单项并将其插入现有菜单结构,你可以构建出满足需求的自定义菜单。在实际开发中,可以根据业务逻辑和用户交互需求进一步扩展这个基础概念。
2015-02-01 上传
2015-08-11 上传
2012-11-08 上传
2009-05-11 上传
2008-10-24 上传
2009-09-14 上传
225 浏览量
kekeservices
- 粉丝: 0
- 资源: 5
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析