显示选项
代码决定对话框将如何装入内存与如何显示。下表描述各种类型的显示任务以及用来执行这些任务的关键字。
Show方法装入窗体并设置它的Visible属性为True。传递给Show方法的参数标识了该对话框的类型。如果style参数省略或者设置为vbModeless或0(缺省),则对话框为无模式类型,如果style参数为vbModal或1,则对话框为模式类型。
当选取“确定”或“取消”退出对话框时,可使用Unload语句或者Hide方法。例如:
UnloadfrmAbout
-或者-
frmAbout.Hide
Unload语句把对话框从内存中删除,而Hide方法只是通过设置对话框的Visible属性为False将其从视窗中删除。当卸载窗体时,该窗体本身以及它的控件都从内存中卸载(包括在运行时装入的任何控件)。当隐藏窗体时,该窗体以及它的控件仍留在内存中。 当需要节省内存空间时,最好卸载窗体,因为卸载窗体可以释放内存。如果经常使用对话框,可以选取隐藏窗体。隐藏窗体仍可以保留与它关联的任何数据,包括属性值、打印输出和动态创建的控件。窗体被隐藏后,可以继续从代码中引用隐藏窗体的属性与控件。
各种显示类型的设计
MicrosoftWindows是与设备无关的-基于窗口的应用程序可以在许多不同显示分辨率与颜色浓度的计算机中运行。同样,用VisualBasic编写的应用程序也会在不同类型的显示器上运行,在设计应用程序时需要考虑到这一点。
设计与分辨率无关的窗体
缺省情况下,当改变屏幕分辨率时,MicrosoftVisualBasic不会改变窗体与控件的尺寸。这就意味着在分辨率为1024×768的屏幕上设计的窗体,在分辨率为640×480的屏幕中运行时会伸出屏幕的边界之外。如果想创建不管使用什么样的屏幕分辨率都能有相同比例的窗体和控件,必须在最低的分辨率下设计窗体,或者将改变窗体的代码添加到程序中去。
避免尺寸问题的最简单的方法是在640×480的分辨率下设计窗体。如果更喜欢在高一些的分辨率下工作,仍需要考虑窗体在低一些的分辨率下将如何显示。实现这一点的方法是用“FormLayout”窗口预览窗体的大小和位置。您也可以使用“ResolutionGuides”观察在低分辨率时屏幕的哪些部分是可见的。要切换到“ResolutionGuides”,可以在“FormLayout”窗口单击鼠标右键,从弹出菜单上选择“ResolutionGuides”菜单项。
在运行时,VisualBasic根据设计时的位置来放置窗体。如果设计时在1024×768的分辨率上运行,并把窗体放到屏幕的右下角,则当它在比较低的分辨率下运行时该窗体可能看不见。为了避免这种情况的发生,在设计时可从“FormLayout”窗口的弹出菜单选择“StartupPosition”菜单项来设置窗体的启动位置。同样,您也可以在运行时用下面的FormLoad事件中的代码来设置窗体的位置:
PrivateSubForm_Load()
Me.Move0,0
EndSub
尽管设置窗体的Left与Top的属性都为0也能有同样的效果,但Move方法只要一步就能完成。
VisualBasic使用与设备无关的度量单位,缇,是用来计算尺寸与位置的单位。Screen对象的两个属性TwipsPerPixelX与TwipsPerPixelY可以用来确定运行时的显示尺寸。应用这些属性,可以编写代码来调整窗体以及控件的尺寸与位置。
PrivateSubSetControls()
DimXAsInteger
DimYAsInteger
X=Screen.TwipsPerPixelX
Y=Screen.TwipsPerPixelY
SelectCaseX,Y
Case15,15
重新改变控件尺寸及移动控件。
txtName.Height=200
txtName.Width=500
txtName.Move200,200
增加为其它分辨率编写的代码。
…
EndSub
也需要知道在设计时VisualBasic自身窗口的位置。如果在高分辨率下把“工程”窗口放置到屏幕的右边,那么会发现在低分辨率下打开工程时,它不再是可访问的了。
设计不同浓度的颜色
在设计应用程序时,也需要考虑运行应用程序计算机可能的颜色显示能力。有些计算机可以显示256色或更多的颜色,而另一些只能显示16种颜色。如果使用256色的调色板来设计窗体,那么在16色上显示时,抖动(模仿无效颜色的一种方法)会使窗体上的一些元素消失。
为了避免这种情况,最好把应用程序使用的颜色局限于Windows标准的16种颜色。这些颜色由VisualBasic的颜色常数来表示(如vbBlack、vbBlue和vbCyan等等)。如果在应用程序中需要用16种以上的颜色,那么对于文本、按钮以及其他界面元素仍然应当坚持用标准颜色。
设计时心里想着用户
除非创建VisualBasic应用程序完全只供自己使用,否则创作的价值只能由其他人来评价。应用程序的用户界面对用户有极大的影响——无论代码在技术上多么卓越,或者优化得多么的好,如果用户发现应用程序很难使用,那么他们就难于很好地接受它。
作为程序员,毫无疑问,对计算机方面技术已非常熟悉。因而很容易忘记大多数用户不理解(而且也许并不在意)隐藏在应用程序后面的技术。把应用程序看作达到目的工具:完成任务的方法想象中应比没有计算机的帮助更容易。
一个设计得好的用户界面把用户与基础技术隔离开来,从而使完成预定的任务变得很容易。在设计应用程序用户界面的过程中,需要时时想到用户。如何能无需指导就发现应用程序的各种各样的功能?当错误发生时,应用程序如何响应?在帮助或辅助用户方面将提供些什么?设计是否以一种艺术美来使用户高兴?以上这些问题的答案以及其他有关用户为中心的设计问题,在本节中都将涉及到。
界面设计的基础
不必成为创建用户界面的艺术家——大多数用户界面设计的原则,与任意一门基础艺术课中所讲授的基础设计的原则相同。构图、颜色等的基本的设计原则,就像它们应用在纸张或油画上一样,也能很好地在一台计算机的屏幕上应用。
虽然VisualBasic能通过简单地将控件拖动并放置到窗体上而使得创建用户界面非常容易,但是,在设计之前稍微计划一下就能使应用程序的可用性有很大地改观。可能需先在纸上画出窗体开始设计,决定需要哪些控件,不同元素的相对重要性,以及控件之间的关系。
构图:应用程序的观感与感觉
窗体的构图或布局不仅影响它的美感,而且也极大地影响应用程序的可用性。构图包括诸如控件的位置、元素的一致性、动感、空白空间的使用以及设计的简单性等因素。
控件的位置
在大多数界面设计中,不是所有的元素都一样重要。仔细地设计是很有必要的,以确保越是重要的元素越要很快地显现给用户。重要的或者频繁访问的元素应当放在显著的位置上,而不太重要的元素就应当降级到不太显著的位置上。
在大多数语言中我们习惯于在一页之中从左到右、自上到下地阅读。对于计算机屏幕也如此,大多数用户的眼睛会首先注视屏幕的左上部位,所以最重要的元素应当放在屏幕的左上部位。例如,如果窗体上的信息与客户有关,则它的名字字段应当显示在它能最先被看到的地方。而按钮,如“确定”或“下一个”,应当放置在屏幕的右下部位;用户在未完成对窗体的操作之前,通常不会访问这些按钮。
把元素与控件分成组也很重要。尽量把信息按功能或关系进行逻辑地分组。因为他们的功能彼此相关,所以定位数据库的按钮应当被形象地分成一组,而不是分散在窗体的四处。对信息也是一样,名字字段与地址通常分在一组,因为它们联系紧密。在许多情况下,可以使用框架控件来帮助加强控件之间的联系。
界面元素的一致性
在用户界面设计中,一致性是一种优点。一致的外观与感觉可以在应用程序中创造一种和谐,任何东西看上去都那么协调。如果界面缺乏一致性,则很可能引起混淆,并使应用程序看起来非常混乱、没有条理、价值降低,甚至可能引起对应用程序可靠性的怀疑。
为了保持视觉上的一致性,在开始开发应用程序之前应先创建设计策略和类型约定。诸如控件的类型、控件的尺寸、分组的标准以及字体的选取等设计元素都应该在事先确定。可以创建设计样板来帮助进行设计。
在VisualBasic中有大量的控件可供使用,这可能引起有人想使用所有的控件。为了避免这种引诱,选取能很好地适合特定应用程序的控件子集。虽然列表框、组合框、网格以及树等控件都可用来表示信息列表,最好还是尽可能使用一种类型。
还有,尽量恰当地使用控件,虽然TextBox控件可以设置成只读并用来显示文本,但Label控件通常更适用于该目的。在为控件设置属性时请保持一致性,如果在一个地方为可编辑的文本使用白色背景,除非有很好的理由,否则不要在别的地方又使用灰色。
在应用程序中不同的窗体之间保持一致性对其可用性有非常重要的作用。如果在一个窗体上使用了灰色背景以及三维效果,而在另一个窗体上使用白色背景,则这两个窗体就显得毫不相干。选定一种类型并在整个应用程序保持一致,即使这意味着要重新设计某些功能。
动感:窗体与其功能匹配
动感是对象功能的可见线索。虽然对这个术语也许还不熟悉,但动感的实例四处可见。自行车上的把手,手放在它的上面,动感会将把手用手扣紧这件事显现出来。按下按钮、旋转旋钮和点亮电灯的开关等都能进行动感表示,一看到它们就可以看出其用处。
用户界面也使用动感。例如,用在命令按钮上的三维立体效果使得他们看上去像是被按下去的。如果设计平面边框的命令按钮的话,就会失去这种动感,因而不能清楚地告诉用户它是一个命令按钮。在有些情况下,平面的按钮也许是适合的,比如游戏或者多媒体应用程序;只要在整个应用程序中保持一致就很好。
文本框也提供了一种动感,用户可以期望带有边框和白色背景的框,框中包含可编辑的文本。显示不带边框的文本框(BorderStyle=0)也有可能,这使它看起来像一个标签,并且不能明显地提示用户它是可编辑的。
空白空间的使用
在用户界面中使用空白空间有助于突出元素和改善可用性。空白空间不必非得是白色的——它被认为是窗体控件之间以及控件四周的空白区域。一个窗体上有太多的控件会导致界面杂乱无章,使得寻找一个字段或者控件非常困难。在设计中需要插入空白空间来突出设计元素。
各控件之间一致的间隔以及垂直与水平方向元素的对齐也可以使设计更可用。就像杂志中的文本那样,安排得行列整齐、行距一致,整齐的界面也会使其容易阅读。
VisualBasic提供了几个工具,使得控件的间距、排列和尺寸的调整非常容易。“排列”、“按相同大小制作”、“水平间距”、“垂直间距”和“在窗体中央”等命令都可以在“格式”菜单中找到。
保持界面的简明
界面设计最重要的原则也许就是简单化。对于应用程序而言,如果界面看上去很难,则可能程序本身也很难。稍稍深入考虑一下便有助于创建看上去(实际上也是)用起来都很简单的界面。从美学的角度来讲,整洁、简单明了的设计常常更可取。
在界面设计中,一个普遍易犯的错误就是力图用界面来模仿真实世界的对象。例如,想象一下要求创建完整的保险单的应用程序。很自然的反应就是在屏幕上设计完全仿照保险单的界面。这样做会出现几个问题:保险单的形状与尺寸和屏幕上的有很大不同,要非常完善地复制这样的表格会将其限制在文本框与复选框中,而对用户并没有真正的好处。
最好是设计出自己的、也能提供原始保险单打印副本(带打印预览)的界面。通过从原始保险单中创建字段的逻辑组,并使用有标签的界面或几个链接的窗体,就可以不要求滚动屏幕而显示所有的信息。也可以使用附加的控件,比如带有选取预装入的列表框,这些控件可以减少打字工作量。
也可以取出不常用的函数并把它们移到它们自己的窗体中去,来简化许多应用程序。提供缺省有时也可以简化应用程序;如果十个用户中有九个选取加粗的文本,就把文本粗体设为缺省值,而不要叫用户每次都选取一遍(不要忘记提供一个选项可以覆盖该缺省值)。向导也有助于简化复杂的或不常用的任务。
简化与否最好的检验就是在应用中观察应用程序。如果有代表性的用户没有联机帮助就不能立即完成想要完成的任务,那么就需要重新考虑设计了。
使用颜色与图像
在界面上使用颜色可以增加视觉上的感染力,但是滥用的现象也时有发生。许多显示器能够显示几百万种颜色,这很容易使人要全部使用它们。如果在开始设计时没有仔细地考虑,颜色也会像其他基本设计原则一样,出现许多问题。
每个人对颜色的喜爱有很大的不同,用户的品味也会各不相同。颜色能够引发强烈的情感,如果正在设计针对全球读者的程序,那么某些颜色可能有文化上的重大意义。一般说来,最好保守传统,采用一些柔和的、更中性化的颜色。
当然,预期的读者以及试图传达的语气与情绪也会影响对颜色的选取。明亮的红色、绿色和黄色适用于小孩子使用的应用程序,但是在银行应用程序中它很难带来财务责任心。
少量明亮色彩可以有效地突出或者吸引人们对重要区域的注意。作为经验之谈,应当尽量限制应用程序所用颜色的种类,而且色调也应该保持一致。如果可能的话,最好坚持标准的16色的调色板;在16色显示器上观看时,抖动会使得其他一些颜色显示不出来。 使用颜色时另一个需要考虑的问题就是色盲。有一些人不能分辨不同的基色(如红色与绿色)组合之间的差别。对于有这种情况的人,绿色背景上的红色文本就会看不见。
图像和图标
图片与图标的使用也可以增加应用程序的视觉上的趣味,但是,细心的设计也是必不可少的。不用文本,图像就可以形象地传达信息,但常常不同的人对图像的理解也不一样。
带有表示各种功能的图标的工具栏,它是一种很有用的界面设备,但如果不能很容易地识别图标所表示的功能,反而会事与愿违。在设计工具栏图标时,应查看一下其它的应用程序以了解已经创建了什么样的标准。例如,许多应用程序用一张角上有卷边的纸来表示“新建文件”图标。也许还有更好的比喻来表示这一功能,但改用其它的表示方法会引起用户的混淆。
考虑图像文化上的意义也非常重要。许多程序使用田园风格的带一面旗的邮箱(图6.21)来代表邮件功能。这原本是美国的图标;其他国家/地区或文化的用户也许不把它看作邮箱。
在设计自己的图标与图像时,应尽量使它们简单。具有多种颜色的复杂的图片,作为16×16像素的工具栏图标,或者在高分辨率的屏幕上显示时,都不能很好地适应。
选取字体
字体也是用户界面的重要部分,因为它们常常给用户传递重要的信息。需选取在不同的分辨率和不同类型的显示器上都能容易阅读的字体。最好尽量坚持使用简单的无衬线字体或者衬线字体。通常手写字体或者其他装饰性字体的打印效果比屏幕上的效果更好,而且字体越小读起来越难。
除非计划按应用程序来配置字体,否则应当坚持使用标准Windows字体,如Arial、NewTimesRoman或者System。如果用户的系统没有包含指定的字体,系统会使用替代的字体,其结果可能与设想的完全不一样。如果正在为国际读者设计,需要调查在预想的语言里可用什么字体。还有,在为其他语言设计时,需要考虑文本的扩展——有些语言的文本串可以多占50%以上的空间。
还有,在选取字体时,设计的一致性非常重要。大多数情况下,不应当在应用程序中使用两种以上字体。太多的字体会使得应用程序看上去像罚款通知单。
->