Visual Basic程序设计全程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 Visual Basic 6.0的新特点

与以前的版本相比,VB 6.0除了新增了一些控件、函数外,主要的改进是提供了功能强大的数据库和Web开发工具。

1.3.1 控件的新特点

1.新增的控件

VB 6.0新增了一些ActiveX控件,其中有些适用于单机的桌面程序,有些适合于企业级数据访问的开发项目。下面列出与桌面程序有关的控件。

(1)使用CoolBar控件实现可移动的工具条。新的CoolBar控件和在Office、Internet Explorer中用的工具条类似。CoolBar是一种可以在窗口中移动的工具条,而且它还可作为其他ActiveX控件的容器。这样将其他控件嵌入CoolBar就可以给用户提供更灵活的功能。

(2)用ImageCombo控件来操作作图,ImageCombo控件允许在组合框中嵌入图形。在VB 5.0中,ListView控件就好像是可以显示图形的ListBox,但却没有可以显示图形的ComboView,VB 6.0新增了这样的控件ImageCombo。为了实现它,VB 6.0引入了一个新的对象ComboItem,这种新的对象封装了所有ImageCombo控件需要的外观和数据属性。例如它有一个Text属性用来在ImageCombo上显示一行字符串,有一个Image属性定义了要显示的图形。

(3)使用MonthView和DateTimePicker控件来选择日期。VB 6.0使用这两个控件提供了一种新的检查和选择日期的方法。它们让用户在一个日历的环境中控制日期。MonthView控件显示一个完整的日历,可以一天一天或一月一月地来回观看。DateTimePicker控件类似于MonthView,只不过当用户单击此控件的向下箭头时,它的日历将产生下拉列表。

(4)VB 6.0提供了一个新的类似于scrollbar的控件:FlatScrollBar。它不同于ScrollBar的地方在于它有三个外观风格:标准、三维(倾斜的)和二维(当鼠标移动到其上时就变成倾斜的)。

2.动态建立控件

所谓动态,即on-the-fly,是指当前程序在运行时创建。在VB 5.0以下的版本中,如果想要动态地建立控件,必须先放置一个同类型的控件,并且设定它的Index属性值,然后才可以利用“Load控件名(Index)”的方法来动态建立控件。

上述建立控件的方法仍然适用于VB 6.0,但VB 6.0提供了另一个方法,可以不必预先在窗口上布置控件。假如要在Form1中动态地建立一个命令按钮,代码如下。

Option Explicit
'WhithEvents设定cmdMyButton是响应由对象所触发的事件的对象变量
'例如单击事件
Private WithEvents cmdMyButton As CommandButton
Private Sub Forn_Load()
    '动态建立命令按钮
    Set cmdButton=Controls.Add("VB.CommandButton","Button")
    with cmdButton
        .Visible=True '显示出来
        .Width=1500
        .Caption="Hello"
        .Top=1000
        .Left=1000
    End With
End Sub

其中关键的是“Set CmdButton=Controls.Add("VB.CommandButton","Button"")”,Form1.controls.Add表示建立的控件加在Form1可以改成其他的Container类型控件(例如Frame及PictureBox控件),接着被创建的控件会加入指定的容器类控件中。

3.Validate事件和CausesValidation属性

有一个影响所有内部ActiveX控件的增强功能是Validate事件和CausesValidation属性的增加。在以前的版本中,如果要检查一个文本框中敲入的内容是否合乎要求,很可能需要响应文本框的LostFocus事件并判断用户的输入是否正确,如果不正确则需要调用控件SetFocus方法来进行修改,避免在错误的输入后继续操作。这可能给用户带来麻烦,比如用户总不能敲入正确的数据,程序就无法进行下去,甚至不能去看帮助文档。新的Validate事件过程和CausesValidation属性解决了这个问题。

例如下面的例子,演示了如何使用Validate事件来检查一个文本框的数据。在例子中,如果用户在第一个文本框中不敲入“Hello”就不能在第二个文本框中输入。但由于命令按钮的CausesValidation属性设为False,所以用户可以单击它以获得帮助。

Validate事件仅当要接受焦点的控件和失去焦点的控件的CausesValidation属性都设为True才发生。此事件有一个KeepFocus参数,表示控件是否保持焦点,如果用户输入不正确,则将此参数设为True。这样控件就不能失去焦点,除非是焦点被那些CausesValidation属性设为False的控件获得。

新建一个项目,向窗口中加入两个文本框和一个命令按钮,将按钮的CausesValidation属性设为False,而文本框Text1和Text2的CausesValidation属性保持为True。代码如下。

    Private Sub Text1_Validate(KeepFocus As Boolean)
    If Text1.Text<>"Hello" Then
        MsgBox"You cannot go on!"
        KeepFocus=True
    End Sub
    End Sub
    Private Sub Command1_Click()
    Dim strMsg As String
    Dim strQuote As String
    strQuote=""""
    '显示一个提示消息
    strMsg="You must type the word," & strQuote
    strMsg=strMsg &"Hello" & strQuote &""
    strMsg=strMsg & "in the first TextBox."
    MsgBox strMsg,vbInformation,"Instructions"
    End sub

编者手记

注意,在字符串中显示双引号,可以使用Chr$(34),也可以像例子中用""""来实现。例如Name="My name is""Tom""."

4.WindowLess Controls(无窗口句柄的控件)

在VB 5.0以前的版本中,除了Label和Image控件之外,绝大部分控件都含有hWnd属性,这虽然方便调用Windows API,从而可以深入控制控件,但相对而言,这类控件比较浪费资源。

所谓WindowLess Controls(无窗口句柄的控件),就是指没有hWnd属性的控件。如果不需要调用Windows API来控制控件,那么使用这类控件就比较节省内存。在VB 6.0中,所提供的WindowLess Controls控件有TextBox、Frame、commandButton、CheckBox、OptionButton、ComboBox、ListBox、HscrollBar以及VScrollBar。

5.使用新的图形增强

在VB 6.0中,微软增强了许多控件的图形能力。ImageList控件现在支持.gif文件,这个改进比较重要,因为几乎每个使用图形的控件都有一个与之相关联的ImageList控件。ListView和TabStrip控件也改进了,允许使用图片和图标来装饰和描述。

1.3.2 数据库

数据库新增的功能是VB 6.0与VB 5.0差别最大的部分。它除了增加Web数据库的功能之外,还有诸如与SQL服务器的连接、提供数据库管理环境、数据库控件的开发等。

对于使用ASP程序来访问Web数据库,在存取过程中,最重要的控件是ADO(Active Data Objects)。ASP程序可以存取Web数据库其实也没有什么特别的地方,因为ASP程序和Web数据通常是位于同一个Web服务器上的,所以ASP程序存取的实际上是本地数据库。

如果不想编写ASP程序,而想利用VB程序来访问和存取真正位于远端的Web数据库,那么就必须使用RDS(Remote Data Service)。简单地说,RDS就是本地ADO控件存取Web数据库的代理者,把RDS同ADO连接在一起,VB程序便可以达到存取Web数据库的目的。

对于使用VB程序来存取Web数据库,问题是VB 5.0中没有提供任何与ADO控件连接在一起的Data Grid控件(VB 5.0所提供的DBGrid可以跟DAO(Data Access Objects)数据控件连接在一起,但无法与ADO连接在一起)。因此虽然VB 5.0可以通过RDS和ADO存取Web数据库,但却无法以DBGrid这类控件轻松地存取Web数据库。

VB 6.0提供了ADODC(ADO DataControl),也提供了新版本的Data Grid,目的就是以更轻松的方式来存取Web数据库。

1.3.3 语言的新增特性

除了对ActiveX控件的一些改进,VB 6.0也对语言本身提供了一些新的特性。这些新特性将使在编程时花费的时间更少。例如,Public属性、方法的参数或返回值类型可以是用户自定义的结构;函数和属性过程可以返回数组;可以对大小变化的数组赋值,但固定大小的数组不能出现在赋值等式的左边。VB 6.0还新增了许多字符串操作函数,这些内容将在后面的内容中详细介绍。

另外较重要的改进是有了File System Object。在VB以前的版本中,如果要获得文件系统的有关信息或完成文件操作,例如写文件、转目录等,必须完成一系列烦琐的步骤。在VB 6.0中,由于有了一个新的对象File System Object而不再麻烦。这个对象是Visual Basic Scripting Library的一部分。

Scripting控件是IE 4.0提供的控件。在VB 5.0中如果要引用它,就要选择“Project”菜单中的“Reference”,然后引用“Microsoft Scripting Runtime”。VB 6.0则正式包含了这个控件。Scripting控件最方便的地方在于它把文件夹和文件都封装成控件了,使用Scripting控件可以方便地完成以前比较麻烦的一些事情。

1.3.4 网络开发

VB在Internet开发上的定位十分明确,可以使用VBScript编写在有Internet Explorer的桌面计算机上运行的应用程序,也可以用VBScript编写服务器端的应用程序。另外,还提供了几个网络控件,如Winsock控件、WebBrowser控件和Internet Transfer control等。

VB 6.0加大了Internet开发的比重,通过引入一种新的项目类型——IIS应用,扩展了微软的Internet Information Scryer编写服务器端应用的能力。另外,VB也引入了一种叫DHTML应用(Dynamic Hypertext Markup Language,由所有的Web浏览器使用的语言)的项目类型,以扩展和简化DHTML的编程。

微软扩展了Setup向导,使之成为一套新的工具,使得从一个Web服务器发布应用更加容易,这些工具是Web Publishing Wizard和Package and Deployment Wizard。