灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:10011回复:0

Visual Basic 控件的使用

楼主#
更多 发布于:2012-09-08 11:51

使用 ADO Data 控件

    ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLE DB 规范的数据源。使用Visual Basic 的类模块也可以很方便地创建子集的数据提供者。
    尽管可以在应用程序中直接使用 ActiveX 数据对象,但 ADO Data 控件有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使您可以用最少的代码创建数据库应用程序。

50_3710_6e348b3ca9d1620.gif[删除]
    在 Visual Basic 的“工具箱”中,不少控件都可以作为数据绑定的控件,包括复选框、组合框、图像、标签、列表框、图片框以及文本框控件等。此外,Visual Basic 还包括了若干种数据绑定的 ActiveX 控件,诸如DataGrid、DataCombo、Chart以及 DataList 控件等。用户也可以创建自己的数据绑定的 ActiveX 控件,或从其他开发商购买控件。
    Visual Basic以前的版本提供了内在的 Data 控件和 Remote Data 控件(RDC) 来进行数据访问。这两种控件仍包括在 Visual Basic 中,以提供向后兼容。不过,因为 ADO 的适应性更广,因此建议用户使用 ADO Data 控件来创建新的数据库应用程序。
    详细信息 关于数据绑定的控件的完整列表位于“绑定到 ADO Data 控件的控件”中。要了解如何使用这些内在的Data 控件或 Remote Data 控件,请参阅“使用 Data 控件”或“使用 Remote Data 控件”。关于创建数据提供者的详细信息,请参阅“创建数据识别类”。

    可能的用法
     连接一个本地数据库或远程数据库
     打开一个指定的数据库表,或定义一个基于结构化查询语言 (SQL) 的查询、或存储过程、或该数据库中的表的视图的记录集合。
     将数据字段的数值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值。
     添加新的记录,或根据对显示在绑定的控件中的数据的任何更改来更新一个数据库
    要创建一个客户或前端数据库应用程序,应在窗体中添加 ADO Data 控件,以及其它所需要的任何 Visual Basic 控件。可以根据您的需要在窗体中放置多个 ADO Data 控件。不过,请注意,这种控件是一种相当“昂贵”的创建连接的方法,应在第一个控件至少有两个连接,且以后的每个控件至少多一个连接时使用。

    用最少的代码创建一个前端数据库应用程序
    通过在设计时设置一些属性,可以用最少的代码来创建一个数据库应用程序。如果正在使用OLE DB 数据源,则相应的Microsoft 数据链接名称(DataLink Name)(.MDL) 必须是在您的机器上创建的。请参阅“创建 Northwind的OLE DB Data Link”,以获得一个循序渐进的示例。
    要创建一个简单的前端数据库应用程序:
    1. 在窗体上放置一个 ADO Data 控件(该图标的工具提示为 "ADODC")如果该控件不在“工具箱”中,请按 CTRL+T 键,显示“部件”对话框。在这个“部件”对话框中,单击“Microsoft ADO Data Control”。
    2. 在“工具箱”中,单击选定“ADO Data控件”。然后按 F4 键显示“属性”窗口。
    3. 在“属性”窗口中,单击“ConnectionString”显示“ConnectionString”对话框。
    4. 如果您已经创建了一个 Microsoft 数据链接文件(Data Link file)(.MDL),请选择“使用 OLE DB 文件”并单击“浏览”,以找到计算机上的文件。如果使用 DSN,则单击“使用 ODBC 数据源名”,并从框中选择一个 DSN,或单击“新建”创建一个。如果想创建一个连接字符串,请选择“使用 ConnectionString”,单击“生成”,然后使用“数据链接属性”对话框创建一个连接字符串。在创建连接字符串后,单击“确定”。ConnectionString 属性将使用一个类似于下面这一行的字符串来填充:
    driver={SQL Server};server=bigsmile;uid=sa;pwd=pwd;database=pubs
    5. 在“属性”窗口中,将“记录源”属性设置为一个 SQL 语句。例如:SELECT * FROM Titles WHERE AuthorID = 72在访问一个表时,应始终包括一个 WHERE 子句。如果这样做失败,则会锁定整个表,这样对其他用户将是一个严重的障碍。
    6. 在窗体上再放置一个“文本框”控件,用来显示数据库信息。
    7. 在其“属性”窗口中,将 Text1 的“数据源”属性设为 ADO Data 控件的名称 (ADODC1)。这样就将这个文本框和 ADO Data 控件绑定在一起。
    8. 在其“属性”窗口中,单击“数据字段”将下拉得到一个可用的字段列表。单击所要显示的字段的名称。
    9. 对希望访问的其它每个字段重复第 6、7、8 步。
    10. 按 F5 键运行该应用程序。用户可以在 ADO Data 控件中使用四个箭头按钮,从而允许用户到达数据的开始、记录的末尾或在数据内从一个记录移动到另一个记录。
    在程序中设置 ConnectionString、Source、DataSource以及 DataField下面的代码演示了如何在程序中设置这四个属性。注意设置 DataSource 属性要使用 Set 语句。
    Private Sub Form_Load()
      With ADODC1
        .ConnectionString = "driver={SQL Server};" ; _
        "server=bigsmile;uid=sa;pwd=pwd;database=pubs"
        . RecordSource = "Select * From Titles Where AuthorID = 7"
      End With
      Set Text1.DataSource = ADODC1
      Text1.DataField = "Title"
    End Sub

    ADO Data 控件的事件
    ADO Data 控件提供了若干个可以编程的事件。下表说明了这些事件及其何时产生,不过这个表不是一个关于这些事件何时发生的所有条件的完整列表。更完整的信息,请参阅各个事件的参考主题。

50_3710_dc1fb77dcfb6078.gif[删除]

50_3710_053b4272fb3e7c5.gif[删除]
    详细信息 如果试图循序渐进地使用 ADO Data 控件,请参阅“使用DataGrid 和 ADO 数据控件创建一个简单的数据库应用程序”,“ 创建一个简单的 DataCombo 应用程序”以及“创建一个连接 DataList 控件的DataGrid”。

    设置 ADO Data 控件的与数据库相关的属性
    当创建连接时,您可以使用下列三种源之一:一个连接字符串,一个 OLE DB文件(.MDL),或一个 ODBC 数据源名称(DSN)。当您使用 DSN 时,则无须更改控件的任何其它属性。
    不过,如果对数据库技术比较了解,可以更改在 ADO Data 控件中出现的其它的一些属性。下面的列表说明了该控件的与数据库相关的一些属性。这个列表同时也建议了设置这些属性的逻辑顺序。
    注意 数据库技术是比较复杂的,下列的建议并不意味着一定要视为规则。
    1. ConnectionString—ConnectionString 属性是一个字符串,可以包含进行一个连接所需的所有设置值。在该字符串中所传递的参数是与驱动程序相关的。例如,ODBC 驱动程序允许该字符串包含驱动程序、提供者、缺省的数据库服务器、用户名称以及密码等。
    2. UserName—用户的名称,当数据库受密码保护时,需要指定该属性。和Provider 属性类似,这个属性可以在 ConnectionString 中指定。如果同时提供了一个 ConnectionString 属性以及一个 UserName 属性,则ConnnectionString 中的值将覆盖 UserName 属性的值。
    3. Password—在访问一个受保护的数据库时也是必需的。和 Provider 属性、 UserName 属性类似,如果在ConnectionString 属性中指定了密码,则将覆盖在这个属性中指定的值。
    4. RecordSource—这个属性通常包含一条语句,用于决定从数据库检索什么信息。
    5. CommandType—CommandType 属性告诉数据提供者 Source 属性是一条 SQL 语句、一个表的名称、一个存储过程还是一个未知的类型。
    6. CursorLocation—这个属性指定光标的位置,是位于客户还是位于服务器
上。这一决策将影响您对下面几个属性的设置。
    7. CursorType—CursorType 属性决定记录集是静态类型、动态类型、还是键集光标类型。
    8. LockType—LockType 属性决定当其他人试图更改您正在编辑的数据时,如何锁定该数据。如何设置这个 LockType 属性是一个复杂的决策,取决于多个因素。
    9. Mode—Mode 属性决定想用记录集进行什么操作。例如,如果只是想要创建一个报告,可以将该属性设为只读来获得性能的改善。
    10. MaxRecords—这个属性决定光标的大小。如何决定这个属性的值取决于所检索的记录的大小,以及计算机的可用资源(内存)的多少。一个大的记录(包括很多列以及长字符串)比小记录要花费更多的资源。因此,MaxRecords 属性就不能太大。
    11. ConnectionTimeout—设置等待建立一个连接的时间,以秒为单位。如果连接超时,则返回一个错误。
    12. CacheSize—CacheSize 属性指定从光标中可以检索多少条记录。如果将CursorLocation 设为客户端,则这个属性只能设为一个较小的数目(可能为1),不会有任何不利的影响。如果光标的位置位于服务器端,则可以对这个数进行调整,将其设为你希望一次可以查看的行数。例如,如果使用 DataGrid 控件来查看 30 行,则可以将 CacheSize 设为 60,这样不必检索更多的数据就可以进行滚动。
    13. BOFAction、EOFAction—这两个属性决定当该控件位于光标的开始和末尾时的行为。提供的选择包括停留在开始或末尾、移动到第一个或最后一个记录、或添加一个新记录(只能在末尾)。

    绑定到 ADO Data 控件的控件
    任何具有 DataSource 属性的控件都可以绑定到一个 ADO Data 控件。下面的内在控件都可以绑定到 ADO Data 控件:
    复选框(CheckBox)
    组合框(ComboBox)
    图像(Image)
    标签(Label)
    列表框(ListBox)
    图片框(PictureBox)
    文本框(TextBox)
    Visual Basic 的所有版本中也提供下述数据绑定的 ActiveX 控件:
    DataList
    DataCombo
    DataGrid
    Microsoft Hierarchical FlexGrid
    RichTextBox
    Microsoft Chart
    DateTimePicker
    ImageCombo
    MonthView
    最后,用户可以使用 DataBinding 对象创建自己的数据绑定的 ActiveX 控件。
    详细信息 关于自己创建数据绑定控件的详细内容,请参阅“创建数据绑定用户控件”。
使用 CheckBox 控件

    选定 CheckBox 控件时,这个控件将显示选定标记。通常用此控件提供Yes/No 或 True/False 选项。可用分组的 CheckBox 控件显示多个选项,用户可从中选择一个或多个选项。

50_3710_d730b1e39354612.gif[删除]
    CheckBox 控件与 OptionButton 控件的相同之处在于,每个都是用来指示用户所作的选择。不同之处在于,对于一组 OptionButton ,一次只能选定其中的一个,而对 CheckBox 控件,则可选定任意数目的复选框。
    详细信息 关于 CheckBox 控件的简单示例,请参阅第三章“窗体,控件和菜单”中的“用复选框选择单个选项”。

    Value 属性
    CheckBox 控件的 Value 属性指示复选框处于选定、未选定或禁止状态(暗淡的)中的哪一种。选定时,value设置值为 1。例如:

50_3710_d2a32e4c477d725.gif[删除]
    用户单击 CheckBox 控件指定选定或未选定状态,然后可检测控件状态并根据此信息编写应用程序以执行某些操作。
    缺省时, CheckBox 控件设置为 vbUnchecked。若要预先在一列复选框中选定若干复选框,则应在 Form_Load 或 Form_Initialize 过程中将 Value 属性设置为 vbChecked。
    可将 Value 属性设置为 vbGrayed 以禁用复选框。例如,有时可能希望在满足某条件之前禁用复选框。

    Click 事件
    无论何时单击 CheckBox 控件都将触发 Click 事件,然后编写应用程序,根据复选框的状态执行某些操作。在下例中,每次单击 CheckBox 控件时都将改变其 Caption 属性以指示选定或未选定状态。
    Private Sub Check1_Click()
      If Check1.Value = vbChecked Then
        Check1.Caption = "Checked"
      ElseIf Check1.Value = vbUnchecked Then
        Check1.Caption = "Unchecked"
      End If
    End Sub
    注意 如果试图双击 CheckBox 控件,则将双击当作两次单击,而且分别处理每次单击;这就是说,CheckBox 控件不支持双击事件。

    响应鼠标和键盘
    在键盘上使用 TAB 键并按 SPACEBAR 键,由此将焦点转移到 CheckBox控件上,这时也会触发 CheckBox 控件的 Click 事件。
    可以在 Caption 属性的一个字母之前添加连字符,创建一个键盘快捷方式来切换 CheckBox 控件的选择。例如:

50_3710_47ae831822f36d1.gif[删除]
    本例中,按 ALT+C 组合键将使控件的状态在选定和未选定之间切换。

    增强 CheckBox 控件的视觉效果
    CheckBox 控件象 CommandButton 和 OptionButton 控件一样,可通过更改 Style 属性的设置值后使用 Picture、DownPicture 和 DisabledPicture 属性增强其视觉效果。例如,有时可能希望在复选框中添加图标或位图,或者在单击或禁止控件时显示不同的图像。

使用 ComboBox 控件

    组合框控件将文本框和列表框的功能结合在一起。有了这个控件,用户可通过在组合框中输入文本来选定项目,也可从列表中选定项目。

50_3710_a19ed6e4149de48.gif[删除]
    组合框向用户提供了供选择的列表。如果项目数超过了组合框能够显示的项目数,控件上将自动出现滚动条。用户即可上下或左右滚动列表。

    何时用组合框代替列表框
    通常,组合框适用于建议性的选项列表,而当希望将输入限制在列表之内时,应使用列表框。组合框包含编辑区域,因此可将不在列表中的选项输入列区域中。
    此外,组合框节省了窗体的空间。只有单击组合框的向下箭头时(样式 1 的组合框除外,它总是处于下拉状态)才显示全部列表,所以无法容纳列表框的地方可以很容易地容纳组合框。
    详细信息 关于这些控件的简单示例,请参阅第三章“窗体、控件和菜单”中的“使用 ListBox 和 ComboBox”。有关列表框控件的详细信息,还请参阅本章后面的“使用 ListBox 控件”。

    数据绑定特性
    Visual Basic 中的标准版和数据绑定版的 ComboBox 控件。虽然通过这两个版本都可以显示、编辑和更新大多数标准类型数据库中的信息,但是DBCombo 提供了更高级的数据访问特性。DBCombo 控件还支持一组与标准组合框控件不同的属性和方法。
    详细信息 关于详细信息,请参阅第七章“使用Visual Basic标准控件”中“使用 DataList和 DataCombo”控件。

    组合框的样式
    此处有三种组合框样式。每种样式都可在设计时或运行时来设置,而且每种样式都使用数值或相应的 Visual Basic 常数来设置组合框的样式。

50_3710_c07200223aa6ebb.gif[删除]

50_3710_ff8f0b3049c20fa.gif[删除]

    下拉式组合框
    在缺省设置 (Style = 0) 下,组合框为下拉式。用户可(象在文本框中一样)直接输入文本,也可单击组合框右侧的附带箭头打开选项列表。选定某个选项后,将此选项插入到组合框顶端的文本部分中。当控件获得焦点时,也可按 ALT+ DOWN ARROW 键打开列表。

    简单组合框
    将组合框 Style 属性设置为 1 将指定一个简单的组合框,任何时候都在其内显示列表。为显示列表中所有项,必须将列表框绘制得足够大。当选项数超过可显示的限度时将自动插入一个垂直滚动条。用户可直接输入文本,也可从列表中选择。 象下拉式组合框一样,简单组合框也允许用户输入那些不在列表中的选项。

    下拉式列表框
    下拉式列表框 (Style = 2 ) 与正规列表框相似─ 它显示项目的列表,用户必须从中选择。但下拉式列表框与列表框的不同之处在于,除非单击框右侧的箭头,否则不显示列表。这种列表框与下拉式组合框的主要差别在于,用户不能在列表框中输入选项,而只能在列表中选择。当窗体上的空间较少时,可使用这种类型的列表框。

    添加项目
    为在组合框中添加项目,应使用 AddItem 方法,其语法如下:

50_3710_85e7554d99cbd17.gif[删除]
    通常在 Form_Load 事件过程中添加列表项目,但也可在任何时候使用AddItem 方法。这样一来就能够动态地(响应用户的操作)在列表中添加项目。
    以下代码将 "Chardonnay," "Fum抏 Blanc," "Gew黵ztraminer," 和 "Zinfandel"放置到名为 Combo1,Style 属性为 0 (vbComboDropDown) 的组合框中:
    Private Sub Form_Load ()
      Combo1.AddItem "Chardonnay"
      Combo1.AddItem “Fum'e Blanc”
      Combo1.AddItem "Gewürztraminer"
      Combo1.AddItem "Zinfandel"
    End Sub
    运行时,只要加载窗体,而且用户单击向下箭头,则将显示如图 7.8 所示的列表。

50_3710_c9f73f1e17c16ef.gif[删除]
    设计时添加项目
    在设计时,也可设置组合框控件“属性”窗口的 List 属性,从而在列表中添加项目。选定 List 属性选项并单击向下箭头后就可输入列表项目,然后按 CTRL+ENTER 组合键换到新的一行。
    只能将项目添加到列表的末尾。所以,如果要将列表按字母顺序排序,则应将 Sorted 属性设置为 True。关于详细的信息,请参阅后面“排序列表”。
    
    在指定位置添加项目
    为了在列表指定位置添加项目,应在新项目后指定索引值。例如,下行代码将 "Pinot Noir" 插入到第一个位置并把其它项目的位置向下调整:
    Combo1.AddItem "Pinot Noir", 0
    注意,指定列表中的第一个位置的是 0 而不是 1(见图 7.9)。

50_3710_6cfb33940623a6e.gif[删除]
    排序列表
    将 Sorted 属性设置为 True 并省略索引,则可在列表中指定按字母顺序添加的项目。排序时不区分大小写;所以 "chardonnay" 和 "Chardonnay" 被看作一个词。
    将 Sorted 属性设置为 True 之后,使用带有 index 参数的 AddItem 方法将导致不可预料的非排序结果。

    删除项目
    可在组合框中用 RemoveItem 方法删除项目。RemoveItem 有一个参数index,它指定要删除的项目:
    box.RemoveItem index
    box 及 index 参数和 AddItem 中的参数相同。
    例如,为了删除列表中的第一个项目,应添加下面一行代码:
    Combo1.RemoveItem 0
    为了在组合框中删除所有列表项目,应使用 Clear 方法:
    Combo1.Clear

    用Text属性获取列表内容
    获取当前选定项目值的最简单的常用方法就是使用 Text 属性。在运行时无论向控件的文本框部分输入了什么文本,Text 属性都与这个文本相对应。它可以是选定的列表选项,或者是用户在文本框中输入的字符串。
    例如,如果用户选定列表框中的 "Chardonnay",则通过下列代码显示有关Chardonnay 的信息:
    Private Sub Combo1_Click ()
       If Combo1.Text = "Chardonnay" Then
          Text1.Text = "Chardonnay is a medium-bodied _
          white wine."
        End If
    End Sub
    Text 属性包含 Combo1 列表框中当前选定的项目。代码查看是否选择了"Chardonnay",若是如此,则在文本框中显示信息。

    用 List 属性访问列表选项
    有了 List 属性就可访问列表中所有项目。该属性包含一个数组,而且列表中的每个项目都是数组的元素。每一项都表示为字符串的形式。为了列表中的项目,应使用如下语法:
    box.List(index)
    box 参数组合框,而 index 是项目的位置。顶端项目的索引为 0,下一个项目的索引为 1,依次类推。例如,在文本框中,以下语句显示列表中的第三个项目 (index = 2):
    Text1.Text = Combo1.List(2)

    用 ListIndex 属性判断位置
    欲知组合框列表中选定项目位置,请使用 ListIndex 属性。该属性设置或返回控件中当前选定项目的索引值,而且只在运行时有效。对组合框的ListIndex 属性进行设置也会触发控件的 Click 事件。
    若选定第一个(顶端)项目,则属性值为0,选定的下一个项目属性值为1,依次类推。如果未选定项目,或者用户在组合框中输入选项(样式0 或1)而不在列表中选择现有项目,则 ListIndex 为 -1。
    注意 NewIndex 属性可用来跟踪列表中最后添加的项目的索引。向排序列表插入项目时,这一点很有用。

    用 ListCount 属性返回项目数
    为了返回组合框中的项目数,应使用 ListCount 属性。例如,下列语句用ListCount 属性判断组合框中的项目数:
    Text1.Text = "You have " ; Combo1.ListCount ; " _
    entries listed"



喜欢0 评分0
游客

返回顶部