zoukankan      html  css  js  c++  java
  • 界面设计与测试规范


      目前流行的界面风格有三种方式、多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。
    1、易用性:按钮名称应该易懂,用词准确,屏弃没楞两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。
    易用性细则:
    1)、完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。
    2)、完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。
    3)、按功能将界面划分局域块,用Frame框括起来,并要有功能说明或标题。
    4)、界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。
    5)、界面上首先应输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。 
    6)、同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。
    7)、分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab
    8)、默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作。
    9)、可写控件检测到非法输入后应给出说明并能自动获得焦点。
    10)、Tab键的顺序与控件排列顺序要一直,目前流行总体从上到下,同时行间从左到右的方式。
    11)、复选框和选项框按选择几率的高底而先后排列。
    12)、复选框和选项框要有默认选项,并支持Tab选择。
    13)、选项数相同时多用选项框而不用下拉列表框。
    14)、界面空间较小时使用下拉框而不用选项框。
    15)、选项数叫少时使用选项框,相反使用下拉列表框。
    16)、专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。


    2、规范性:通常界面设计都按Windows界面的规范来设计,即包含“菜单条、工具栏、工具厢、状态栏、滚动条、右键快捷菜单”的标准格式,可以说、界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工具厢。
    规范性细则:
    1)、常用菜单要有命令快捷方式。
    2)、完成相同或相近功能的菜单用横线隔开放在同一位置。
    3)、菜单前的图标能直观的代表要完成的操作。
    4)、菜单深度一般要求最多控制在三层以内。
    5)、工具栏要求可以根据用户的要求自己选择定制。
    6)、相同或相近功能的工具栏放在一起。
    7)、工具栏中的每一个按钮要有及时提示信息。
    8)、一条工具栏的长度最长不能超出屏幕宽度。
    9)、 工具栏的图标能直观的代表要完成的操作。
    10)、系统常用的工具栏设置默认放置位置。
    11)、工具栏太多时可以考虑使用工具厢。
    12)、工具厢要具有可增减性,由用户自己根据需求定制。
    13)、工具厢的默认总宽度不要超过屏幕宽度的1/5。
    14)、 状态条要能显示用户切实需要的信息,常用的有、
    目前的操作、系统状态、用户位置、用户信息、提示信息、错误信息等,如果某一操作需要的时间较长,还应该显示进度条和进程提示。
    15)、滚动条的长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息的位置和百分比。
    16)、状态条的高度以放置五好字为宜,滚动条的宽度比状态条的略窄。
    17)、菜单和工具条要有清楚的界限;菜单要求凸出显示,这样在移走工具条时仍有立体感。
    18)、菜单和状态条中通常使用5号字体。工具条一般比菜单要宽,但不要宽的太多,否则看起来很不协调。
    19)、右键快捷菜单采用与菜单相同的准则。


    3、帮助设施:系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方法。

    帮助设施细则。
    1)、帮助文档中的性能介绍与说明要与系统性能配套一致。(我们的系统帮助文档都是系统的祖先时期的说明,让人困惑)。
    2)、打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。
    3)、操作时要提供及时调用系统帮助的功能。常用F1。
    4)、在界面上调用帮助时应该能够及时定位到与该操作相对的帮助位置。也就是说帮助要有即时针对性。
    5)、最好提供目前流行的联机帮助格式或HTML帮助格式。
    6)、用户可以用关键词在帮助索引中搜索所要的帮助,当然也应该提供帮助主题词。
    7)、如果没有提供书面的帮助文档的话,最好有打印帮助的功能。
    8 )、在帮助中应该提供我们的技术支持方式,一旦用户难以自己解决可以方便的寻求新的帮助方式。


    4、合理性:屏幕对角线相交的位置是用户直视的地方,正上方四分之一处为易吸引用户注意力的位置,在放置窗体时要注意利用这两个位置。
    合理性细则。
    1)、父窗体或主窗体的中心位置应该在对角线焦点附近。
    2)、子窗体位置应该在主窗体的左上角或正中。
    3)、多个子窗体弹出时应该依次向右下方偏移,以显示窗体出标题为宜。
    4)、重要的命令按钮与使用较频繁的按钮要放在界面上注目的位置。
    5)、错误使用容易引起界面退出或关闭的按钮不应该放在易点位置。横排开头或最后与竖排最后为易点位置。
    6)、与正在进行的操作无关的按钮应该加以屏蔽(Windows中用灰色显示,没法使用该按钮)。
    7)、对可能造成数据无法恢复的操作必须提供确认信息,给用户放弃选择的机会。
    8)、非法的输入或操作应有足够的提示说明。
    9)、 对运行过程中出现问题而引起错误的地方要有提示,让用户明白错误出处,避免形成无限期的等待。
    10)、提示、警告、或错误说明应该清楚、明了、恰当。


    5、美观与协调性:界面应该大小适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。

    美观与协调性细则。
    1)、 长宽接近黄金点比例,切忌长宽比例失调、或宽度超过长度。
    2)、 布局要合理,不宜过于密集,也不能过于空旷,合理的利用空间。
    3)、 按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置。
    4)、 按钮的大小要与界面的大小和空间要协调。
    5)、 避免空旷的界面上放置很大的按钮。
    6)、 放置完控件后界面不应有很大的空缺位置。
    7)、 字体的大小要与界面的大小比例协调, 通常使用的字体中宋体9-12较为美观,很少使用超过12号的字体。
    8)、 前景与背景色搭配合理协调,反差不宜太大,最好少用深色,如大红、大绿等。常用色考虑使用Windows界面色调。
    9)、 如果使用其他颜色,主色要柔和,具有亲和力与磁力,坚决杜绝刺目的颜色。
    10)、 大型系统常用的主色有"#E1E1E1"、"#EFEFEF"、"#C0C0C0"等。
    11)、 界面风格要保持一致,字的大小、颜色、字体要相同,除非是需要艺术处理或有特殊要求的地方。
    12)、 如果窗体支持最小化和最大化或放大时,窗体上的控件也要随着窗体而缩放;切忌只放大窗体而忽略控件的缩放。
    13)、对于含有按钮的界面一般不应该支持缩放,即右上角只有关闭功能。
    14)、 通常父窗体支持缩放时,子窗体没有必要缩放。
    15)、如果能给用户提供自定义界面风格则更好,由用户自己选择颜色、字体等。


    6、菜单位置:菜单是界面上最重要的元素,菜单位置按照按功能来组织。
    菜单设测试细则:
    1)、菜单通常采用“常用--主要--次要--工具--帮助”的位置排列,符合流行的Windows风格。
    2)、常用的有“文件”、“编辑”,“查看”等,几乎每个系统都有这些选项,当然要根据不同的系统有所取舍。
    3)、下拉菜单要根据菜单选项的含义进行分组,并切按照一定的规则进行排列,用横线隔开。
    4)、 一组菜单的使用有先后要求或有向导作用时,应该按先后次序排列。
    5)、 没有顺序要求的菜单项按使用频率和重要性排列,常用的放在开头, 不常用的靠后放置;重要的放在开头,次要的放在后边。
    6)、 如果菜单选项较多,应该采用加长菜单的长度而减少深度的原则排列。
    7)、 菜单深度一般要求最多控制在三层以内。
    8)、 对常用的菜单要有快捷命令方式,组合原则见8。
    9)、对与进行的操作无关的菜单要用屏蔽的方式加以处理,如果采用动态加载方式——即只有需要的菜单才显示——最好。
    10)、菜单前的图标不宜太大,与字高保持一直最好。
    11)、主菜单的宽度要接近,字数不应多于四个,每个菜单的字数能相同最好。
    12)、主菜单数目不应太多,最好为单排布置。


    7、独特性:如果一味的遵循业界的界面标准,则会丧失自己的个性.在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。尤其在商业软件流通中有着很好的迁移默化的广告效用。
    1)、安装界面上应有单位介绍或产品介绍,并有自己的图标。
    2)、主界面,最好是大多数界面上要有公司图标。
    3)、登录界面上要有本产品的标志,同时包含公司图标。
    4)、帮助菜单的“关于”中应有版权和产品信息。
    5)、公司的系列产品要保持一直的界面风格,如背景色、字体、菜单排列方式、图标、安装过程、按钮用语等应该大体一致。


    8、快捷方式的组合
      在菜单及按钮中使用快捷键可以让喜欢使用键盘的用户操作得更快一些在西文Windows及其应用软件中快捷键的使用大多是一致的。 
    菜单中、
    1)、面向事务的组合有: 
    Ctrl-D 删除 ;Ctrl-F 寻找 ;Ctrl –H替换;Ctrl-I 插入 ;Ctrl-N 新记录 ;Ctrl-S 保存 Ctrl- O 打开。
    2)、列表: 
    Ctrl-R ,Ctrl-G定位;Ctrl-Tab下一分页窗口或反序浏览同一页面控件;。
    3)、编辑、
    Ctrl-A全选;Ctrl-C 拷贝;Ctrl-V 粘贴;Ctrl-X 剪切;Ctrl-Z撤消操作;Ctrl-Y恢复操作。
    4)文件操作:
    Ctrl-P 打印;Ctrl-W 关闭。
    5)、系统菜单:
    Alt-A文件;Alt-E编辑;Alt-T工具;Alt-W窗口;Alt-H帮助。
    6)、MS Windows保留键:
    Ctrl-Esc 任务列表 ;Ctrl-F4 关闭窗口; Alt-F4 结束应用;Alt-Tab 下一应用 ;Enter 缺省按钮/确认操作 ;Esc 取消按钮/取消操作 ;Shift-F1 上下文相关帮助 。
    按钮中:
    可以根据系统需要而调节,以下只是常用的组合。
    Alt-Y确定(是);Alt-C取消;Alt-N 否;Alt-D删除;Alt-Q退出;Alt-A添加;Alt-E编辑;Alt-B浏览;Alt-R读;Alt-W写。
    这些快捷键也可以作为开发中文应用软件的标准,但亦可使用汉语拼音的开头字母。


    9、安全性考虑:
      在界面上通过下列方式来控制出错几率,会大大减少系统因用户人为的错误引起的破坏。开发者应当尽量周全地考虑到各种可能发生的问题,使出错的可能降至最小。如应用出现保护性错误而退出系统,这种错误最容易使用户对软件失去信心。因为这意味着用户要中断思路,并费时费力地重新登录,而且已进行的操作也会因没有存盘而全部丢失。
    安全性细则:
    1)、最重要的是排除可能会使应用非正常中止的错误。
    2)、应当注意尽可能避免用户无意录入无效的数据。
    3)、采用相关控件限制用户输入值的种类。
    4)、当用户作出选择的可能性只有两个时,可以采用单选框。 
    5)、当选择的可能再多一些时,可以采用复选框,每一种选择都是有效的,用户不可能输入任何一种无效的选择。
    6)、当选项特别多时,可以采用列表框,下拉式列表框。
    7)、在一个应用系统中,开发者应当避免用户作出未经授权或没有意义的操作。
    8)、对可能引起致命错误或系统出错的输入字符或动作要加限制或屏蔽。
    9)、对可能发生严重后果的操作要有补救措施。通过补救措施用户可以回到原来的正确状态。
    10)、对一些特殊符号的输入、与系统使用的符号相冲突的字符等进行判断并阻止用户输入该字符。
    11)、对错误操作最好支持可逆性处理,如取消系列操作。
    12)、在输入有效性字符之前应该阻止用户进行只有输入之后才可进行的操作。
    13)、对可能造成等待时间较长的操作应该提供取消功能。
    14)、特殊字符常有;;’”><,`‘、“[”{、|}]+=)-(_*&&^%$#@!~,.。?/还有空格。
    15)、与系统采用的保留字符冲突的要加以限制。
    16)、在读入用户所输入的信息时,根据需要选择是否去掉前后空格。
    17)、有些读入数据库的字段不支持中间有空格,但用户切实需要输入中间空格,这时要在程序中加以处理。


    10、多窗口的应用与系统资源
    设计良好的软件不仅要有完备的功能,而且要尽可能的占用最底限度的资源。
    1)、 在多窗口系统中,有些界面要求必须保持在最顶层,避免用户在打开多个窗口时,不停的切换甚至最小化其他窗口来显示该窗口。
    2)、在主界面载入完毕后自动卸出内存,让出所占用的WINDOWS系统资源。
    3)、关闭所有窗体,系统退出后要释放所占的所有系统资源 ,除非是需要后台运行的系统。
    4)、尽量防止对系统的独占使用。


    四、图形用户界面设计什么是优秀的图形用户界面?说到底一句话、一个优秀的用户界面即是一个直观的、对用户透明的界面、用户在首次接触了这个软件后就觉得一目了然,不需要多少培训就可以方便地上手使用。说起来很简单,可是在实际开发中,真正能够做到这一点却很不容易。对于Windows的开发人员,微软公司出版的《窗口界面、应用设计指南》(《The Windows Interface、 An Application Design Guide (1992)》)是在微机平台上界面设计的公认标准。尽管随着技术的不断进步,会不断地有新的窗口控件出现,而导致其中很多标准增加或修改。但是一般来讲,每一个程序员都会认识到,在他们的编程过程中应当遵循某些最基本的标准,尽管他们对这些标准中某些部分还很不熟悉,或者没有被用到。本文将论述这样一些已被广大程序员和用户普便接受的用户界面设计的原则和规范。

      1.用户需求对于长期从事mainframe结构、在字符界面下进行开发的程序员来讲,进入Windows的客户/服务器环境的最大障碍是,应当认识到在所编写的软件中用户是所有软件处理的中心,而不应由应用程序来决定处理过程,这种思想与PowerBuilder中事件驱动的编程方式是相对应的。一个好的图形用户界面(以下简称GUI)应当是由用户来控制应用如何工作,如何响应,而不是由程序员按自己的意愿把操作流程强加给用户。当编写事件驱动程序时,应为每一个动作或事件指定一个且唯一的响应程序。触发这些事件、使这些响应程序执行的源动力不是应用,而是用户。例如笔者使用MODEM拨号上网时,当线路接通后,屏幕将依次出现下列信息,提示用户按指定顺序输入登录信息、Annex Command Line Interpreter
    *Copyright(C) 1988,1995 Xylogics,Inc.
    Checking authorization, Please wait...
    Annex username、 sjhzyz
    Annex password、
    Permission granted
    annex、 ppp
    Switching to PPP.
      这就是一个典型的基于字符界面的应用软件,登录的全部过程都是由程序来决定的,提示用户输入内容。而与此相对比的是,ISP所提供的Internet In A Box软件在电子邮件管理一项中提供了另一个用户登录窗口、这就是一个基于GUI的应用,在这个窗口中,用户成为软件处理的主人,用户可以根据自己的意愿决定这些信息的输入顺序,也可以任意修改以输入的内容,直到点击OK按钮后,才真正触发软件登录远端的服务器,或者是点击Cancel取消登录操作。当然在某些应用中可能会有某一部分的处理流程是固定的,用户必须按照指定的顺序输入操作信息。为了使用户在操作中得到引导,微软已经在它的软件中加入了向导(Wizard)的概念,本文将在后面的内容中讨论如何实现这一概念。在系统中对用户的操作及时地提供反馈信息是十分重要的,这些反馈信息也许只是像警告铃或将鼠标显示成沙漏等一样不起眼的反应,但是却能使用户树立信心,使他感到他仍在控制软件,而没有死机。

      2.提供反馈的几种技术手段微帮助。它是MDI(多文档界面)框下面的状态条中的文字。窗口底部的微帮助一般有两个作用、一是在用户选择菜单项或其他窗口控件时,显示更多的文字信息来解释或提示用户所要进行的操作是什么,另一个用途是系统在处理进程中显示正在进行的工作状态,以使用户了解系统的处理进度,从而免去死机的担心。

      工具条的帮助。当鼠标停留在某一个工具栏上时,会出现一个弹出式信息框,在PowerBuilder 4.0以上的版本中,缺省显示的是工具栏文字。也可以用菜单画笔在工具栏文字之后加一个逗号,加入一段更长的文字来定义一个不同的工具栏说明。例如、键入撏顺觯脭,我们将看到在带文字的工具栏图标上显示的文字是撏顺鰯,而弹出的信息框显示的是摴乇沼τ脭。

      声音提示。在用户可能进行破坏性操作时,用声音及时提出警告是必要的,但是我们不能滥用,因为当用户无法正确操作软件或做了不希望做的事情时,听到警告声反而会更加烦恼,因此使用这种反馈方法时要慎用。此外在一个长处理的结束时使用声音反馈(如警告声或小段悦音)也是必要的。

      使用反馈的场合。在客户/服务器环境下用户最不能忍受的是系统反应速度慢,而在实际的应用中我们会经常遇到计算机需要比较长的时间执行一个或一批操作。在这种情况下,我们应加入反馈,让用户了解应用正在做什么。比如、在需等待时间较短(0-10秒)的情况下应将鼠标显示成为沙漏,可调用函数SetPointer( HourGlass! ) 来实现这一功能;在处理需10到18秒时,由微帮助来显示处理进度;当需18秒以上时,要显示这个处理窗口,或显示进度条;当一个长时间的处理完成时应发出一个提示警告声如beep(1),这样用户不必总看着屏幕。

      3.规范性和一致性我们经常使用的图形用户界面,如Windows、Mac、Xwindow等,都提供了一套标准的控件,经常使用计算机的用户可能已十分了解这些标准控件的用途,例如一个多选框在用户用鼠标点击后会改变其状态,当按动滚动条上的箭头时,屏幕将发生滚动;当点击单选框时一般系统不会弹出一个对话框,如果不做诸如点击按钮或选择菜单等类似的操作,系统也不会进入到一个什么新的操作进程等等。在用户用过了大量应用软件后,用户就会对常见窗口的操作建立起一些基本概念,当他进入一个从未用过的软件时,不会束手无策,而是会因该新软件与已用过的某些应用相似,从而对它的使用有一定认识。这种认识程度越高,说明这一软件越直观,也就是软件的用户界面设计得越成功。
      因此每一个程序员都应当意识到他自己所开发的应用与其他程序员开发的应用都是在同一平台上,使用的也是相同的窗口控件,用户在其他应用上学到的对软件的操作方法越多,可运用在新开发的应用上的也就越多。如果使用标准的方法,用户会感到越方便,尽管他们并不一定能意识到方便的原因所在。作为一个程序员首先应当了解窗口中不同控件的作用,不少PowerBuilder的程序员都在DOS或Mainframe的字符终端上开发过应用软件,而对Windows的图形界面却比较陌生。因此作为程序员熟悉使用怎样的控件来完成怎样的功能是至关重要的。当一个程序员用错了所应使用的控件时,应用也不可能是很直观的。
      保持一致是使应用直观的重要环关。一致性既包括使用标准的控件,也是指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致。下面是显示信息时应当遵循的一致性标准、
    * 标签提示、字体为加重、宋体、黑色、灰底或透明、无边框。右对齐并带有冒号结束。如撔彰簲;
    * 日期、正常字体、宋体、白底黑字,3-D lowered;
    * 对齐方法、
    a. 左对齐、一般文字、单个数字、日期等。
    b. 右对齐、数字、时间、日期加时间。
      对于这些信息的排列大部分都是由程序员来控制的,上述显示风格也仅供参考,更为重要的是程序员应当注意在同一软件中表现形式的一致性。如果在同一个应用中,这些信息的表现方式不一致,会使得用户分散注意力,因而影响这一软件的使用。
      遵循了上述一致性原则后,还应注意在一个窗口内部所有控件的布局和信息组织的艺术性,使得用户界面美观。在一个窗口中按tab键,移动聚焦的顺序不能杂乱无章,在字符界面下,如DOS中,tab order的顺序是先从左至右,后从上至下,而在Windows中的顺序则一般应先从上至下再从左至右。一屏中首先应输入的和重要信息的控件在tab顺序中应当靠前,位置也应放在窗口上部较醒目的位置。
      MS Windows应用中应当遵循的规则还有一条是可不用鼠标的原则、应用中的每一个功能只用键盘也应当可以完成,也就是说在设计的应用中还应加入一些必要的按钮和菜单项。但是,许多鼠标的操作,如双击、拖动对象等,并不能简单地用键盘来模拟即可实现,例如在一个列表框中用鼠标双击其中一项可以表示选中该项内容;为了用键盘也能实现这一功能,必须在窗口中定义一个表示选中的按钮,以作为实现双击功能的替代。又如在一个窗口中有两个数据窗口,可以用鼠标从一个数据窗口中将一项拖出然后放到另一个中;如果只用键盘,就应当在菜单中设置拷贝或移动的菜单项。
      在菜单项中使用快捷键可以让使用键盘的用户操作更快一些,在西文Windows及其应用软件中快捷键的使用大多是一致的。
    面向事务的:
    * Ctrl-D删除
    * Ctrl-F寻找
    * Ctrl-I插入
    * Ctrl-N新记录
    * Ctrl-S保存
    查询/列表:
    * Ctrl-O
    * Ctrl-R
    其它:* Ctrl-C拷贝
    * Ctrl-H帮助
    * Ctrl-P打印
    * Ctrl-V粘贴
    * Ctrl-W关闭
    * Ctrl-X剪切
    MSWindows保留键:* Ctrl-Tab下一窗口
    * Ctrl-Esc任务列表
    * Ctrl-F4关闭窗口
    * Alt-F4结束应用
    * Alt-Tab下一应用
    * Enter缺省按钮/确认操作
    * Esc取消按钮/取消操作
    * Shift-F1上下文相关帮助
    这些快捷键也可以作为开发中文应用软件的标准,但使用汉语拼音的开头字母亦可。
      4.安全的应用软件在应用软件的开发中,重要的一个因素是要给用户提供一个安全的工作环境,在软件中不应藏有任何地雷,在用户将要作破坏性的且难以恢复的操作时,系统应当给以应有的提示。用户只有充分相信软件是安全的,才会乐于使用它,才会放心地去探索这一软件所提供的新功能,才能更高效地使用它。

    什么是安全的应用
      首先最重要的,但也是最不容易实现的是排除可能会使应用非正常中止的错误。在任何情况下,最终用户都不应看到应用出现保护性错误而退出系统,这种错误最容易使用户对软件失去信心。因为这意味着用户要中断思路,并费时费力地重新登录,而且已进行的操作也会因没有存盘而全部丢失。当然造成系统中止的原因很多,可能是网络、硬件、系统软件或是PowerBuilder本身的问题,但是开发者应当尽量周全地考虑到各种可能发生的问题,使出错的可能降至最小。特别是使用PowerBuilder开发的软件的确经常会出现保护性错误,但是开发人员却不能因此怨天尤人,而是要多做测试,选择最为保险的方法实现相同的功能。
      此外,在使用PowerBuilder编程时,还有一种常见的导致非正常中止的情况是由于程序员自己的原因造成的,这就是变量联接滞后问题,即在编译时定义一个有效的对象类,但是在运行时却没有创建它的实例或这个实例已释放(destroy);这时如有一段代码引用到这一对象,系统却无法在内存中找到它的实例,而导致中止。因此,在引用变量时,应当首先检查它是否存在实例,例如在一个窗口中引用了另外一个窗口的对象,就应首先检测它在执行代码之前是否已经创建了一个实例。
    在下面的例子中,win_A这一窗口对象可能在代码执行时并没有创建,因此我们就应当在执行前用
    IsValid函数来检查其是否有效、
    IF IsValid(win_A) THEN
    Close(win_A)
    ENDIF
    使用数据窗口中应注意的问题
      PowerBuilder的代码将引用很多数据窗口中的列,指代这一列的方法可以是列名也可以是列号。列号是指这一个数据窗口在执行Select语句中排列的顺序号,如果习惯于使用列号引用某列,要注意可能在后来会在数据窗口的select语句中移动或删除某些列,如果不能想起所有引用过这个数据窗口的代码,这时就有可能出现数据类型不匹配的错误。使用列名来引用则可以避免这类错误,但是这里使用的字符串,在编译时PowerBuilder并不验证引用得是否正确,只有在运行时,系统才可能发现使用的字符串在数据窗口中不存在,并提示错误,退出应用。这种错误一般比较难以发现,减小这种出错的方法是尽可能使用Object Browses来剪贴,以减小录入错误。
      安全的环境还应当注意尽可能避免用户无意录入无效的数据。在GUI下,有许多控件可以以十分友好的方式限制用户输入值的种类。例如一个多选框只有两种值的选择,所以当用户作出选择的可能性只有两个时,可以采用这一控件,免去了另外编程进行输入有效性验证的麻烦。当选择的可能再多一些时,可以采用单选钮,每一种选择都是有效的,用户不可能输入任何一种无效的选择。同理采用ListBox、DropDownDataWindow、DropDownListBox等标准控件都可以有效地避免用户无效输入,而不必另外编程来进行有效性验证,同时可避免用户在某一个输入点反复作输入尝试而耽误很多时间。
      在一个应用系统中,开发者应当避免用户作出未经授权或没有意义的操作,在PowerBuilder中菜单和按钮等对象有Enabled和Visible的属性,因此对用户未授权或无法进行的操作应将相应对象的属性改为Disabled和Invisible。例如在一个窗口中有一个数据输入窗口和一个删除按钮。在编辑一条新记录时,删除按钮是无效的,因此,这个按钮的属性应为Disable。当窗口的状态发生变化时,应当随时改变控件或菜单项的这两个属性。
      当对象无效时,使用该控件的Disable属性还是Invisible属性是个人习惯问题。一般地,在一个菜单项或控件永远是无效时应当使用Invisible属性,例如一个用户打开一个有删除键的窗口,但是这个用户没有删除权限,那么这个按钮就应当是不可见的;而如果用户有权删除,只是在当前状态下,无法执行删除功能,如编辑新记录,这时该按钮应当设置成Disable。
      数据窗口是一个单一的封装的对象,当不希望用户输入某一列时,不能将整个数据窗口的属性设成Disable,而是应当采用其它的方法,一般来讲,有以下三种方式:将该列的Tab Order设为0,这样用户将无法按tab键或用鼠标聚焦在该列上。如果采用这一方法,应当将其原有的TabOrder值存储在一个实例变量中,以便在需要时恢复。将列的Display Only或Protect属性设为真。这两个属性设为真时,可以使该列得以聚焦(只要tab order不为0),用户还可以在该列上选中一些文字及水平、垂直滚屏,只是这一列的值不能作修改。如果数据库中的某列大篇幅的多行文字只能显示而不能修改时,可以采用这一方法,但应注意该列的tab order不能为0,这样保留用户在必要时对其中的部分内容进行拷贝的权利。²将该列的Visible属性设为假。这样该列自动将tab order设为0而无法聚焦。当这一值再改为真时,tab order的值仍能恢复。这一方法的缺点是在改变属性时屏幕会出现闪烁,因此这一方法不能滥用。 ²将系统出现的错误提示信息尽可能淡化处理是使得用户有安全感的重要因素。开发者应当预见到某些可能出现的错误,尽可能避免系统缺省的错误信息出现,一方面由于这些信息本身没有汉化,而且过于专业化,用户不易理解,另一方面也容易使用户以为自己操作错误,造成不安全感。例如用户可能会在输入数据时违反了数据库的约束条件,开发者应当在PowerBuilder发出SQL语句向数据库提交前对此进行必要的有效性检验。当然使用下拉列表框等方法可以实现外键约束。如果用户直接从键盘输入,须在对数据作update之前先验证其有效性。数据库中有些列有非空的约束,如果用户对某些列还没有填入值时就提交数据库会也返回错误,因此在开发者设计窗口时,应对数据库的非空约束等条件先作一预览,不要让从DBMS发出的错误信息直接显示给用户。另外在使用数据窗口前,应确保每一列都在update选项中被选中(在数据窗口画笔菜单的Rows|Update中),否则系统在DataWindow做Update和Insert操作时,将不包括该列。PowerBuilder中,数据窗口画笔里列的Required Field属性是一个界面很不友好的属性。一旦聚焦在该列上,没有输入任何东西就离开或者提交数据窗口时该列没有值,系统都不允许。即使不知该输入什么,想查询一下其他窗口时,也要先在该列中写入一些东西,才能关团这个窗口,因此建议一般不采用这一属性,而是要通过编程来做检查,可以把这段代码放在UpdateStart事件中,这一事件在执行update()函数时触发。
      在用户要作出不易恢复的操作前,应对用户作适当的提示,这样在用户打算探索系统新功能时没有后顾之忧。例如用户不经意下删除一些记录要恢复它们是困难的,因此在用户删除前,出一个提示窗口等。在系统修改了记录却没有存盘就退出之前,应在CloseQuery事件提示等信息。

  • 相关阅读:
    三级联动(在YII框架中)
    用composer安装Yii
    在apache中设置访问目录后进入的默认页面为index.php
    php mb_convert_encoding的使用
    采集数据和memchche的存储使用,分页展示
    php操作Memcache
    前端页面卡顿?或是DOM操作惹的祸,需优化代码
    windows mongodb 安装
    浅谈WebSocket
    使用Spring MVC HandlerExceptionResolver处理异常
  • 原文地址:https://www.cnblogs.com/myc618/p/4635035.html
Copyright © 2011-2022 走看看