我想学习设计界面比如说是改变已有的控件的形状和颜色或者是在已有的控件的基础上加入新的功能
如何下手阿
如何下手阿
解决方案 »
- 用VB6.0制作了一个应用程序。。里面使用了一些第三方控件。。在别的计算机上运行是不是也要将第三方控件打包拷过去?
- 老板命令我必须两天之内解决VB WINSOCK公网互相通讯的问题,VB高手们救命啊....
- VB 调用Autocad 画图并生成图形
- 第一次散分!顺便郁闷一下那些所谓的高手!
- 请问一个结构的定义
- 简单的语句问题 大家帮忙看下 在线等
- ★★★★本人因恋爱需要,希望在武汉找一份兼职★★★★
- ■■[调查]您用Linux搞开发了吗?或者嵌入式Linux开发?请大家帮忙UP!
- UPDATE时说什么键信息不全?为什么?
- VB导出excel提示对象关闭时不允许操作怎么办?
- 软件界面设计的困惑。
- 讨论讨论界面设计!!!
作者: virtualboy
Windows的通用图形界面的出现,使计算机用户不必通过专门的学习就可以得心应手地使用各种Windows的软件。不仅如此,它还是程序设计者在设计Windows程序界面时所必须遵循的标准,这在很大程度上减轻了程序设计者的负担,使他们能够把主要精力放在问题的求解和实现上。 Visual Basic(以下简称VB)的出现,更加简化了Windows程序界面的设计工作,只需要极少量的代码,就能实现标准Win-dows应用程序的界面。但是,如果不了解Windows程序界面设计的原则,或者不熟悉VB下界面编程的技巧,就难以设计和实现既符合一般标准又具有特色的界面。
界面设计的原则
界面设计具有一般性的原则,最为重要的有: 1.界面要具有一致性。一致性原则在界面设计中最容易违反,同时也最容易修改和避免。例如,在菜单和联机帮助中必须使用相同的术语;对话框必须具有相同的风格等。 2.常用操作要有捷径。常用操作的使用频度大,应该减少操作序列的长度。例如,为文件的常用操作如打开、存盘、另存等设置快捷键。使常用操作具有捷径,不仅会提高用户的工作效率,还使得界面在功能实现上简洁和高效。 3.提供简单的错误处理。系统要有错误处理的功能。在出现错误时,系统应该能检测出错误,并且提供简单和容易理解的错误处理功能。错误出现后系统的状态不发生变化,或者系统要提供错误恢复的指导。 4.提供信息反馈。对操作人员的重要操作要有信息反馈。对常用操作和简单操作的反馈可以不作要求,但是对不常用操作和至关重要的操作,系统应该提供信息的反馈。 5.操作可逆。操作应该可逆。这对于不具备专门知识的操作人员相当有用。可逆的动作可以是单个的操作,或者是一个相对独立的操作序列。 6.设计良好的联机帮助。虽然对于熟练用户来说,联机帮助并非必不可少,但是对于大多数不熟练用户来说,联机帮助具有非常重要的作用。 菜单设计的原则和编程
菜单设计有如下的一般性原则: 按照系统的功能来组织菜单。 要选用广而浅的菜单树,而不是窄而深的菜单树。 根据菜单选项的含义进行分组;并且按一定的规则排序。 菜单选项的标题要力求文学简短、含义明确,并且最好以关键词开始。 常用选项要设置快捷键。 结合以上的原则,菜单编程有以下几方面的技术和技巧: 菜单选项的分组 在VB中,菜单选项的分组是通过菜单栏分隔横线实现的。在菜单的一定位置增加一个Ca ption属性为"-"的菜单项,它在菜单上就表现为一条横线。在许多情况下,同一个功能菜单下又可以按照菜单选项的功能分为几组,这时就可以用分隔横线来实现菜单项的分组。 常用选项快捷键的设置 打开菜单设计窗口(Menu Design Window),应对于每个菜单选项有相应的快捷键(Short cut)列表,在该表中选择一个即可。需要注意的是,具有子菜单的菜单或者顶层菜单的快捷键不能这样定义。按照Windows的界面设计原则,顶层菜单的快捷键的形式是Alt+字母键。 对于一些常用的功能菜单项,有约定俗成的快捷键。例如,文件打开用CTRL+O,文件存盘用CRTL+S,打印用CTRL+P,等等。 为菜单选项定义好快捷键之后,菜单上该选项的后面就出现了快捷键的文字表示。 菜单选项的使能与禁止、可见与隐藏 为了表示菜单选项的一些特殊功能,可能要用到菜单选项的使能与禁止、可见与隐藏属性。当因为某种原因使得某个选项所代表的功能不能被实现时,就应该禁止该选项被选中。菜单选项的使能与禁止是通过改变该选项的Enabled属性实现的。举例来说,假设菜单选项名为mnuName,则禁止该选项可以这样实现: mnuName.Enabled=False 同理,隐藏一个选项可以用: mnuName.Visible=False 而使一个隐藏的选项恢复可见则用 mnuName.Visible=True 菜单项的隐藏与恢复可见常用在动态菜单的实现中。 菜单项的动态装入 菜单项的动态装入是指菜单项的个数不固定,并且能够在需要时动态地装入。最简单的例子就是文件菜单中最近打开的文件的列表。在第一次打开文件之前,该列表是空的,并且不在文件菜单中出现;打开一个文件后,该列表不再是空的,并且文件菜单中出现代表被打开文件的菜单项。 在上面的例子里,就综合运用了菜单项的下标属性(Index)、标题属性(Caption)、可见属性(Visible)以及菜单项的装入方法(Load Method)。 具体的实现过程如下: 在文件菜单里增加一个菜单项,标题任意,并假设菜单项的Name属性是opened_files_ list; 更改菜单项opened_files_list的可见属性,使 opened_files_list.Visible=False 更改菜单项opened_files_list的下标属性,使 opened_files_list.Index=0 在程序中控制菜单项opened_files_list的动态装入。 假设要显示打开过的第二个文件的文件名,并且该文件名存放在一个文件名数组opened _file_name里。需要注意的是,对于下标为0的菜单项,不能用Load方法。因为在程序执行时,该菜单项就已经被装入到内存里了;另外,在菜单项的标题属性字符里的"&"字符具有特殊的含义,它的作用是在显示该属性字符串的同时,并不显示"&"本身,而紧跟"&"的字符在显示时具有下划线, 并且该字符成为热键。 如果下标不为0的菜单项不再需要,为了减少对内存资源的占用,可以用Un-load方法把它从内存卸出;同样地,不能用Unload卸出下标为0的菜单项。 弹出式菜单的实现 VB中在菜单设计窗口中设计的菜单是下拉式菜单。下拉式菜单是用户在任何时候都可以在顶端菜单条上选择后拉出的菜单,而弹出式菜单则是在程序界面的一定区域内点按鼠标键后出现的菜单。在某些情况下,弹出式菜单会使系统功能的实现更加简洁和高效,使用起来更加得心应手。 Windows程序的弹出式菜单一般是当用户在程序的桌面上点按鼠标键时出现的。弹出式菜单多用于实现系统的附加或增强功能。弹出式菜单的内容,可以随点按鼠标键的位置不同而变化。由于弹出的菜单要覆盖屏幕的一部分,所以应尽量缩短菜单里的文字。
更新日期: 2001-8-28 0:18:38 浏览次数: 3940 次[关闭窗口]
有时在一个窗口中出现较多的控制件时,如果能向导式地建议用户下一步该做什么,不失为上策。 在Visual Basic的程序设计中,我们可以使用语句:Object.SetFaocus使我们希望的控件得到输入焦点,举个例子:在Form1中我们加入一个按钮Command1和一个文本输入Text1,双击按钮控件,然后键入如下代码: Text1.SetFocus 再按F5运行程序,您就会看到一单击按钮,文本框会立即取得输入焦点。另外,我们还可以使用语句:Sendkeys "{TAB}"使下一个控件获得焦点,但我们需要在设计时确定各控件的Index值。(在Properties窗口中)让控件自己感知自己的工作已完成,而主动将焦点让出,会使用户觉得应用程序很聪明,也减少了用户出错的机会。 可是当焦点切换的两个控件相隔有一定距离时,上述的方法有时也不足以引起用户的注意,那么一种好的解决方法是将鼠标箭头也移到控件上。可惜,VB并不支持鼠标移动,那我们就求助API函数,API函数SetCursorPos可让我们如愿。 下面是子程序MoveCursorOn,它可让鼠标移动到指定控件上方。 下列代码请放在declarations段中:
Type PoinTAPIx As Integery As IntegerEnd TypeDeclare Sub SetCursorPos Lib "User"(Byval x As Integer,Byval y As Integer)Declare Sub ClientToScreen Lib "User"(Byval hwnd As Integer,IpPoint As PointAPI)Declare Function GetParent Lib "User"(Byval hwnd As Integer)As Integer 然后建立一个新的子程序(ALT+N→N→键入子程序名MoveCursorOn),下面是子程序的代码:Sub MoveCursorOn(source As Control)Dim Pt As PoinTAPIDim hparent As Integerp.x=(Source.Left+Source.Width/2)/Screen.Twipsperpixel)p.y=(Source.Top+Source.Height/2)/Screen.Twipsperpixel)hparent=GetParent(source.hwnd)ClientToScreen hparent ptSetCursorPos pt.x pt.yEnd Sub 使用该子程序很容易,例如我们想把鼠标移动到按钮Command1上,就可使用语句Move Cursor On Command1 您会看到鼠标箭头已经指着按钮Command1。 需要说明的是,千万不要滥用该子程序。让鼠标自己满屏乱飞,我们的用户会感到失去对应用程序的控制,这是违反我们的初衷的。 在有数个输入框的窗口中(这在数据库应用程序中是很典型的),当用户完成第一个输入框的输入后,总爱习惯性的加一个回车,希望输入焦点落到下一个输入框中(DOS中大多数应用程序是如此),可往往事与愿违,这一回车却触发了拥有Default特性的按钮,结果不是关闭了当前窗口就是又蹦出另一窗口。用户睁大眼睛看着屏幕,“咦?!我到底做了什么?”这是Windows新用户经常遇到的事情。 解决它其实很容易,只需在输入框的KeyPress事件中加入如下代码:IF KeyASCII=13 ThenKeyASCII=0Sendkeys "{TAB}"END IF 这样,当用户在这个输入框中键入Enter时,就象键入TAB键时,焦点被移到下一控件上。但需注意,这种方法不适用于多行的TextBox,即TextBox的MultiLine特性设为True时,因为这时的回车键是起换行的作用。
http://www.peoplewarecn.com/xprogrammer/XProgrammer21.pdf
界面耻辱纪念堂--颜色的使用
http://www.peoplewarecn.com/xprogrammer/XProgrammer15.pdf
界面耻辱纪念堂--隐喻使用不当
http://www.peoplewarecn.com/xprogrammer/XProgrammer14.pdf
界面耻辱纪念堂--可视元素
http://www.peoplewarecn.com/xprogrammer/XProgrammer14.pdf
糟糕界面集锦-控件篇
http://www.peoplewarecn.com/xprogrammer/XProgrammer10.pdf
用户界面软件
http://www.peoplewarecn.com/xprogrammer/XProgrammer17.pdf
GOF模式用于GUI设计
http://www.peoplewarecn.com/xprogrammer/XProgrammer12.pdf
用户界面的交互模式
http://www.peoplewarecn.com/xprogrammer/XProgrammer10.pdf供参考