说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB应用程序中的工具提示和状态显示

HTML文档下载 WORD文档下载 PDF文档下载
VB应用程序中的工具提示和状态显示
(作者:石运伟 王丽梅)

一 前言


  设计VB应用程序过程中,为了方便用户操作,不仅要有在线帮助系统以外,还应具有良好的工具提示和状态显示。由于开发完整的帮助系统十分繁琐,这样简单的工具提示和状态显示对于一般的应用程序就显得尤其重要。在应用程序中充分利用这两种用户辅助模式,可以减少用户的操作错误,从而提高工作效率,也使您的程序更加专业化。下面介绍几种方法来实现工具提示和状态显示,您可以根据您自己的应用程序来恰当的选择使用。



二 工具提示


当用户在用户界面上搜索时,工具提示是一种向他们显示信息的好方法。工具提示是个小标签,当鼠标指针在控件上停留一会儿就可以显示,通常包含此控件的功能描述。正常情况下工具提示与工具栏结合使用,如图1所示。



图1 Visual Basic 工具栏的工具提示

  大多数 Visual Basic 控件都包含用来显示工具提示的属性:ToolTipText。在运行过程中光标在对象上徘徊约一秒钟,设置的字符串将显示在该对象下面的一个小矩形框中。以下代码将对名称为“cmdPrint”的命令按钮提供工具提示。



cmdPrint.ToolTipText = "打印当前文档"



这样使用该属性就能以简明扼要的语言来解释该对象的功能,说明性文本能确保明确地传达给用户所需要的消息帮助。



  除了利用ToolTipText 属性以外,还可以利用“这是什么”帮助来完成工具提示。当用户选取“这是什么”帮助并单击控件上的“这是什么”光标时,“这是什么”帮助提供了和弹出式“帮助”主题的链接(如图2所示)。





图2 “这是什么”帮助的弹出式窗口



  要从菜单或工具栏使“这是什么”帮助有效,首先要做相应的帮助主题,



然后执行以下步骤:



(1)选取希望为其提供帮助的控件。



(2)在“属性”窗口中,选取 WhatsThisHelpID 属性。



(3)为相关的弹出式“帮助”主题输入上下文标识符号。



(4)为任何其他控件重复步骤 1 到步骤 3。



(5)选取窗体。



(6)在“属性”窗口中,设置该窗体的 WhatsThisHelp 属性为 True。



(7)在菜单或工具栏按钮的 Click 事件中,键入以下代码:



formname.WhatsThisHelp



  当用户单击该按钮或菜单时,鼠标指针会改变为“这是什么”帮助指针。为了使在自定义对话窗体的标题栏上的“这是什么”帮助有效,要设置该窗体的 WhatsThisButton 与 WhatsThisHelp 属性为 True



如果是简短的解释可以用ToolTipText属性,相对复杂的解释可以用“这是什么”帮助,当然“这是什么”帮助制作过程复杂一些,但它提供给用户的信息多一些。



三 状态显示


  状态显示也可以为用户提供帮助服务,可以用来提示用户操作或显示程序运行状态。状态显示是提供那些不太适合工具提示消息的一种好方法。Label 控件可以用作状态显示,包括在 Visual Basic 的专业版与企业版中的StatusBar控件和ProgressBar控件都可用来显示状态消息。



1利用Label控件



  显示的文本可以用以下两种方法中的一种来更新:用控件或窗体的 GotFocus 事件,或者用 MouseMove 事件。如果想把显示的内容用作帮助,需要利用Label控件的Visible 属性。



  首先选取希望为其显示消息的那个控件,在其右下方(你认为合适的位置)添加 Label 控件,设置Visible = False;在要显示信息的控件的 MouseMove(或 GotFocus)事件中添加以下代码:



‘要求用户在Text1内输入用户的身份证号



Labelname.Visible = True



Labelname.AutoSize = True



Labelname.Caption = "请在此输入您的身份证号"



当鼠标移到该控件上(例如Text1)时,这条消息将显示在此 Label 控件中。



为了仅在鼠标移动到该控件上时进行显示,鼠标一离开控件就把Label控件隐藏,可以在该窗体的MouseMove(或要显示信息控件的LostFocus)事件中添加以下代码:



Labelname.Visible=False



2 利用ProgressBar控件



ProgressBar 控件的主要功能是用图形方式显示事务的进程,该控件的边框在事务进行过程中逐渐被充满。它可以提示用户通过网络进行文件传输的进展情况,可以反映要持续几秒钟以上的过程的进展情况,还可以显示正在运行的复杂算法的进展情况。通常要进行需要几秒钟才能完成的操作时,就可使用 ProgressBar来进行状态显示。ProgressBar控件为用户提供了可视化的反馈信息,它的应用还可以优化应用程序的外观速度。



ProgressBar控件的Value 属性决定该控件被填充多少,其 Min 和 Max 属性设置该控件的界限。要显示某个操作的进展情况,Value 属性将持续增长,直到达到了由 Max 属性定义的最大值为止。这样该控件显示的填充块的数目总是 Value 属性与Max和Min 属性之差的比值。例如,如果 Min 属性被设置为 1,Max 属性被设置为 100,Value 属性为 50,那么该控件将显示百分之五十的填充块。



在操作开始之前通常不显示ProgressBar控件,并且在操作结束之后它应随之消失。在操作开始时,将 Visible 属性设置为 True 以显示该控件,并在操作结束时,将该属性重新设置为 False 以隐藏该控件。



  下面的示例说明如何用一个名为 ProgressBar1 的 ProgressBar 控件,来表示对一个大数组冗长的操作进度。把一个 CommandButton 控件和一个 ProgressBar 控件放在同一窗体里。



Private Sub Command1_Click()



Dim Counter As Integer



Dim Workarea(250) As String



ProgressBar1.Min = LBound(Workarea)



ProgressBar1.Max = UBound(Workarea)



ProgressBar1.Visible = True



注释:设置进度的值为 Min。



ProgressBar1.Value = ProgressBar1.Min



注释:在整个数组中循环。



For Counter = LBound(Workarea) To UBound(Workarea)



   注释:设置数组中每项的初始值。



   Workarea(Counter) = “初始值为”& Counter



   ProgressBar1.Value = Counter



Next Counter



ProgressBar1.Visible = False



ProgressBar1.Value = ProgressBar1.Min



End Sub







Private Sub Form_Load()



ProgressBar1.Visible = False



End Sub



3 利用StatusBar控件



  StatusBar 控件由若干个面板构成,主要用来显示应用程序的运行状态。它既可以节省界面空间又可包含丰富的信息。例如显示数据库表的有关情况(记录总数、以及当前记录在数据库中的位置等),显示关于 RichTextBox 控件的文本和字体状态的信息,显示键盘的状态(例如 Caps Lock 或 Number Lock),显示当前日期或时间等。



StatusBar 控件是由 Panels 集合构成的,在该集合中最多可包含十六个 Panel 对象。每个对象可以显示一个图象和文本。在运行时,可以通过 Text、Picture 和 Width 属性动态地改变任何 Panel 对象的文本、图象或宽度。要在设计时添加 Panel 对象时,可以用鼠标右键单击控件,然后单击“属性”,即可打开“属性页”对话框。使用该对话框,既可以添加 Panel 对象,也可以设置每个面板的各种属性。其中只需简单地设置StatusBar 控件的Style 属性就能够用最少的代码显示键盘状态、时间和日期等信息。



如果要在运行时添加 Panel 对象,可以显示应用程序运行过程中不断变化的内容。首先声明 Panel 类型的对象变量,然后将该对象变量设置为由 Add 方法创建的 Panel,如下面的代码所示:



注释:StatusBar 控件的名称为“sbr1”。



Dim pnlX As Panel



Set pnlX = sbr1.Panels.Add()



一旦创建了 Panel 对象,并设置了对象变量引用该新创建的对象,就可以设置该 Panel 的各种属性:



pnlX.Text = Drive1.Drive



pnlX.Picture = LoadPicture("mapnet.bmp")



pnlX.Key = "drive"



Key 属性是唯一的可以用它来标识特定面板的属性。



100个iOS开发/设计面试题汇总,你将如何作答? 王巍:关于Swift学习和Apple Watch开发的一些建议 微软发全息影像头戴装置HoloLens 体验很真实 相爱相杀?盘点迎新年的移动互联网撕逼大战 HealthKit开发教程:用Swift编写个健康应用! 真的不够用!Apple Watch常规使用续航3.5小时 Activiti实战 百度BAE携手科技寺助力应用一站式部署 不仅仅是高速传输,Qualcomm演示骁龙810处理器功能 利用JS高效开发原生游戏 Cocos 2d-JS中文版API文档正式上线 同行代码审查实战分析 在Swift中使用JavaScript的方法和技巧 增强用户体验 让网站和APP更具动感的几点建议 《近匠》蒲公英:一站式免费应用内测平台 用Swift开发iOS 8新应用:斯坦福免费课程上线iTunes U Swift开发必备技巧:static和class的使用 你可能没听过的11个Python库 移动Web技术的春天来了?Facebook发布React Native,用JavaScript开发移动原生应用 开发不易!2015年移动应用开发趋势总结 .NET开发者必备的工具箱 热情不减!七款Swift应用开源项目推荐 如何给苹果提交Bug或功能需求? 深入钻研Augular两年 谈谈其究竟适用于哪些场合 唐巧:谈谈React Native 在Swift中,如何更优雅地处理网络返回数据? Spark生态系统解析及基于Redis的开源分布式服务Codis 阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析 Bowery为什么放弃Node.js,转向Go? 《近匠》有了APM,用户快到碗里来——专访听云CTO Wood 联通WO+梦工厂唐敏:走进厦门 构建移动数字生态 HTML5 VS 原生,世界究竟是谁的? 对象无效是怎么回事?急,谢谢,马上结贴 有关SQL数据库远程传输及服务器配置及设置影响的问题,敬请高手积极指教!!有请大力!!! 怎样通过DBNavigator实现对DBGrid 中的记录末添加记录? 啊,注册tucows,downloads.com都要收费的?是吗 怎样把任意一个文件读到oracle的blob里,急啊!! 公务贴(八月七日) 野种子 这样可以吗?请高手帮忙。 我要做一个软件,这个软件可以进行光盘(VCD,DVD)的刻录,请问哪里有源代码下载? MSMQ服务器如何安装??? 高分提问,请高手相助! 概念问题:Lun,scsi bus number,host adapter number,scsi id 这些含义如何 如何Copy有损毁的VCD(唐伯虎点秋香)? WebLogic7 的乱码问题??? 与的问题 有人给你送礼希望你能....你会如何? 我该选哪一个?(在线等) 请问如何在word里嵌入一个工具条 我的一台服务器安装的是Win2000 Server版,而客户端安装的是Win98,当通过客户端的Win98系统去访问服务器时,就会弹出一个要求输入网络密 两个问题请教,做过大项目的请来帮忙 傻问题大家帮帮忙 简单问题!请指点(急!在线等!) 讨论:是用全局变量,还是用发送消息? 关于jsp与javascript之间的问题,紧急!!!对高手的挑战 我想写一个窗体,要使它不在任务栏上 如何用php语法进行文件的直接下载,高手请进 怎样利用CFile类来完成创建多个文件夹? 请exee、jasminelai、smart2me、patricklee01() 、greenazcf进来拿分!!! 请各位帮个忙,FileAge()、raise是什么意思?虽然是简单希望各位帮忙!! 怎样做个SPY++查不到句柄的控件? 请教表格自适应的问题 知道并了解VCL底层运作机制的朋友切磋一下好吗? VB如何调用RAR? 控制台程序中字符串的定义问题 ====高分求助!!===== 請問如何設置table使之在dba studio 看不到但是通過sql/plus可以看到 一个关于表单的简单问题<select name=..>中怎样确定选定的是第几项 ==找错!!! 两行代码,错在哪儿??== 有谁知道SQL SERVER为什么会占用600多M的内存? VB如何调用RAR? ====高分求助!!===== 哪位大侠知道可以下载电子书籍的好网站~~~(当然是关于计算机的。。。) 关于winrunner的delphi插件问题 截取swf动画里面的图片用什么软件,下载地址有吗? 上网速度慢?为何? win2000,安装在C:,NTFS格式,由于误操作,现在无法进入,出现提示为:missing operating system,怎么解决,急!(不想格式化重装) 请问如何在word里嵌入一个工具条 有关对话框的状态栏的问题? 怎样用DOM调用在服务器端动态生成的元素? 昨夜冻的肚子疼,不爽! 散分。 I always got an A on maths tests ( )this year .Ain B on C/ 谁知道“英勇的郑军官兵冒着敌人密集的炮火,驾着船舰向敌军舰队冲去.”的缩句不知道“郑军向敌军冲去. “等的心烦”是什么短语?谢谢 苦恼至极是什么短语 求形容大口大口郁闷地喝酒的成语… 对···感到郁闷 翻译成词组 熊猫是什么科?我觉得是熊科.但按偏正词组结构,应该叫猫熊呀!郁闷. He was a great person who never gave up.是用gave吗? 土星是什么颜色 同意句转换We are cooking=We are doing ____ things.可填一词 蜡烛的重点不是写战斗场面,又为什么多次对炮火进行描写? 南京地铁或将下发“禁食令”地铁禁食将万圣节郭美美杨贵妃妆扮吓呆网友 称最南京市农委加大监测 确保市民吃上放心“农家乐”食品安全存隐患 南京农委表中国部分军事设施现安全隐患 影响武器女子因口角棍击刀捅杀死丈夫 分尸蒸煮10月全国平均气温较常年偏高 呈现“从对等的不了解开始对话欧元区面临通胀过低威胁二成美国人称见过鬼 女性比男性更易“美国万圣节迎购物潮 商家赠特色礼品揽破解经济下行压力 加快郴州工业转型刺穿主动脉“杀熟”的微商注定走不远列入教育部重点课题龙山大班额“瘦身”中共中央政治局召开会议互联网经济,也许天空都不是极限2015年企业转型峰会活动因材施教 “梦想成真”课程“互联互通”技能“真刀实枪”倾力造绿增绿 只为城市更美
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘