可重用MIS用户接口模块的设计

发布者:会弹琴的鲸鱼3312最新更新时间:2006-08-30 来源: E代电子关键字:控件  字段  预览  脚本 手机看文章 扫描二维码
随时随地手机看文章

  界面是系统提供给用户的第一感觉,不同开发者制作的界面风格有很大的差异,同一人在不同时间也具有随意性。因此,无论个人独自开发系统还是团队作业,都要对界面进行整体的规划。

  制作统一界面的一般方法是具体而强行的规定,本文依据PB开发的经验,实现了MIS系统中窗口和菜单的整体继承框架,并对其中数据校验结果的中文提示方法、打印预览、用户定制查询和数据窗口的重复使用技术等进行了比较详细的研究,有效地解决了界面设计中统一性和特殊需要之间的矛盾。

  此框架定义的祖先窗口独立于特定系统,可以为不同系统所使用而不用做任何修改,极大地提高了系统的开发效率和健壮性。

1 统一功能的提取
  MIS系统需要实现大量的基本功能,如插入、提交、翻页等,从权限控制的角度,有读权限、写权限和部分写权限之分,体现在MIS系统设计中,就是查询权限和录入权限的区别。常用的操纵数据的命令如表1所示。

  从中不难看出,有些命令适用于查询,而另一些则适用于录入。为此,可将窗口分为2个类型:一种具有数据录入的功能,而另外一种只是查询而已。用于录入的窗口中可以设置与录入所需功能命令相对应的菜单项和工具条,用于查询的窗口可携带适合查询操作的菜单项和工具条。

  工具条显示在屏幕的上方,依据以上分析,完成编辑录入功能的窗口所带的菜单中可含15个工具按钮,如图1所示。

  其功能从左到右依次为:
  排序、通用查询、打印、打印预览、导入、导出、检索、新增、删除、首记录、前移、后移、末记录、提交、关闭。
  查询所对应的功能为:通用查询、打印、打印预览、导出、首记录、前移、后移、末记录、日期段输入、日期输入、关闭;其图形外观与上面的编辑工具条类似,此处略去。

2 实现
  在窗口上定义一个DataWindows控件dw_1,在窗口原有事件的基础上定义表1所示的用户自定义事件来操纵dw_1中的数据对象。具体的数据对象在窗口打开时指定。

  在窗口所挂的菜单中设置触发窗口自定义事件所需的子菜单和脚本,并给这些子菜单设置相应的工具条图标。

  下面的程序段是窗口所挂排序菜单的对应脚本,当图1所示最左边的排序按钮被触发时运行。
 
  工具条上的其他按钮不需要设置弹起和按下状态,只需要一条触发语句就够了。系统运行时,用户通过点击工具条上的按钮完成对应菜单项脚本的执行,菜单项中的脚本进一步触发承载此菜单的窗口中的用户子定义事件的执行。

  对一些简单的输入、查询操作,以上事件的定义和工具条的设置基本上满足了应用要求。大多数窗口中的数据操作围绕一个DataWindows进行,增加的DataWindows仅用于限制和过滤该中心DataWindows,因此,虽涉及多个DataWindows或其他相关控件,除操作更复杂些外,此基本功能设置也足于解决问题。当窗口上有多个DataWindows的数据需要维护时,可覆盖祖先事件的脚本,并扩展祖先脚本使其符合新的功能要求。


3 利用继承机制实现通用功能的一致性
  由于以上窗口实现的基本功能在系统中普遍存在,为了减少编程量,提高窗口界面的一致性,可用上面介绍的窗口为祖先,让其他负责具体事务的窗口来继承。这样,所有通过继承产生的子窗口将不再书写类似的代码。系统在初始阶段集中精力编制这些通用功能,可以保证功能实现得更加完善。

  dw_1控件中数据对象的设置在每个子孙窗口的Open事件中完成,这样就保重了各窗口所操作的数据是不同的,dw_1控件的大小可视具体的要求进行调整。

  按PB中多文档窗口的操作要求,每一个窗口都有自己的菜单和工具条,为了使菜单保持整体的稳定,即窗口切换时基本菜单功能保持外观不变,将完成基本功能的模块结构定义为祖先菜单,通过继承生成查询和编辑2个子孙菜单,子孙菜单中分别附加了触发相关窗口事件所需的菜单项、工具条和脚本。

  根据窗口功能的不同,通过继承产生的窗口可选择挂2个子孙菜单之一,这样,特定窗口需要做的只是添加工具条中没有的功能和控件。只要统一定义了窗口和数据窗口的背景色以及字体的风格、大小和颜色,即使各窗口由不同的人开发、窗口的复杂程度不同,窗口的风格也基本一致。为保证祖先窗口的事件脚本能操纵每一个子孙窗口的数据,只需在程序中将要应用的窗口名改为代词this即可。工具条的使用,不但简化了窗口上控件的数目、为数据区留下了更大的显示空间,而且保证了界面风格的一致。

  在实际操作的过程中,当工具条预定义的功能不适合一个特定的窗口应用时,系统可视具体情况对祖先脚本进行不同的覆盖处理,例如,有些人只有修改权限而没有插入权,系统会给予必要的提示;有些窗口比较复杂,涉及多个DataWindows的提交,则系统首先覆盖继承来的祖先的提交事件脚本,再对提交事件进行必要的、比祖先事件更复杂的处理。如果不允许工具条中的某个功能使用,只需在Open事件中设置他的属性为Disable即可。

  为了使用户对当前DataWindows中的记录总数有个总体的把握,系统在祖先窗口中特定义一个单行编辑器sle_1,用于提示总记录数和当前记录数。此功能的设置对FREE界面格式的DataWindows用户尤其有用。实现方法是,在DataWindows的
 
4 错误俘获及例外处理
  对于错误的命令和输入要提供反馈信息,给出正确用法。这一功能虽然不体现在工具条中,但具有通用性,必须由祖先窗口来实现。可以俘获的例外很多,但MIS涉及的主要是数据库错误,窗口上的其他控件的错误可在程序调试时纠正。

  在数据提交时,DBMS要进行数据完整性的检验,常出现的错误有:非空字段没有输入值,这时,PB将提示一段出错信息。遗憾的是,该信息以英文方式显示,用户出错是难免的,怎么用中文实现出错提示呢?

  假如我们在DataWindows中需录入xqrq(需求日期),该字段由非null约束,若DataWindows控件的Dberror事件中无脚本,而用户又忘记了录入此项数据,则提交数据时系统将以英文显示出错信息:
 

  第一句指出出错的位置,最后一句为一般性说明。

  当然,数据提交前可以用程序对所有内容进行验证,但这种解决办法看似简单,实现是很麻烦的,需要逐行对各字段可能的错误进行分析。实际上,当提交失败时,DataWindows控件的Dberror事件首先被触发,并传递5个参数,分别为:

  sqldbcode(错误代码),sqlerrtext(错误提示),sqlsyntax(出错的语句),buffer(),row(出错行号)。

  因此,可采用以下解决途径:
  在DataWindows控件的Dberror事件中写脚本:
  gf_dbms_error(dw_1,sqldbcode,sqlerrtext,sqlsyntax,row)

  其中gf_dbms_error为自定义的专门处理数据库出错信息的全局函数,其基本思路是:根据sqldbcode确定错误类型,然后从sqlerrtext提示信息中分解出字段名等信息段,根据不同的错误类型,重新组合并显示在显示器上。当然,若字段名为英文字母,还需将字段名转换为注释(一般为中文)。

  例如:针对以上提交所碰到的问题,系统提示如图2所示。

5 打印预览的实现技术
  打印预览是Windows应用提供给用户自主进行打印界面设置的一个接口,实现的基本原理是系统根据用户需求对需预览的DataWindows的各项默认参数进行修改,由于打印预览结束后系统还需返回到原状态,为此,系统不能对原DataWindows进行直接操作,又由于此功能的普遍使用性,在实现上系统将此功能安排在祖先窗口上,由各菜单来触发该功能的执行,由工具条来具体实施。

  实现的关键是怎么将要打印预览的数据传递给用于打印预览的子程序,解决此问题的方法一般有两种:

  (1)将需打印的DataWindows中的数据对象赋予打印预览窗口中的DataWindows控件的数据对象,将需打印的DataWindows控件中的数据复制到Windows的剪贴板,再从剪贴板上将数据复制到打印预览窗口中的DataWindows控件中,最后完成对窗口中各项参数的设定。

  许多论文中提供了这种方法的实现,PB自带的一个示例也是这个原理。但应用中存在以下2个主要的缺陷:

  首先,若需预览的DataWindows中带有下拉子DataWindows,则下拉子DataWindows无法实现自动转换,即显示出来的是内部存储值而不是用户应该看到的显示值,因为拷贝过去的是内部存储值,从而让用户感到莫名其妙。为解决此问题,需重新构造各带下拉子DataWindows的DataWindows的表的关联关系,涉及到DataWindows中的所有子DataWindows,实现起来工作量和难度均较大,也失去了这一下拉子46DataWindows工具带来的设计便利;第二个问题是复合报表无法实现预览,复合报表是一个将多个DataWindows合成为一个DataWindows的技术。因此,此方法并不是一个实用的实现,只能用于最简单的场合。

  (2)设置一个全局的DataWindows控件变量,让该DataWindows变量共享要进行打印预览的DataWindows控件,然后对该全局的DataWindows控件变量进行用户定制设置,则以上问题全部解决。图3是此思路的具体实现,数据窗口上面一行的控制命令分别为:大小缩放、页码、上边距、左边距、下边距、右边距的直接输入和点击按钮式输入,最右边提供的是标尺的选择。该窗口自带菜单和工具条,不受继承机制的限制,工具条中提供了打印等按钮。

6 通用查询技术
  对常用的查询,我们可逐一定制,但定制的查询缺乏灵活性,考虑到定制的查询并不能完全满足用户的实际需要,为此系统可定义通用查询,并将他列入工具条中,以便随时访问,以适应特殊的需求。

  实现技术:从数据库的系统表中提取表名、显示所需的字段名,以及用于构造逻辑关系的字段名;构造查询所需的逻辑表达式,并按此逻辑关系检索数据,确认后可调用打印预览来显示。由于有些数据库不支持汉字表名和字段名,使得表名和字段名需用英文字符书写,为此真正使用的应该是表和字段的注释。实现的另一个关键问题是动态SQL的构造,比较复杂,在此不一一叙述,具体结果如图4所示,图3中显示的预览结果就是由此方法构造。

  通用查询虽然提高了系统的灵活性,但操作起来比较复杂,尤其是构造复杂逻辑表达式需要专门知识,且用户必须非常熟悉数据库的结构。以上实现只能进行单表查询,因此,仅做辅助性使用。

7  
  本文提供的窗口和菜单继承机制保证了用户界面的整体风格,通过仔细地设计工具条和用户自定义事件,使窗口功能进一步完善,所需控件数目进一步变少。当然,要实现一致的用户界面,开发者还必须进行相应的统一规定,如字体风格和颜色的统一设定、显示分辨率设定等等。在项目开发的早期还需定义编辑格式以规范共用的数据字典、定义显示格式以控制用户数据的显示方式,从每一个细节上来保证系统风格的一致。

  另外,以上实现的通用界面的祖先窗口可以被所有MIS所使用。

参考文献
[1]http://www.sybase.com/products/power builder/index.html
[2]http://lin2000.myrice.com/
[3]晓通网络数据库研究所.PowerBuilder 6.0/6.5开发与参考手册[M].呼和浩特:内蒙古人民出版社,1999.

关键字:控件  字段  预览  脚本 引用地址:可重用MIS用户接口模块的设计

上一篇:32段LCD驱动器AY0438及其与单片机的接口设计
下一篇:单片机无线串行接口电路设计

推荐阅读最新更新时间:2024-05-13 18:14

苹果iOS/iPadOS 15.6开发者预览版Beta 2发布
苹果今日向 iPhone 和 iPad 用户推送了 iOS / iPadOS 15.6 开发者预览版 Beta 2 更新(内部版本号:19G5037d),本次更新距离上次发布隔了 13 天。   苹果官方依然只写了修复 Bug 和提升性能,开发者网站也没有提到更新内容,IT之家小伙伴们有什么新的发现可以通过投稿、评论等方式告诉我们。   昨日,有部分IT之家小伙伴发现,iOS 15.5 正式版的时间与地点服务偷跑了大量流量,耗费流量几百 MB,几个 GB,有的网友甚至是每天多达几个 GB,目前尚不清楚是否在该版本进行了修复。   据 Tech 星球获得的回应,苹果高级产品专家表示,已经接到过同样情况的反馈,如果是软件方面
[手机便携]
苹果iOS/iPadOS 15.6开发者<font color='red'>预览</font>版Beta 2发布
苹果 iOS 14.3/iPadOS 14.3 RC 候选预览版更新内容大全解密
苹果今天发布了 iOS 14.3/iPadOS 14.3 RC 候选版本,具体版本号是 18C65,现已向开发者和公测用户开放下载。   IT之家获悉,iOS 14.3/iPadOS 14.3 RC 候选版本带来了包括对 Apple Fitness + 和 AirPods Max 支持。该版本也为 iPhone 12 Pro 带来了 Apple ProRAW 照片格式的能力支持。另外针对 App Store 隐私信息保护进行了升级,另外还为 iPhone 带来了其他特性和 Bug 修复等等。   iOS 14.3 包括对 iPhone 12 Pro 和 iPhone 12 Pro Max 用户新的 ProRAW 照片
[手机便携]
tvOS 15.4开发者预览版Beta 5发布:Apple TV支持专属Wi-Fi网络
苹果今天面向开发者发布了 tvOS 15.4 Beta 4 系统更新,具体版本号为 19L5440a,用于测试,该软件是在苹果发布第三个 tvOS 15.4 测试版一周后推出的。   开发人员可以通过使用 Xcode 将配置文件下载到 Apple TV 上,下载新的 tvOS 15.4 测试版。   tvOS 15.4 增加了对专属 Wi-Fi 网络的支持,这意味着可以用 iPhone 或 iPad 将 Apple TV 连接到需要额外登录步骤的网络,例如在酒店房间。   该更新在视频播放器中直接引入了“下一个”队列,使你在看电视时更容易从一个节目跳到另一个节目。它可以让你选择“下一个”队列,而不必回到主屏幕。   tv
[手机便携]
iOS 11.3预览释出 新增8大功能
Apple今天公布iOS 11.3预览8大功能,包括全新扩增实境体验、全新Animoji讯息、商务聊天、显示电池健康状态、全新健康记录功能、音乐录像带串流、 HomeKit软件认证新方式、进阶行动地点支持。 苹果公司(Apple)今天在官网宣布,即日起iOSDeveloper Program的成员可于developer.apple.com取得iOS 11.3的开发人员预览版, 而公开的beta预览稍后将可于beta.apple.com取得。 iOS 11.3将于今年春季以免额外付费的软件更新形式,提供iPhone 5s与后续机种、所有iPad Air与iPadPro机种、第5代iPad、iPad mini 2与后续机种,以及第6代
[手机便携]
芯片设计:modelsim do脚本
以下其实是一个tcl语法的脚本,使用了modelsim的命令。 提供4个命令:sim, re, q, clear.功能如下: sim: 刚开始仿真时,建立库、映射库、编译、仿真。 asim: 和sim功能基本一致,但假如了SVA断言选项。 re: 用于重复调试,前提是你已经将波形文件wave.do存好,re会自动调用,自动重启仿真。 q : 推出仿真。 clear: 清屏。 proc sim {} { #如果目录中已经存在work文件夹,就不再新建库文件夹。 if {! } { vlib work } #将逻辑库映射到实际库文件夹work下
[单片机]
Android 12功能预览
近日,Google已经向Pixel设备发布了最新一代安卓系统安卓12的第一个开发者预览版。   安卓12将会带来一个全新的、基于壁纸的主题系统,这能够大大提高安卓系统的颜值。   据悉,安卓12的这个全新壁纸主题系统,当前有以下要素。   1、开发者已经可以在安卓12的第一个开发者预览版中,开启这个新的壁纸主题系统;   2、新特性可以让安卓系统根据壁纸的主体颜色,自动改变整体的视觉方案;   3、这可能不会总得出最理想的效果,但仍然非常打动人心。   当前,开发人员kdrag0n已经在安卓12开发者预览版中打开了这个新特性,我们可以从下面的截图中,很清楚地看到安卓12基于壁纸的主题系统如何运作。   安卓12的主题
[手机便携]
苹果tvOS 15.2 RC预览版发布了
昨天,苹果发布了包括 iOS 15.2、macOS 12.1、watchOS 8.3 在内的多个 RC 预览版系统更新。   苹果今天向开发者发布了 tvOS 15.2 更新的 RC 预览版本,具体版本号是 19K53,该软件是在 Beta 4 测试版一周后,在 tvOS 15.1 发布一个多月后发布的,此前更新引入了 SharePlay 支持。   IT之家获悉,开发人员可以通过使用 Xcode 将配置文件下载到 Apple TV 上,下载新的 tvOS 15.2 测试版。   tvOS 的更新通常规模不大,重点是错误修复和改进,而不是面向外部的重大变化。目前还没有关于 tvOS 15.2 更新内容的消息。   App
[手机便携]
TQ2440国嵌学院gboot-链接器脚本
国嵌学院TQ2440开发板gboot设计-链接器脚本设计 代码如下:(程序中请不要加 //注释 ) OUTPUT_ARCH(arm) //指明输出格式 ENTRY(_start) //指明程序的入口 SECTIONS { . = 0x30008000; //设定程序的起始地址,. 代表起始地址 . = ALIGN(4); //设定4字节的对齐 .text : //代码段 { start.o (.text) //启动文件的代码段 *(.text)
[单片机]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved