当前位置: 首页 > news >正文

用browse实现菜单功能的方法

用browse实现菜单功能的方法

dbase或fox,特别是fox的菜单功能很强,但使用起来并不简单。所以在我之前的博文《dbaseIII或foxplus的简化的弹出菜单实现方式》中介绍了借助外部力量实现弹出菜单的功能,简单的目的是达到了,但:一是只能在dos或win31的msdos方式或者dosbox中运行;二是菜单有效的功能项数不能超过22项,对于更多项数功能的要求就有些捉襟见肘了。

早在1998年,当时在用foxpro25写一个用断面法或等高线法计算土石方工程量的程序,就遇到选择项数(如一级的“工程项目”数、二级的“断面”数)很多的情况,怎么解决呢?就是利用browse。

在dbaseIV中,browse的命令可以是:

browse freeze <> [field<>] nomenu noappend noedit nodelete noclear

在foxplus中,browse命令是:

browse freeze <> [field<>] nomenu noappend nomodify nodelete

两者之间有些差别,但不大,可以实现相同的功能。

我的做法是,在建立工程或断面时的browse菜单(这里姑且叫做“菜单”)是开放式的,可以增加、编辑、删除“工程项目”或“断面”;在“工程项目”信息确定后,要选择一个“工程项目”进行下一步操作时,这时的“工程项目”browse选单 (即菜单)除了“选中”这个逻辑字段外,其他都是不能修改的,即用“browse freeze 选中nomenu noappend nodelete”实现,当时设计时,“选中”字段既可以键盘操作修改逻辑值,也可用鼠标单击改变(在foxpro中)。

为简化起见,下面给出一个小例子:数据表名称为 menumain.dbf,其中有两个字段,分别为choose、menu_item,前者为逻辑型,后者为字符型,长度为8,menu_item字段的内容分别为:录入、编辑、查询、打印、帮助、退出,共6条记录。相应的菜单演示程序为:

clear

on escape

on error

set echo off

set talk off

set bell off

do while .t.

   sele 1

   use menumain

   defi window main from 5,25 to 15,55

   brow free choose noap node nome field choose,menu_item/20/r wind main

   go top

   loca all for choose

   job=menu_item

   repl all choose with .f.

      if trim(job)=[退出]

      exit

   else

      @ 20,38 say job

*  do &job..prg

   endif

enddo

sele 1

use

retu

(程序中直接假定用第2个字段值作为子程序名,程序在dbaseIV2.0中文版中调试通过)

可以看出,这个小例子演示的菜单的实现很简单。

还可以更简单吗?答案时肯定的。上面的方法设置了一个逻辑字段来判断用户的选择(准确地说,是最先的选项有效)。其实可以直接用当前记录号来确定用户的选择,因为在dbase或fox中,无论是browse,还是edit、change命令,当结束这些命令,关闭相关的屏幕时,记录号是不变的。由记录号得到用户的选择,就知道程序的下一步该做什么了 !

也就是说,在browse命令运行时,按几下上、下键,按Esc或Ctrl+W或Ctrl+Q,用户的选择就确定了......

http://www.dtcms.com/a/321257.html

相关文章:

  • 快速上手 Ollama:强大的开源语言模型框架
  • Docker的安装使用以及常见的网络问题
  • 数据库恢复技术:保障数据安全的关键
  • DeepSeek辅助编写的带缓存检查的数据库查询缓存系统
  • Odoo 18 → Odoo 19 功能改动对比表
  • 基于Web的交互式坐标系变换矩阵计算工具
  • 时间复杂度计算(以for循环为例)
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • 轻松实现浏览器自动化——AI浏览器自动化框架Stagehand
  • 力扣 hot100 Day69
  • 使用 PicGo 与 GitHub 搭建高效图床,并结合 Local Images Plus 备份原图
  • 杂谈 001 · VScode / Copilot 25.08 更新
  • 供电架构之供电构型分类
  • 浪漫沙迦2|浪漫沙加2 七英雄的复仇 送修改器(Romancing SaGa 2)免安装中文版
  • 机器视觉任务(目标检测、实例分割、姿态估计、多目标跟踪、单目标跟踪、图像分类、单目深度估计)常用算法及公开数据集分享
  • excel 导出
  • 【vue】Vue 重要基础知识清单
  • Numpy科学计算与数据分析:Numpy广播机制入门与实践
  • 使用FinTSB框架进行金融时间序列预测的完整指南
  • 算法提升之-启发式并查集
  • 剪映里面导入多张照片,p图后如何再导出多张照片?
  • VScode 文件标签栏多行显示
  • QML中显示二级界面的三种方式
  • 【Git】企业级使用
  • electron自定义国内镜像
  • 静电释放场景误报率↓78%!陌讯多模态融合算法在工业检测的落地优化
  • 【unity实战】用unity实现一个简易的战斗飞机控制器
  • BUG调试案例十七:ENC424J600以太网掉线问题案例
  • uniapp瀑布流最简单的实现方法
  • SonarQube 扫描多个微服务模块