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 属性是唯一的可以用它来标识特定面板的属性。