第2章VB可视化界面设计
- 格式:ppt
- 大小:522.50 KB
- 文档页数:78
VB界面设计现在越来越多的软件都有了很Cool的2D造型,什么×××× XP啦,×××× 2002之类的,看来争夺软件霸权的地位,2D界面是必不可少的,有很多人认为Visual Basic语言的先天不足导致它不能够很灵活的改变界面,让俺们来看看究竟吧。
如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSkin 就可以办到,甚至更爽,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很是不爽,看看VB是怎么利用别的东东来实现的吧。
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,Name:LblBtn,BorderStyle: 1,Appearance: 0,Alignment: 2,这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name 属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:Private Const LBL_BACK_COLOR =&HE0E0E0 ’正常时Label控件的背景色Private Const LBL_WHEN_MOUSE_MOVE =&HC0C0C0 ’鼠标移动时Label的背景色Private Const LBL_WHEN_MOUSE_DOWN =&H808080 ’鼠标按下时Label的背景色再在Form的Load事件中输入以下内容Private Sub Form_Load()Dim Count As IntegerFor Count =0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景Next CountEnd Sub然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:Private Sub LblBtn_MouseDown(Index As Integer,Button As Integer,Shift As Integer,X As Single,Y As Single)’当鼠标按在LblBtn上时LblBtn(Index).BackColor =LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜色End SubPrivate Sub LblBtn_MouseMove(Index As Integer,Button As Integer,Shift As Integer,X As Single,Y As Single)’鼠标在LblBtn上面移动时触发该事件Dim Count As IntegerDoEvents ’暂时将系统控制权教给系统If Button T hen Exit Sub ’如果按钮被按下就退出该过程For Count =0 To 3If Count <> Index Then ’如果按下的不是其它按钮LblBtn(Index).BackColor =LBL_BACK_COLOR ’将背景设为正常ElseLblBtn(Index).BackColor =LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景End IfNext CountEnd SubPrivate Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)Dim Count As IntegerDoEventsFor Count=0 To 3LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景Next CountEnd本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label 控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)OK,Label控件就讲到这里,在来说说TextBox控件,各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下Appearance 0BorderStyle 1MutilLine True千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBoxDim bkColor As LongPrivate Sub Form_Load()bkColor=RGB(235,235,235)Text1.BackColor=bkColorEnd Sub在Form和Text1的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)Text1.BorderStyle =0End SubPrivate Sub Text1_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)DoEventsText1.BorderStyle =1End Sub在按下F5试试是不是很Cool?可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,首先声明:Private Type POINTAPIx As Longy As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI)As LongPrivate Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long,ByVal yPoint As Long)As LongPrivate Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)As Long但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,Private Declare Function nSetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)As Long只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:Public Function sSetFocus()As LongDim CPos As POINTAPI,Successfull As Boolean,hWnd As LongDoEventsSuccessfull =GetCursorPos(CPos)If Not Successfull Then Exit Sub ’如果未成功则退出该过程hWnd=WindowFromPoint(CPos.x,CPos.y)sSetFocus=nSetFocus(hWnd)End Sub在窗体上放一个Timer控件,Interval 属性设为100,就是0.1秒,在Timer1控件的Timer 事件中填入sSetFocus,在运行一下看看,效果怎么样?可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程->部件->Microsoft Windows Common Controls-2 6.0 (SP3)就是你的答案,至于卷动TextBox 就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体Webdings 来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API 的声明:Public Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" ()As Long 注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any)As Long’这个该不要俺多介绍了吧Public Const HTCAPTION =2 ’代表窗体的标题区Public Const WM_NCLBUTTONDOWN =&HA1 ’表示非工作区左键按下原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:Public Sub MoveForm(hWnd As Long)DoEventsReleaseCaptureSendMessage hWnd,WM_NCLBUTTONDOWN,HTCAPTION,0&End Sub在Form的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=vbLeftButt on Then MoveForm hWnd’如果按下鼠标左键就移动窗体End Sub台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在ToolSign的AutoQuit属性的Public Const EXIT_FORCE =2 ’注意,在VB中运行的时候如果选用此退出方式,VB也会退出Public Const EXIT_MESSAGE =1 ’由操作系统发送关闭消息Public Const EXIT_CUSTOM =Not (EXIT_FORCE Or EXIT_MESSAGE)’自定义将其注册后在部件栏中把e-Dogkid Studio Tools Sign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:Private Sub Form_Load()With Sign1.AutoQuit =EXIT_CUSTOM.ParentsHWND =hWnd ’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码End WithEnd SubSign1的Click事件Private Sub Sign1_Click()End ’关闭程序End Sub在Form的Resize事件中添加一下代码:Private Sub Form_Resize()Sign1.Width =WidthEnd Sub如果想让窗体可以改变大小,可以修改一下属性Caption ""BorderStyle 2或5ControlBox False实际情况如图不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-Dogkid Runtime Library然后在窗体Load事件中输入:Private Sub Form_Load()Dim System As e_Dogkid_Runtime_Library.SystemSet System =New e_Dogkid_Runtime_Library.SystemShowSystem.BoomIt hDC,60,Width,Height,Left,TopSet System =NothingEnd Sub。
第2章 Visual Basic语言基础知识2.1 Visual Basic定义了几种数据类型,变量有哪几种数据类型,常量有哪几种数据类型。
【答】Visual Basic基本数据类型:1. 字符串型(String):字符串分为变长字符串和定长字符串两种。
2. 数值型:数值型数据分为整型数和浮点数两类。
3. 货币型(Currency)4. 变体型(Variant)5. 字节型(Byte)6. 布尔型(Boolean)7. 日期型(Date)8. 对象型(Object)Visual Basic中包含两种常量,即文字常量和符号常量。
变量的基本数据类型:Byte(字节型),Boolean(布尔型),Integer(整型),Long (长整型),Single(单精度型),Double(双精度型),Currency(货币型),Date(日期型),Object(对象型),String(变长字符串),String(定长字符串),Variant(变体型、数字),Variant(变体型、字符)2.2 符号常量和变量有什么不同点?【答】符号常量一经定义,就不能在程序中的其他位置改变其值。
变量的值在程序中可以改变。
2.3 指出下列正确的变量名:g(1-k) 6adhs *sss kL2.1 Printx+1 ahi π .ex3 j5h【答案】正确的变量名:ahi,j5h2.4 指出下列正确的数字形式-1.25 ±0.123 89E D2585 10^(2.7) 3^5【答案】2.5 下列表达式若有错误,请改正(1) ts+cos(300) (2) (x+y)^(25÷s)(3) [(X1+X2)*(X1-3)-6]*7 (4) (X÷-2)+sin(1.2+π)【答案】(1) ts+cos(30*3.141593/180)(2) (x+y)^(25/s)(3) ((X1+X2)*(X1-3)-6)*7(4) (X/(-2))+sin(1.2+3.141593)2.6 写出下列数学式的Visual Basic表达式(1) sin(a)[cos(b)+1.5](2) (x1+4)5(e2-a)(3) 36[(x1+π)(x1÷3.3)-b](4) x-2π)【答案】Visual Basic表达式:(1) sin(a)*(cos(b)+1.5)(2) (x1+4)^5*(Exp(2)-a)(3) 36*((X1+3.141593)*(x1/3.3)-b)(4) x^(-2)+5.8*sin(3.5*3.141593)第3章顺序结构程序设计3.1 下列语句是否有错?若有,请改正。
VB程序界面设计在VB程序界面设计过程中,以下是一些关键因素需要考虑的:1.界面布局:合理的布局能够使用户能够快速找到所需功能和信息,常见的布局方式包括居中对齐、流式布局等。
同时,还需要考虑窗口的大小和比例,以适应不同的屏幕分辨率和显示设备。
2.控件选择:VB提供了丰富的控件库,包括文本框、按钮、列表框等。
在设计时,需要选择合适的控件来展示和输入数据,以及实现程序功能。
同时,还可以通过自定义控件的方式,使界面更加独特和专业。
3.颜色和图标:合适的颜色和图标能够提升界面的美观度和易用性。
可以选择符合应用主题和风格的配色方案,并使用统一的图标和按钮样式,使用户更容易理解和识别功能。
4.文字和字体:程序中的文字需要清晰、易读,并且与界面风格统一、合适的字体和字号能够提高用户的阅读体验,同时需要注意文字的布局和对齐,以及特殊符号的使用。
5.状态提示:通过合适的状态提示能够提高用户交互的响应性和准确性。
例如,在长时间操作时,通过进度条或提示窗口显示操作进度,提醒用户等待。
另外,对于错误信息和警告信息,需要使用可视化的方式提示用户,并提供相关的解决方案。
6.功能导航:对于复杂的程序,需要提供易用的导航方式,以帮助用户快速切换功能。
可以设计菜单栏、工具栏或侧边栏等方式,同时可以使用快捷键和功能提高用户的操作效率。
7.帮助文档:在程序界面中提供帮助功能,帮助用户理解和使用程序。
可以编写用户手册、FAQ等文档,并提供功能。
另外,还可以在界面中添加工具提示等方式,对控件的功能和用法进行说明。
8.响应式设计:随着移动设备的普及,响应式设计是不可忽视的重要方面。
可以通过自适应布局和媒体查询等技术,实现在不同终端和屏幕尺寸下的自动适应。
总之,在VB程序界面设计过程中,需要从用户的角度出发,关注用户需求,并结合开发技术和界面设计原则,创造出易用、美观和功能强大的用户界面。
通过合理的布局、控件选择、颜色和图标等设计手段,提升用户的操作体验和工作效率,从而提高程序的易用性和用户满意度。
《VB可视化程序设计》课程教学大纲一、课程名称《VB可视化程序设计》二、学时及学分64学时,4学分三、适用专业软件设计专业、软件设计(日语)专业四、教学目的本课程是信息技术系各专业学生的一门专业课程,具有较强的实践性。
本课程的教学任务是培养能够利用可视化的编程方法独立地开发和设计小型系统、并能够进行相应管理工作的应用型专门人才。
本课程通过理论和实践教学,使学生了解Visual Basic的对象、属性和方法等基本概念和特点;掌握Visual Basic中的数据类型、函数、控制结构的使用方法;熟悉Visual Basic窗体定义及各种控件的使用,了解Visual Basic与数据库的连接,及对数据库的访问。
最后通过一个具体的开发实例使学生初步具有独立的开发和设计、代码编写、系统管理与维护的能力。
五、教学要求在具有一定的程序设计思想的基础上,通过理论与实践相结合的教学方式,采用实验、实践、实例、演示、投影等多种教学方法和手段来保证教学任务的顺利完成。
六、教学学时数分配表七、理论教学内容第一章 Visual Basic 基础(2学时)内容提要:本章要求学生了解VB的发展史,理解VB作为高级编程语言的特点及编程思想,掌握VB6.0的安装、启动方法及其集成开发环境中的菜单栏;工具栏;属性、代码编辑器、立即窗口、工程资源管理器、窗体布局窗口等的使用方法,使学生对VB 有一个初步的了解;理解面向对象程序设计的相关概念;通过介绍一个简单的应用程序,使学生熟悉VB应用程序的开发步骤以及工程、窗体、报表、等文件的运行与保存。
教学重点和难点:VB的编程思想及属性、代码编辑器、立即窗口、工程资源管理器、窗体布局窗口的灵活使用, VB应用程序的开发步骤以及工程、窗体、报表、等文件的运行与保存。
§1.1 Visual Basic概述(0.2学时)一、Visu al Basic简介及版本二、Visual Basic特点三、Visual Basic简介及版本四、Visual Bas ic特点§1.2 VB的安装与启动(0.4学时)一、 Visual Basic的安装过程及软硬件环境要求二、 Visual Basic6.0的启动§1.3 Visual Basic6.0的集成开发环境(0.4学时)一、 Visual Basic的菜单栏、工具箱的介绍二、 Visual Basic的工程资源管理器窗口三、 Visual Basic的属性窗口、窗体布局窗口四、 Visual Basic的代码编辑器窗口五、 Visual Basic的对象浏览器窗口六、 Visual Basic的立即窗口§1.4 面向对象程序设计概念(0.2学时)一、对象和类的概念二、对象的属性、事件和方法§1.5 启动Visual Basic(0.2学时)Visual Basic的启动方法§1.6 最简单的应用程序(0.2学时)一个简单的应用程序实例介绍§1.7 开发VB应用程序的步骤(0.1学时)模仿这个实例介绍开发应用程序的步骤§1.8 如何运行与保存程序(0.2学时)一、程序的运行二、程序的调试三、程序的运行结束四、程序的保存§1.9 生成可执行文件(0.1学时)对于开发好的应用程序进行编译第二章窗体与基本控件(3学时)内容提要:通过本章学习,使学生了解应用程序用户界面设计的原则,掌握窗体的属性、常用事件、常用方法、多窗体和启动窗体的设置等内容,并能进行用户界面的设计制作;了解文本框和标签框的特点和使用方法,掌握文本框和标签框的常用属性、方法及事件,了解在程序运行中通过键盘接收用户输入信息的方法。