转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
PowerBuilder应用开发系列讲座(40)         ★★★★

PowerBuilder应用开发系列讲座(40)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:747 更新时间:2009/4/22 22:54:23
p align="center">图形用户界面设计(续)

规范性和一致性

  我们经常使用的图形用户界面,如Windows、Mac、Xwindow等,都提供了一套标准的控件,经常使用计算机的用户可能已十分了解这些标准控件的用途,例如一个多选框在用户用鼠标点击后会改变其状态,当按动滚动条上的箭头时,屏幕将发生滚动;当点击单选框时一般系统不会弹出一个对话框,如果不做诸如点击按钮或选择菜单等类似的操作,系统也不会进入到一个什么新的操作进程等等。在用户用过了大量应用软件后,用户就会对常见窗口的操作建立起一些基本概念,当他进入一个从未用过的软件时,不会束手无策,而是会因该新软件与已用过的某些应用相似,从而对它的使用有一定认识。 这种认识程度越高,说明这一软件越直观,也就是软件的用户界面设计得越成功。

  因此每一个程序员都应当意识到他自己所开发的应用与其他程序员开发的应用都是在同一平台上,使用的也是相同的窗口控件,用户在其他应用上学到的对软件的操作方法越多,可运用在新开发的应用上的也就越多。如果使用标准的方法,用户会感到越方便,尽管他们并不一定能意识到方便的原因所在。

  作为一个程序员首先应当了解窗口中不同控件的作用,不少PowerBuilder的程序员都在DOS或Mainframe的字符终端上开发过应用软件,而对Windows的图形界面却比较陌生。因此作为程序员熟悉使用怎样的控件来完成怎样的功能是至关重要的。当一个程序员用错了所应使用的控件时,应用也不可能是很直观的。

  保持一致是使应用直观的重要环关。一致性既包括使用标准的控件,也是指使用相同的信息表现方法,如在字体、标签 风格、颜色、术语、显示错误信息等方面确保一致。下面是显示信息时应当遵循的一致性标准:标签提示:字体为加重、宋体、黑色、灰底或透明、无边框。右对齐并带有冒号结束。如“姓名:”;日期:正常字体、宋体、白底黑字,3-Dlowered;对齐方法:左对齐:一般文字、单个数字、日期等。 右对齐:数字、时间、日期加时间。

  对于这些信息的排列大部分都是由程序员来控制的,上述显示风格也仅供参考,更为重要的是程序员应当注意在同一软件中表现形式的一致性。如果在同一个应用中,这些信息的表现方式不一致,会使得用户分散注意力,因而影响这一软件的使用。

  遵循了上述一致性原则后,还应注意在一个窗口内部所有控件的布局和信息组织的艺 裕沟糜没Ы缑婷拦邸T谝桓龃翱谥邪磘ab键,移动聚焦的顺序不能杂乱无章,在字符界面下,如DOS中,taborder的顺序是先从左至右,后从上至下,而在 Windows中的顺序则一般应先从上至下再从左至右。一屏中首先应输入的和重要信息的控件在tab顺序中应当靠前,位置也应放在窗口上部较醒目的位置。

  MSWindows应用中应当遵循的规则还有一条是可不用鼠标的原则:应用中的每一个功能只用键盘也应当可以完成,也就是说在设计的应用中还应加入一些必要的按钮和菜单项。但是,许多鼠标的操作,如双击、拖动对象等,并不能简单地用键盘来模拟即可实现,例如在一个列表框中用鼠标双击其中一项可以表示选中该项内容;为了用键盘也能实现这一功能,必须在窗口中定义一个表示选中的按钮,以作为实现双击功能的替代。又如在一个窗口中有两个数据窗口,可以用鼠标从一个数据窗口中将一项拖出然后放到另一个中;如果只用键盘,就应当在菜单中设置拷贝或移动的菜单项。

  在菜单项中使用快捷键可以让使用键盘的用户操作更快一些,在西文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  上下文相关帮助

  这些快捷键也可以作为开发中文应用软件的标准,但使用汉语拼音的开头字母亦可。

安全的应用软件

  在应用软件的开发中,重要的一个因素是要给用户提供一个安全的工作环境,在软件中不应藏有任何地雷,在用户将要作破坏性的且难以恢复的操作时,系统应当给以应有的提示。用户只有充分相信软件是安全的,才会乐于使用它,才会放心地去探索这一软件所提供的新功能,才能更高效地使用它。

  什么是安全的应用

  首先最重要的,但也是最不容易实现的是排除可能会使应用非正常中止的错误。在任何情况下,最终用户都不应看到应用出现保护性错误而退出系统,这种错误最容易使用户对软件失去信心。因为这意味着用户要中断思路,并费时费力地重新登录,而且已进行的操作也会因没有存盘而全部丢失。当然造成系统中止的原因很多,可能是网络、硬件、系统软件或是PowerBuilder本身的问题,但是开发者应当尽量周全地考虑到各种可能发生的问题,使出错的可能降至最小。特别是使用PowerBuilder开发的软件的确经常会出现保护性错误,但是开发人员却不能因此怨天尤人,而是要多做测试,选择最为保险的方法实现相同的功能。

  此外,在使用PowerBuilder编程时,还有一种常见的导致非正常中止的情况是由于程序员自己的原因造成的,这就是变量联接滞后问题,即在编译时定义一个有效的对象类,但是在运行时却没有创建它的实例或这个实例已释放(destroy);这时如有一段代码引用到这一对象,系统却无法在内存中找到它的实例,而导致中止。因此,在引用变量时,应当首先检查它是否存在实例,例如在一个窗口中引用了另外一个窗口的对象,就应首先检测它在执行代码之前是否已经创建了一个实例。

  在下面的例子中,win_A这一窗口对象可能在代码执行时并没有创建,因此我们就应当在执行前用IsValid函数来检查其是否有效:

IFIsValid(win_A)THEN Close(win_A)
ENDIF

  使用数据窗口中应注意的问题

  PowerBuilder的代码将引用很多数据窗口中的列,指代这一列的方法可以是列名也可以是列号。列号是指这一个数据窗口在执行Select语句中排列的顺序号,如果习惯于使用列号引用某列,要注意可能在后来会在数据窗口的select语句中移动或删除某些列,如果不能想起所有引用过这个数据窗口的代码,这时就有可能出现数据类型不匹配的错误。使用列名来引用则可以避免这类错误,但是这里使用的字符串,在编译时PwerBuilder并不验证引用得是否正确,只有在运行时,系统才可能发现使用的字符串在数据窗口中不存在,并提示错误,退出应用。这种错误一般比较难以发现,减小这种出错的方法是尽可能使用ObjectBrowses来剪贴,以减小录入错误。

  安全的环境还应当注意尽可能避免用户无意录入无效的数据。在GUI下,有许多控件可以以十分友好的方式限制用户输入值的种类。例如一个多选框只有两种值的选择,所以当用户作出选择的可能性只有两个时,可以采用这一控件,免去了另外编程进行输入有效性验证的麻烦。当选择的可能再多一些时,可以采用单选钮,每一种选择都是有效的,用户不可能输入任何一种无效的选择。同理采用ListBox、DropDownDataWindow、DropDownListBox等标准控件都可以有效地避免用户无效输入,而不必另外编程来进行有效性验证,同时可避免用户在某一个输入点反复作输入尝试而耽误很多时间。

  在一个应用系统中,开发者应当避免用户作出未经授权或没有意义的操作,在PowerBuilder中菜单和按钮等对象有Enabled和Visible的属性,因此对用户未授权或无法进行的操作应将相应对象的属性改为Disabled和Invisible。例如在一个窗口中有一个数据输入窗口和一个删除按钮。在编辑一条新记录时,删除按钮是无效的,因此,这个按钮的属性应为Disable。当窗口的状 态发生变化时,应当随时改变控件或菜单项的这两个属性。

  当对象无效时,使用该控件的Disable属性还是Invisible属性是个人习惯问题。一般地,在一个菜单项或控件永远是无效时应当使用Invisible属性,例如一个用户打开一个有删除键的窗口,但是这个用户没有删除权限,那么这个按钮就应当是不可见的;而如果用户有权删除,只是在当前状态下,无法执行删除功能,如编辑新记录,这时该按钮应当设置成Disable。

  数据窗口是一个单一的封装的对象,当不希望用户输入某一列时,不能将整个数据窗口的属性设成Disable,而是应当采用其它的方法,一般来讲,有以下三种方式:将该列的TabOrder设为0,这样用户将无法按tab键或用鼠标聚焦在该列上。如果采用这一方法,应当将其原有的TabOrder值存储在一个实例变量中,以便在需要时恢复。将列的DisplayOnly或Protect属性设为真。这两个属性设为真时,可以使该列得以聚焦(只要taborder不为0),用户还可以在该列上选中一些文字及水平、垂直滚屏,只是这一列的值不能作修改。如果数据库中的某列大篇幅的多行文字只能显示而不能修改时,可以采用这一方法,但应注意该列的taborder不能为0,这样保留用户在必要时对其中的部分内容进行拷贝的权利。将该列的Visible属性设为假。这样该列自动将taborder设为0而无法聚焦。当这一值再改为真时,taborder的值仍能恢复。这一方法的缺点是在改变属性时屏幕会出现闪烁,因此这一方法不能滥用。

  将系统出现的错误提示信息尽可能淡化处理是使得用户有安全感的重要因素。开发者应当预见到某些可能出现的错误,尽可能避免系统缺省的错误信息出现,一方面由于这些信息本身没有汉化,而且过于专业化,用户不易理解,另一方面 也容易使用户以为自己操作错误,造成不安全感。例如用户 可能会在输入数据时违反了数据库的约束条件,开发者应当在PowerBuilder发出SQL语句向数据库提交前对此进行必要的有效 性检验。当然使用下拉列表框等方法可以实现外键约束。如果用户直接从键盘输入,须在对数据作update之前先验证其有 效性。数据库中有些列有非空的约束,如果用户对某些列还没 有填入值时就提交数据库会也返回错误,因此在开发者设计窗口时,应对数据库的非空约束等条件先作一预览,不要让从 DBMS发出的错误信息直接显示给用户。另外在使用数据窗口前 ,应确保每一列都在update选项中被选中(在数据窗口画笔菜单的Rows|Update中),否则系统在DataWindow做Update和Insert操作时, 将不包括该列。

  PowerBuilder中,数据窗口画笔里列的RequiredField属性是一 个界面很不友好的属性。一旦聚焦在该列上,没有输入任何东西就离开或者提交数据窗口时该列没有值,系统都不允许。 即使不知该输入什么,想查询一下其他窗口时,也要先在该列 中写入一些东西,才能关团这个窗口,因此建议一般不采用这一属性,而是要通过编程来做检查,可以把这段代码放在Up dateStart事件中,这一事件在执行update()函数时触发。

  在用户要作出不易恢复的操作前,应对用户作适当的提示 ,这样在用户打算探索系统新功能时没有后顾之忧。例如用户不经意下删除一些记录要恢复它们是困难的,因此在用户删除前,出一个提示窗口“您将删除下列记录,继续?”等。在系统修改了记录却没有存盘就退出之前,应在CloseQuery事件提示“是否要保存”等信息。在应用程序设计的全过程中,必须记住要编写安全的应用这一重要因素,这样才能在该应用使用时少产生错误,减小维护的压力,这些注意事项有统一的外观;引用对象前的有效性检验;使用正确的数据窗口列名;使用适当的GUI控件来使得用户输入有效;需要时对数据窗口的列作保护;提交前对数据窗口列作约束检验;避免用户进入危险地带;对用户不经意的操作作出提示。

小结

  《宋史》载,岳飞曾言:“兵法之常,运用之妙,存乎一心” 。我们在这两期讨论的界面设计的一些注意事项,以及以前 各期谈到的其他一些PowerBuilder的开发技巧,并不是万能的和一成不变的,也并没有涵盖开发的全部内容。只是希望能够为读者提供解决问题的思路,使读者能够建立感觉,演绎出同适合于应用的、实用的技巧来。

  本讲座到此就暂告一段落。笔者在历时一年的撰文过程中 ,曾收到了读者大量的热情的来信(Email)和电话,给予我鼓 励与支持,对文章中的错误给予批评与指正,这些都成为了我坚持完成这一讲座的最根本的动力。遗憾的是,限于时间和精力,对于这些来信,我未能一一回复,特此至歉。更为遗憾的是,限于版面,我不得不在讲座中放弃了一些虽然重要、却需要较大篇幅才能说清楚的专题,如应用分析设计、团队开发、图形数据窗口设计、Debug技巧等等,今后将陆续为大家补 上。

  最后,感谢原Sybase公司市场部总监檀林先生促成了这一讲座的开办,感谢《计算机世界》李福顺主任和林江艳小姐悉心地安排和对文章精益求精地修改和校正,感谢读者对本讲座 的关注和支持!


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台