函数glDefinePopup(),动态定义多级的popup菜单
动态的定义POPUP,涉及字符串处理、递归、菜单定义语句等等。
也挺费劲的,。
做出这个函数,就可扩展基类 _FORM, 以加上 接口:_c菜单定义 、_v菜单事件() 。
(1) 使用例子
文件
打开
EXCEL
WORD
关闭
Quit
编辑
Copy
paste
帮助
ENDTEXT
glDefinePopup(cMenu,'abc')
Activate Popup abc
(2)函数定义
Function glDefinePopup()Function glDefinePopup
Lparameters tcPopupDefine, tcPopupName
*- 功能: 定义多级的关联popup菜单
*-
*- 参数
*- (1) tcPopupDefine: 菜单定义字符串,每项以换行分隔,以TAB确定级别
*- 例子:
*- text to cPpDefine
*- 文件
*- 打开
*- EXCEL
*- WORD
*- 关闭
*- endtext
*-
*- (2) tcPopupName: 定出来的POPUP的名字
*-
Local i,cLine,n当前级数,n上级id_
Release POPUPS (tcPopupName) extended
*- 转变为链表结构 ----------------
Create Cursor _csDefine_menu_MenuStru (id_ i , fid_ i , 菜单定义 c(240), 级数 i,子女数 i )
For i=1 to GetWordCount(tcPopupDefine,Chr(13))
cLine = Alltrim( GetWordNum(tcPopupDefine,i,Chr(13)) , 1, Chr(10),Chr(32))
If Empty(cLine)
Loop
EndIf
n当前级数 = _n求级数(cLine)
n上级id_=0
Do while not bof() && 往回找,找到级别比自己小[1级]的, 就是父. 取其id作fid_, 父的子女数+1
If 级数 < n当前级数
n上级id_ = id_
Replace 子女数 with 子女数+1
Exit
EndIf
Skip -1
EndDo
Append Blank
Replace id_ with i, fid_ with n上级id_, 级数 with n当前级数, 菜单定义 with Ltrim(cLine,1,Chr(9))
Next
_vDefinePopUp(0,0,tcPopupName)
Return .t.
**********************************************
Function _vDefinePopup()Function _vDefinePopup
Lparameters tn上级id, tn上级barID, tc上级popUp名
Local nBarCnt,nRecNo,c本级popup名
If tn上级barID = 0
c本级popup名 = tc上级popUp名
Else
c本级popup名 = tc上级popUp名+'_'+Alltrim(Str(tn上级barID,10))
_vfp.DoCmd( Textmerge('On Bar <<tn上级barID>> of <<tc上级popUp名>> activate popup <<c本级popup名>>'))
EndIf
_vfp.DoCmd( Textmerge("Define Popup <<c本级popup名>> shortcut relative "))
_vfp.DoCmd( Textmerge("On Selection Popup <<c本级popup名>> Deactivate Popup <<c本级popup名>> "))
*---
nBarCnt=0
nRecNo=Recno()
Scan for fid_ = tn上级id
nBarCnt = nBarCnt + 1
_vfp.DoCmd( Textmerge("define Bar <<nBarCnt>> of <<c本级popup名>> prompt '<<Trim(菜单定义)>>' " ))
If 子女数 > 0
_vDefinePopup(id_,nBarCnt,c本级popup名)
EndIf
EndScan
Go (nRecNo)
Return
**********************************************
Function _n求级数()Function _n求级数
Lparameters tcStr
Local nCnt,i
nCnt=0
For i=1 To Len(tcStr)
If Substr(tcStr,i,1)=Chr(9)
nCnt = nCnt + 1
Else
Exit
Endif
Next
Return nCnt+1
**********************************************************
转载于:https://www.cnblogs.com/maxchan/archive/2007/08/30/876077.html
函数glDefinePopup(),动态定义多级的popup菜单相关推荐
- 动态导航多级下拉菜单 html,css3实现的多级渐变下拉菜单导航效果代码
本文实例讲述了css3实现的多级渐变下拉菜单导航效果代码.分享给大家供大家参考.具体如下: 这是一款基于css3实现的下拉菜单导航,是非常漂亮的动画菜单,而且是多级菜单的形式,测试时发现可支持5级,估 ...
- python 定义函数方法_Python动态定义函数的方法介绍
本篇文章给大家带来的内容是关于Python动态定义函数的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 基于 MIT 许可协议 在 Python 中,没有可以在运行时简化函数 ...
- python 动态定义函数_Python骚操作:动态定义函数
标题:Python Tips: Dynamic function definition 作者:Philip Trauner 译者:豌豆花下猫 基于 MIT 许可协议 在 Python 中,没有可以在运 ...
- 下拉框可筛选多层级菜单多选_用Excel做多级下拉菜单媲美网页筛选器
用Excel进行数据收集,做好一个数据录入文件给用户使用,结果收回来的数据让你令人抓狂:手机号不是11位 面积单位有人写平方米,有人写m2 张冠李戴,明明写姓名的地方,写了性别 说好写保留一位小数,却 ...
- qml中使用combobox实现多级菜单_excel实用技巧:如何构建多级下拉菜单
编按:哈喽,大家好!说到做下拉菜单,小伙伴们都知道直接使用Excel中的数据验证就可以实现,但是二级.三级,甚至更多级的下拉菜单,可能就有点蒙圈了.其实用Excel制作三级下拉菜单,一点都不难,它就跟 ...
- 用 JA Transmenu 模块做多级弹出菜单
转自http://www.joomlagate.com "弹出菜单"这个说法本来不规范,尽管你我都明白这是什么意思,而实际上我们所理解的那个菜单样式英文说法是"Slide ...
- excel实用技巧:如何构建多级下拉菜单
使用数据有效性制作下拉菜单对大多数小伙伴来说都不陌生,但说到二级和三级下拉菜单大家可能就不是那么熟悉了. 什么是二级和三级下拉菜单呢?举个例子,在一个单元格选择某个省后,第二个单元格选项只能出现该省份 ...
- css画表格多级表头,element UI实现动态生成多级表头
一.效果图 二.封装两个组件,分别为DynamicTable.vue和TableColumn.vue,TableColumn.vue主要是使用递归来对表头进行循环生成 DynamicTable.vue ...
- python中自定义函数如何传递动态参数_python 函数的动态参数
1. 函数的动态参数 1. *args 位置参数动态传参 2. **kwargs 关键字参数动态传参 顺序:位置参数, *args, 默认值, **kwargs def func(*args, **k ...
- c语言不允许对数组的大小做动态定义,数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt...
<数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt>由会员分享,可在线阅读,更多相关<数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt(32页珍藏版)> ...
最新文章
- linux进程管理fork,Linux -- 进程管理之 fork() 函数
- ajax加php实现三级联动
- 并发优化–减少锁粒度
- Guzzle – 构建 RESTful Web 服务的 PHP HTTP 框架
- 2639-Bone Collector II (01背包之第k优解)
- 线程安全的map_面试必问-几种线程安全的Map解析
- 技术宅的乐趣!网友编写出《流浪地球》“春节十二响”C语言源码
- Vue中,在<template>内进行页面链接跳转
- Openlayer:学习笔记之控件
- mysql 5.7 root 修改密码_Mysql5.7忘记root密码及mysql5.7修改root密码的方法
- 过度使用微信,正在让人越来越焦虑
- 当人工智能遇上医疗影像,你不得不知道这13家影像AI公司
- android 编程app_2020年用于Android App开发的顶级编程语言
- 算法——指定日期的星期推算
- 上海市高校计算机考试准考证
- qpython3下载-QPython3下载
- android版本新 老程序不能用_微信拍一拍功能不知道怎么用?教你拍好友和拍自己...
- 时间轮算法概念;netty时间轮使用
- unity3D游戏开发实战(四)——使用道具与密码锁
- python 游戏辅助脚本,python写游戏脚本辅助作范文
热门文章
- 【spring源码分析】spring中类型转换器详解
- 数组转ArrayList的正确方式
- 算法实践——改良的求解数独的暴力搜索法
- nginx+iis、NLB、Web Farm、Web Garden、ARR
- 基于RPM包的LAMP搭建
- phpMyAdmin安装配置方法全过程,及问题解决
- java 与 c# 3des 加解密
- [Android] 软件中选择文件夹功能
- [2018.11.03 T4] 7w523
- [2018.10.23 T2] 行星通道计划