⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m55.htm

📁 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程
💻 HTM
字号:
<html>
<head>
<title>VB教程</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 
</head>
<p align="center"><script src="../../1.js"></script></a>

<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center> 
  <table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
    <tbody> 
     
    <tr> 
      <td bgcolor=#000000 height=9> 
        <div align=center class=H1> 对象变量及其在VB编程中的妙用</font> </font> </font></div>
      </td>
    </tr>
    <tr valign=top> 
      <td class=H1 height=76>   <br>
           <font color="#000000">一、对象变量的声明及其类型</font></span>  <br>
        <br>
          对象变量是这样一类变量:它指向某一类对象,并具有此类对象的所有性质和属性,对象变量可看作是一个指针,指向项目中某一特定类型的对象,对此类变量进行控制和操作,就是对项目中所有属于这一类的对象进行相同的控制和操作。它是一种具有对象性质的特殊变量。<br>
        <br>
          这些被对象变量指向的对象可以是窗体、控制(包括自定义控制)、屏幕以及数据库的表、记录、字段等对象。<br>
        <br>
          对象变量也是有类型的,而且针对具体的对象有不同的定义方式。所以对象变量在使用前也必须先声明后使用。仍然可以用Dim、Static、Global等关键字来声明对象变量。<br>
        <br>
        例如:Dim Acontrol As Control<br>
        Dim Bcontrol As New Form1<br>
        Dim Ccontrol As CommandButton<br>
        Dim Dcontrol As Command1<br>
        <br>
        可见,对象类型包括控制和具体对象的名称(如Command1和Form1)、控制集合(如Control、CommandButton等)、窗体集合(Form)以及屏幕对象(Screen)等。这些对象类型的集合有大有小。一旦声明之后,VB将为对象变量分配内存空间(大小与具体类型有关),在内存中建立一个其指向的对象或对象集合的拷贝。<br>
        <br>
        并且CommandButton、Label、TextBox等控制对象又可分别看作是同一类控制的集合或总称,是CommandButton1、Label1、TextBox1等具体子对象的父对象。<br>
        <br>
        可见,对象变量在VB中应用极为广泛,VB中的绝大多数对象都可以有自己的对象变量。<br>
        <br>
         二、对象变量的集合和指针特性</b><br>
        <br>
        对象变量还可以理解为一个项目(Project)中属于某种类型对象的集合,这个集合可以有很多个对象,也可以只有一个,甚至可以是空集(即该种类型的对象在项目或窗体内不存在)。<br>
        <br>
        对应于对象变量的集合特性,其Count属性是一个非常重要的属性。所有对象变量都具有Count属性。一旦在程序中声明了对象变量后,该对象变量的Count属性自动记录该类对象的个数,因而通过读取Count属性值,便可了解到该类对象的个数。利用它,对同一类对象的某一共同属性进行访问或操作(如同一窗体上的所有控制的字体大小)是对象变量应用的典范之一,能极大地节省程序代码。另一方面,对一类对象进行搜寻,即可选出符合一定条件的子对象,从而达到程序智能化的目的。<br>
        <br>
        在对象变量声明之后,再用Set语句使一个对象变量指向一个具体的控制,这样所有与对象变量所指向的对象相关联的属性(如位置、大小、状态、内容等)均可通过对象变量来传递。这样对象变量就具有了对象的特点,可以像对象一样在程序中赋予其属性。当需要对一个指定的窗体或控件的属性进行操作时,可用过程、函数及方法对其进行访问。当用户改变一个对象变量的性质时,与之相关联的原始数据也随之而改变,因此具有了类似与过程中的通过指针传送参数的效果。这即是对象变量的指针特性。<br>
        <br>
        另外,Set语句还可用来简化很长的控件指针。值得注意的是,Set语句并不是单纯的变量赋值语句,它不像赋值语句一样产生对象的一个拷贝,而是把一个对象变量设定为对象指针,指向不同对象变量。<br>
        <br>
        下面是一个程序实例,主要完成对一个项目内所有控制的字体、字号进行统一的操作。<br>
        <br>
        (1)在一个全局模块文件中定义两个全局变量。<br>
        Global Font As Control,Aform As Form<br>
        (2)在此全局模块文件中定义一个子过程FontAllSame。具体如下:<br>
        Sub FontAllSame( )<br>
        For I% = 0 To Forms.Count - 1 ’Count属性值是从0开始的整数<br>
        Set Aform = Forms(I%)<br>
        For J% = 0 To Aform.Controls.Count - 1<br>
        Set Font = Aform.Controls(J%)<br>
        Font.FontName = “宋体”<br>
        Font.FontSize = 13.5<br>
        Next J%<br>
        Next I%<br>
        End Sub<br>
        (3)在项目中的所有窗体的Activate事件中加入以下语句:<br>
        FontAllSame<br>
        <br>
        通过以上程序代码,此项目中的任一窗体一经载入,其上所有控件的字体就都被指定为宋体,字号为13.5。<br>
        <br>
        由以上可见,如果对象变量可以指向项目中所有满足一定条件的对象,那么对对象变量进行定向操作,被指向的所有对象的属性即可按用户的意图变化,从而达到控制程序流程的目的。<br>
        <br>
        下面是一段可以在一个项目中搜寻到非使能控制的程序实例。<br>
        Dim Acontrol As Control ,I as Integer<br>
        For I = 0 To Controls.Count - 1<br>
        If Not( Control(I).Enabled ) Then<br>
        Set Acontrol = Control( I )<br>
        Acontrol.Enabled = True ’非使能控制改为使能状态<br>
        Msg1$=Acontrol.Caption + "控制已改为使能状态!"<br>
        Msgbox Msg1$ <br>
        End If<br>
        Next I<br>
        可见,灵活应用对象变量还可以帮助程序判断控制的状态,这种技巧在程序调试中可以节省很多时间和力气。<br>
        <br>
        当对象变量使用完后,可用以下语句释放对象变量所占的内存空间。<br>
        <br>
        Set 对象变量 = Nothing<br>
          在对象变量的声明中还可以使用New关键字,通过它可以在内存中产生一个与原始窗体或控制完全相同的拷贝,这种特性在对窗体或控制的大规模内存调度时极为有意义(前提是内存足够)。这种相同的拷贝还足以完成数据的缓冲以及一些特技效果的实现。如在窗口对象变量的拷贝中预先改变窗口的界面设计,再用一个简单的赋值语句,再加上一个清屏命令即可实现窗口的突变。使用得当还可以实现一定的动画效果。由此可见,对象变量在大内存调度中也是很有意义的,它能节省一大批变量的声明和定义。<br>
        <br>
          对于同一对象的多个拷贝,可以用Is操作符组成的比较表达式来进行判断。这种方式尤其适用于对同一对象进行调用和操作又要防止冲突的情况,在程序中可以防止改变其中一个变量的属性会导致另一个变量的属性发生变化。<br>
        例如<br>
        Dim Aform As New Form1<br>
        Dim Bform As Form<br>
        Sub Compare( )<br>
        If Aform Is Bform Then<br>
        Msg1$ = “两者属于同一窗体!”<br>
        Else<br>
        Msg1$ = “两者不属于同一窗体!”<br>
        End If<br>
        MsgBox Msg1$<br>
        End Sub<br>
        <br>
        <b>三、对象变量在数据库编程中的应用</b><br>
          运用数据存取对象变量(Data Access Object Variable)的方法是VB专业版数据库编程中最重要的三种方法之一。相比使用数据控制项和绑定控制项和直接调用ODBC 
        2.0 API接口函数两种方法而言,它可以极大地提高数据库应用程序的灵活性和精巧性。除了一些需求有限的数据库应用可以用基本的数据控件和绑定控制项法解决以外,其它的VB数据库应用程序大都能用数据存取对象法来完成。<br>
        <br>
          利用它可以在程序中存取ODBC 2.0的管理函数;可以在执行期间动态地建立表、字段、及索引;同步更新几张表;在执行期间“显示”数据库的基本结构;可以控制多种记录类型:Dynaset、Snapshot及Table记录集合对象;可以存取存储过程和查询动作;可以存取数据库集合对象,如TableDefs、Fields、Indexes以及QueryDefs;具有真正的事物处理能力。<br>
        <br>
          首先,只有VB的专业版才支持使用数据存取对象变量的编程方法。即只有使用专业版才能获得数据存取对象变量。<br>
        <br>
          数据存取对象最大的扩展是它提供了一个一致的数据库编程接口。即以抽象方式表示的数据库的内部结构和操作,这种抽象可以将许多复杂问题(包括静态操作和动态操作)封装起来。显然,VB的数据存取对象在ODBC 
        2.0数据库接口之上又提供了一个简明一致的附加层次。<br>
        <br>
          在VB的数据存取对象里,所有的数据库均可以看作是一个由结构良好、一致的对象所组成的大包。程序员可以使用对象的属性及方法对这些对象进行检验、操作、创建及删除。<br>
        <br>
        VB专业版中的数据存取对象可以分为两类,一类用于数据库结构的维护和管理,其中表示数据库结构时可以使用下面的对象:DataBase、TableDef、Field、Index,以及三个集合(Collection):TableDefs、Fields和Indexes。另一类数据存取对象则用于数据的存取。<br>
        <br>
        每一个对象集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。<br>
        <br>
        一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。<br>
        <br>
        数据库对象变量之间的关系具体如图1所示。其中可见DataBase是最基本也是最重要的变量。<br>
        <br>
        以下是打开一个数据库后,并取得其内各个表单(Table)的具体信息的程序实例。<br>
        Sub PrintTableInfo ( )<br>
        Dim I,J As Integer,Fname As String<br>
        Dim Db1 As DataBase,Td1 As TableDefs<br>
        Dim Fld1 As Fields<br>
        Dim FieldNum As Integer<br>
        ’CMD1是一个打开文件对话框的控制名<br>
        CMD1.Filter = “ 数据库文件(*.MDB)|*.MDB|所有文件|*.* ” <br>
        CMD1.DialogTitle = “ 调入数据库文件 ”<br>
        CMD1.FilterIndex = 1<br>
        CMD1.Action = 1<br>
        Fname$ = CMD1.Filename<br>
        Set Db1 = OpenDataBase( Fname$ ) ’打开一个数据库文件<br>
        Set Td1 = Db1.TableDefs<br>
        ’读取并在窗体内打印所有表单的名字,每个表单内的字段数以及字段名和类型<br>
        For I = 0 To Db1.TableDefs.Count - 1<br>
        Print Td1(I).Name<br>
        Set Fld1 = Td1( I ).Fields<br>
        FieldNum% = Fld1.Count<br>
        Print “当前表单共有”;Str$( FieldNum );“个字段”<br>
        For J=0 To Fld1.Count - 1<br>
        Print “字段名:”,Fld1( J ).Name<br>
        Print “类型:”,Fld1( J ).Type<br>
        Next J<br>
        Next I<br>
        End Sub<br>
        <br>
          从以上可以清晰地看到各数据库对象变量的层次关系。可见对较复杂和有更多要求的数据库应用程序来说,使用数据存取对象变量是最好的一种方法。<br>
        <br>
        以上程序均在486 DX4/100机上调试通过。<br>
        <br>
        <b>四、结束语</b><br>
        <br>
          对象变量是VB提供的一类很特殊但极有用的变量,利用它可极大地提高编程的效率和灵活性。特别是数据存取对象变量在VB的数据库编程中具有不可替代的作用。因而熟悉对象变量的应用技巧对挖掘VB的编程潜力和提升VB的编程功力是绝对有帮助的。 
        </font></span>                                          <br>
        <br>
        <br>
                                                    </b></font> </td>
    </tr>
  
  </table>
</div>
<p align="center"><a href="../../pian/vb.htm">回首页</a>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -