VB 版 (精华区)

应用程序编制实例之七
用Visual Basic设计更好的用户界面
有时在一个窗口中出现较多的控制件时,如果能向导式地建议用户下一步该做什么,不
失为上策。
在Visual Basic的程序设计中,我们可以使用语句:Object.SetFaocus使我们希望的控
件得到
输入焦点,举个例子:在Form1中我们加入一个按钮Command1和一个文本输入Text1,双
击按钮
控件,然后键入如下代码:
Text1.SetFocus
再按F5运行程序,您就会看到一单击按钮,文本框会立即取得输入焦点。另外,我们还
可以使
用语句:Sendkeys "{TAB}"
使下一个控件获得焦点,但我们需要在设计时确定各控件的Index值。(在Properties窗
口中)
让控件自己感知自己的工作已完成,而主动将焦点让出,会使用户觉得应用程序很聪明
,也减
少了用户出错的机会。
可是当焦点切换的两个控件相隔有一定距离时,上述的方法有时也不足以引起用户的注
意,那
么一种好的解决方法是将鼠标箭头也移到控件上。可惜,VB并不支持鼠标移动,那我们
就求助
API函数,API函数SetCursorPos可让我们如愿。
下面是子程序MoveCursorOn,它可让鼠标移动到指定控件上方。
下列代码请放在declarations段中:
Type PoinTAPI
 x As Integer
 y As Integer
End Type
Declare Sub SetCursorPos Lib "User"(Byval x As Integer,Byval y As Integer)
Declare Sub ClientToScreen Lib "User"(Byval hwnd As Integer,IpPoint As Point
API)
Declare Function GetParent Lib "User"(Byval  hwnd  As  Integer)As Integer
然后建立一个新的子程序(ALT+N→N→键入子程序名MoveCursorOn),下面是子程序的代
码:
Sub MoveCursorOn(source As Control)
     Dim Pt As PoinTAPI
     Dim hparent As Integer
     p.x=(Source.Left+Source.Width/2)/Screen.Twipsperpixel)
     p.y=(Source.Top+Source.Height/2)/Screen.Twipsperpixel)
     hparent=GetParent(source.hwnd)
     ClientToScreen hparent pt
     SetCursorPos  pt.x  pt.y
     End Sub
使用该子程序很容易,例如我们想把鼠标移动到按钮Command1上,就可使用语句
Move Cursor On Command1
您会看到鼠标箭头已经指着按钮Command1。
需要说明的是,千万不要滥用该子程序。让鼠标自己满屏乱飞,我们的用户会感到失去
对应用
程序的控制,这是违反我们的初衷的。
在有数个输入框的窗口中(这在数据库应用程序中是很典型的),当用户完成第一个输入
框的输
入后,总爱习惯性的加一个回车,希望输入焦点落到下一个输入框中(DOS中大多数应用
程序是
如此),可往往事与愿违,这一回车却触发了拥有Default特性的按钮,结果不是关闭了
当前窗
口就是又蹦出另一窗口。用户睁大眼睛看着屏幕,“咦?!我到底做了什么?”这是Wi
ndows新
用户经常遇到的事情。
解决它其实很容易,只需在输入框的KeyPress事件中加入如下代码:
IF KeyASCII=13 Then
   KeyASCII=0
   Sendkeys "{TAB}"
END IF
这样,当用户在这个输入框中键入Enter时,就象键入TAB键时,焦点被移到下一控件上
。但需
注意,这种方法不适用于多行的TextBox,即TextBox的MultiLine特性设为True时,因为
这时
的回车键是起换行的作用。
利用VB三维面板控件设计流动条
VB提供了一个三维面板控件,利用这个控件可设计图形效果的立体界面,从而使应用程

序的截面显得更生动、美观,该控件还可以设置各种形式的背景,然后在背景上显示各
种形式
的字符,令人感兴趣的是,使用三维面板控件,还可设计我们经常在安装程序中看到的
表示安
装进度的流动条,并可显示进程的流动条,并可显示进程百分比,改变流动条的颜色等

一. 介绍属性
FloodColor: 确定流动条的颜色,缺省为蓝色。
FloodPercent: 显示当前过程如流动条进行的百分比,参数改变时显示的百分数和流动
条的
面积改变,设为一整型值,取值范围是0~100。
FloodShowpct: 决定是否在三维面板控件上显示百分比,是一个逻辑值。为Ture时显示

为False时不显示。
FloodType: 表示用户对三维面板控件的使用方式。可取值有6个,如下所示:
0 缺省设置
1 表示流动条方向从左到右
2 表示流动条方向从右到左
3 表示流动条方向从上到下
4 表示流动条方向从下到上
5 表示使用指定的颜色从圆心向外画圆
二. 流动条设计
如果在Windows 3.x下,工具箱中不存在三维面板控件,可选择File菜单中的"Add File
…"
进行添加,在弹出的对话框中找到Windows\System目录,然后选定Threed.vbx文件即可
,如
果使用VB 4.0,需在Tools菜单中选择Custom Control命令,选定Sheridan 3d Control
s项,按
OK按纽,可在工具箱中增加三维面板控件。
启动VB 3.0,在窗体中画一水平方向的长方形三维面板控件,按F4,在属性窗口中设置

其Name为P3d、Bevellnner为2-Raised、FloodType为1、FloodshowPct为True,再在窗体
中画
一个按纽Command1,双击该按纽,键入下面的代码:
Sub Command1_Click()
 P3d.floodpercent=0
 For N%=1 To 100
  If N%>100 Then
  Exit sub
  End If
  P3d.FloodPercent=N%
 Next N%
End Sub
按F5,运行该程序,点击Command按纽,即可看到流动条效果。
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.003毫秒