编程应该考虑的程序界面和易用性的问题
一个非常成功的程序,除了它有强大或专业的功能外,无一例外的都有友好的界面和易于操作的特点。怎样做到界面有好和易于操作就是我们要讨论的。
一、 界面要美观,
一个程序不能以完成基本的要求为目的,在完成功能的前提下,对程序界面要进行合理的布局,一般来说主菜单在最程序的最上面,下面是工具栏,其余的空间作为客户区。
A、主菜单的设置
主菜单的标题不要过长,一般以2-4字为宜,通常为2个字,同时为标题设定一个快捷键,一般以标题的英文的第一个字母为快捷键,通常设定为快捷键的字母为大写。如果主菜单个数太少,出于美观考虑可以给菜单项加入图标,在美观的同时增加了主菜单的长度。菜单的个数不能超过窗体宽度,否则菜单将折行显示。影响界面效果。
对下拉菜单应适当的加入图标来进行美化,但不要对每个选项都加入图标,密密麻麻的反而不好,图标只是一个点缀作用。下面是我作的程序的菜单大家参考一下(不好意思,好像在夸我一样^_^)
B、对工具栏的设置
工具栏根据需要可以选用ToolBar或Panel加SpeedButton来实现,用ToolBar的好处是方便,但如果将ShowCaption设为True则不能调整按钮的大小。用Panel加SpeedButton则方便的多,缺点是你需要多写一些代码。这里我着重说说用SpeedButton作工具按钮。SpeedButton有个Flat属性,当把它设为True的时候,当鼠标经过的时候按钮会浮起来,利用这一点,如果把SpeedButton的Transparent属性设为True的话(默认是True)如果在SpeedButton的下面放一个和SpeedButton一样大小的图片,在鼠标移动到按钮上的时候,按钮就会把图片的边框遮住,这样就可以很简单的实现一种比较漂亮的按钮,下图就是采用这种方式实现的按钮,最后一个是鼠标经过时的效果。
SpeedBtton还有个属性是Glyph它可以加入一个位图,如果位图的宽和高不相等,它
将位图自动分割为宽高相等的几个图片,SpeedButton默认会自动处理4个连在一起的
图片,如高度是16宽度是64的位图,SpeedButton会自动将它分为4个图片,默认时
SpeedButton显示第一幅图,当不可用的时候显示第二幅,当鼠标单击的时候显示第三
幅,当按钮按下的时候显示第四幅。值的一提的是如果你只用一幅图片,当按钮不可用
的时候SpeedButton会自动把这幅图的边界变灰,这样就要求你用的这幅图片有个黑色
的边界,不然当按钮不可用的时候,图片就看不到了,或看不全。建议至少为每个
SpeedButton作两幅图,一个正常的,一个不可用的。
C、字体的设置
在中文Windows下,宋体9号字是标准字体,不要为了美观而采用一些特殊的字体,
你要考虑到用户的计算机上也许没用你的这种字体,在设置字体的时候,建议采用宋体
9号字,才用BCB5编程的时候要注意,BCB默认的字系是西方,在2000下编程设置字
体的时候,如果你要设置为宋体9号字,你不要忘了把这个字系改为GB2312_CHARSET,
不然你的程序在98下运行会很难看。
D、控件的设置
在设计窗体的时候,要考虑当窗体大小变化的情况,应该让用户在调整窗体大小的
时候不影响正常的使用,如在标准界面下按钮可用而且位置适当,可是如果用户把窗体
调小的时候呢?如果你的按钮不随窗体的大小而变化的话,按钮就有可能看不到的,这
显然是不可以的。实现这一功能的最简单的方法是使用Panel控件,通过设置Panel控
件的Align属性来实现这一功能。
二、 操作符合大部分人的习惯
编写软件的目的是给别人用,那么这就要求这个程序不但你用着舒服,而且让别人
使用起来也很容易上手,这样才能让用户喜欢用你的软件。如按ESC键退出,Enter键
确认,光标键移动等。一些常用的按钮应该象Windows的一些程序那样,如应用、确定、
取消、退出,这些按钮应该尽可能的放在窗体的右下方,不要为了你的界面安排,将退
出按钮放到窗体的上方,我就遇到这样一个程序,我想退出了,确让我找了半天的退出
按钮。测试这一点的最好方法就是让别人来用你的软件,听听他们的意见。
三、 不要给用户太多的局限
我们编写的程序要尽量的为用户考虑,如你不能因为窗体上的控件不好摆,你就把
窗体设为不可调整大小,不要因为自己的方便便要求用户必须用多少多少的分辨率,多
少多少的色彩等,应该考虑最大多数的需求。可以有用户来设置的,就由用户来设置。
让用户感觉用这个软件很随便,这才识目的。
四、 尽量简化用户的操作
对于功能比较一个单一却很常用操作,应该尽量为它设置快捷键或在工具栏上添加
它的按钮,不要让用户到一层一层的菜单里面去找。对于由程序可以实现的判断尽量由
程序来完成,如用户录入数据的时候,当用户输入完一项的时候,程序应能自动进入到
下一项,二不需要用户手工去干预它。
上面是我编程的一些经验的总结,希望大家能够少走一些弯路,我说的也不全面,权当一个抛砖引玉的作用,希望大家能够多多总结经验,多多交流,共同进步!