重拾VB67:标准控件的使用详述上

来自MSDN-2001-OCT: Visual Tools and Languages/Visual Studio 6.0 Documentation/Visual Basic Documentation/Using Visual Basic/Programmer’s Guide/Part 2: What Can You Do With Visual Basic/Using Visual Basic's Standard Controls

一、控件分类

Visual Basic 的控件有三种广义分类:

内部控件,例如 CommandButton 和 Frame 控件。这些控件都在 Visual Basic 的 .exe 文件中。内部控件总是出现在工具箱中,不象 ActiveX 控件和可插入对象那样可以添加到工具箱中,或从工具箱中删除。包括:CheckBox(复选框)、ComboBox(组合框)、CommandButton(命令按钮)、Data(数据)、DirListBox(目录列表框)、DriveListBox(驱动器列表框)、FileListBox(文件列表框)、Frame(框架)、HScrollBar 和 VScrollBar(水平和垂直滚动条)、Image(图象)、Label(标签)、Line(线形)、ListBox(列表框)、OLE(OLE 容器)、OptionButton(选项按钮)、PictureBox(图片框)、Shape(形状)、TextBox(文本框)、Timer(定时器)。

ActiveX 控件,是扩展名为 .ocx 的独立文件,其中包括各种版本 Visual Basic 提供的控件(DataCombo,DataList 控件等等)和仅在专业版和企业版中提供的控件(例如 Listview、Toolbar、Animation 和Tabbed Dialog),另外还有许多第三方提供的的 ActiveX 控件。

可插入的对象,例如一个包含公司所有雇员的列表的 Microsoft Excel 工作表对象,或者一个包含某工程计划信息的 Microsoft Project 日历对象。因为这些对象能添加到工具箱中,所以可把它们当作控件使用。其中一些对象还支持自动化(正式的名称为 OLE 自动化),使用这种控件就可在 Visual Basic 应用程序中编程控制另一个应用程序的对象。

二、各控件共用的知识

(1)可以这样为控件命名:用前缀描述类,其后为控件的描述性名称。

(2)所有控件都有一个属性,只需引用控件名而无需使用属性名就可利用这个属性来存储或获取数值,称此属性为控件的值,这是控件的最重要或最常用属性。

控件
CheckBox(复选框) Value
ComboBox(组合框) Text
CommandButton(命令按钮) Value
CommonDialog(公共对话框) Action
Data(数据) Caption
DataCombo(数据组合) Text
DataGrid(数据网格) Text
DataList(数据列表) Text
DirListBox(目录列表框) Path
DriveListBox(驱动器列表框) Drive
FileListBox(文件列表框) FileName
FlexGrid Text
Frame(框架) Caption
HScrollBar(水平滚动条) Value
Image(图象) Picture
Label(标签) Caption
Line(线形) Visible
ListBox(列表框) Text
OptionButton(选项按钮) Value
PictureBox(图片框) Picture
Shape(形状) Shape
TextBox(文本框) Text
Timer(定时器) Enabled
VScrollBar(垂直滚动条) Value

(3)通过限制焦点验证控件数据:Validate 事件和 CausesValidation 属性是在允许用户将焦点移开控件之前,串联使用以确认对控件的输入的。比如,当每个文本框接收焦点时,您想在文本框的特殊验证准则被满足之前阻止用户移动焦点;然而,您也想允许用户在任何时候都能单击 Help 按钮。 要做到这点,在 Validate 事件中设置验证准则,并将 Help 按钮的 CausesValidation 属性设置为 False。另外,Validate 事件包括一个 keepfocus 参数。当参数设置为 True,控件将保留焦点。这样做有效地防止了用户单击其它控件

三、使用控件数组

(1)控件数组是一组具有共同名称和类型的控件。它们的事件过程也相同。同一控件数组中的元素有自己的属性设置值。常见的控件数组的用处包括实现菜单控件和选项按钮分组。

(2)在设计时,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件消耗的资源要少。当希望若干控件共享代码时,控件数组也很有用。参见“有关菜单”

(3)设计时有三种方法创建控件数组:

将相同名字赋予多个控件。

复制现有的控件并将其粘贴到窗体上。

将控件的 Index 属性设置为非 Null 数值。

  • (4)在运行时,可用 Load 和 Unload 语句添加和删除控件数组中的控件,然而,添加的控件必须是现有控件数组的元素。必须在设计时创建一个(在大多数情况下)Index 属性为 0 的控件。

  • 加载控件数组的新元素时,大多数属性设置值将由数组中具有最小下标的现有元素复制。因为不会自动把 Visible、Index 和 TabIndex 属性设置值复制到控件数组的新元素中,所以,为了使新添加的控件可见,必须将其 Visible 属性设置为 True。

  • 注意 试图对数组中已存在的索引值使用 Load 语句时,Visual Basic 将生成一个错误。

    重点 可用 Unload 语句删除所有由 Load 语句创建的控件,然而,Unload 无法删除设计时创建的控件,无论它们是否是控件数组的一部分。

四、使用 ADO Data 控件

4.1 概述

ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。

Visual Basic以前的版本提供了内在的 Data 控件和 Remote Data 控件 (RDC) 来进行数据访问。这两种控件仍包括在 Visual Basic 中,以提供向后兼容。不过,因为 ADO 的适应性更广,因此建议用户使用 ADO Data 控件来创建新的数据库应用程序。

请注意,这种控件是一种相当“昂贵”的创建连接的方法,在第一个控件至少有两个连接,且以后的每个控件至少多一个连接时使用。

可能的用法

连接一个本地数据库或远程数据库。

打开一个指定的数据库表,或定义一个基于结构化查询语言 (SQL) 的查询、或存储过程、或该数据库中的表的视图的记录集合。

将数据字段的数值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值。

添加新的记录,或根据对显示在绑定的控件中的数据的任何更改来更新一个数据库。

  • 4.2 用法

  • 如果该控件不在“工具箱”中,请按 CTRL+T 键,显示“部件”对话框。在这个“部件”对话框中,单击“Microsoft ADO Data Control”。

  • 在“属性”窗口中,单击“ConnectionString”显示“ConnectionString”对话框。 如果您已经创建了一个 Microsoft 数据链接文件(Data Link file)(.UDL),请选择“使用 OLE DB 文件”并单击“浏览”,以找到计算机上的文件。如果使用 DSN,则单击“使用 ODBC 数据源名”,并从框中选择一个 DSN,或单击“新建”创建一个。如果想创建一个连接字符串,请选择“使用 ConnectionString”,单击“生成”,然后使用“数据链接属性”对话框创建一个连接字符串。在创建连接字符串后,单击“确定”。

  • 在“属性”窗口中,将“记录源”属性设置为一个 SQL 语句。在访问一个表时,应始终包括一个 WHERE 子句。否则会锁定整个表,这样对其他用户将是一个严重的障碍。

  • 在窗体上再放置一个“文本框”控件,用来显示数据库信息。在其“属性”窗口中,将 Text1 的“数据源”属性设为 ADO Data 控件的名称 (ADODC1)。这样就将这个文本框和 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

4.3 ADO Data 控件的事件

ADO Data 控件提供了若干个可以编程的事件。WillMove、MoveComplete、WillChangeField、FieldChangeComplete、WillChangeRecord、RecordChangeComplete、WillChangeRecordset、RecordsetChangeComplete、InfoMessage。

4.4 ADO Data 控件的与数据库相关的属性

当创建连接时,您可以使用下列三种源之一:一个连接字符串,一个 OLE DB 文件(.MDL),或一个 ODBC 数据源名称(DSN)。当您使用 DSN 时,则无须更改控件的任何其它属性。

设置 ADO Data 控件的与数据库相关的属性:ConnectionStringUserNamePasswordRecordSourceCommandTypeCursorLocation CursorTypeLockTypeModeMaxRecordsConnectionTimeoutCacheSizeBOFAction、EOFAction

4.5 绑定到 ADO Data 控件的控件

任何具有 DataSource 属性的控件都可以绑定到一个 ADO Data 控件。下面的内在控件都可以绑定到 ADO Data 控件:复选框、组合框、图像、标签、列表框、图片框、文本框。

Visual Basic 的所有版本中也提供下述数据绑定的 ActiveX 控件:DataList、DataCombo、DataGrid、Microsoft Hierarchical FlexGrid、RichTextBox、Microsoft Chart、DateTimePicker、ImageCombo、MonthView

最后,用户可以使用 DataBinding 对象创建自己的数据绑定的 ActiveX 控件。

五、使用CheckBox 控件

如果试图双击 CheckBox 控件,则将双击当作两次单击,而且分别处理每次单击;这就是说,CheckBox 控件不支持双击事件。

在键盘上使用 TAB 键并按 SPACEBAR 键,由此将焦点转移到 CheckBox 控件上,这时也会触发 CheckBox 控件的 Click 事件。

CheckBox 控件象 CommandButton 和 OptionButton 控件一样,可通过更改 Style 属性的设置值后使用 Picture、DownPicture 和 DisabledPicture 属性增强其视觉效果。

六、使用 ComboBox 控件

(1)虽然通过ComboBox 控件可以显示、编辑和更新大多数标准类型数据库中的信息,但是 DBCombo 提供了更高级的数据访问特性。DBCombo 控件还支持一组与标准组合框控件不同的属性和方法。

(2)有三种组合框样式。下拉式组合框、简单组合框、下拉式列表框。

(3)在组合框中添加项目,应使用 AddItem 方法。

(4)设计时添加项目,选定 List 属性选项并单击向下箭头后就可输入列表项目,然后按 CTRL+ENTER 组合键换到新的一行。只能将项目添加到列表的末尾。所以,如果要将列表按字母顺序排序,则应将 Sorted 属性设置为 True。

(5)将 Sorted 属性设置为 True 之后,使用带有 index 参数的 AddItem 方法将导致不可预料的非排序结果。排序时不区分大小写;所以 "chardonnay" 和 "Chardonnay" 被看作一个词。

(6)可在组合框中用 RemoveItem 方法删除项目。为了在组合框中删除所有列表项目,应使用 Clear 方法:Combo1.Clear

(7)在运行时无论向控件的文本框部分输入了什么文本,Text 属性都与这个文本相对应。这可以是选定的列表选项,或者是用户在文本框中输入的字符串。

(8)有了 List 属性就可访问列表中所有项目。Text1.Text = Combo1.List(2)

(9)ListIndex 属性设置或返回控件中当前选定项目的索引值,而且只在运行时有效。对组合框的 ListIndex 属性进行设置也会触发控件的 Click 事件。如果未选定项目,或者用户在组合框中输入选项(样式 0 或 1)而不在列表中选择现有项目,则 ListIndex 为 –1。NewIndex 属性可用来跟踪列表中最后添加的项目的索引。

(10)为了返回组合框中的项目数,应使用 ListCount 属性。

七、使用CommandButton

(1)如果不创建访问键,而又要使标题中包含连字符但不创建访问键,应添加两个连字符 (&&)。这样一来,在标题中就只显示一个连字符而不显示下划线。

(2)无论何时选定命令按钮都会将其 Value 属性设置为 True 并触发 Click 事件。可在代码中用 Value 属性触发命令按钮的 Click 事件。

(3)单击命令按钮后也将生成 MouseDown 和 MouseUp 事件。CommandButton 控件中事件发生的顺序为:MouseDown、Click、MouseUp。可通过更改 Style 属性设置值后用 Picture、DownPicture 和 DisabledPicture 属性增强视觉效果。

八、使用 CommonDialog 控件

CommonDialog 控件提供诸如打开和保存文件、设置打印选项、选择颜色和字体等操作的一组标准对话框。在运行 Windows 帮助引擎时,控件还能够显示帮助。为了用该控件创建对话框,必须要求 Commdlg.dll 在 Microsoft Windows /System 目录下。

在窗体上绘制 CommonDialog 控件时,控件将自动调整大小并显示成一个图标。此图标的大小不能改变。象 Timer 控件一样,CommonDialog 控件在运行时不可见。运行时,请适当使用下表所列方法显示需要的对话。

方法 显示的对话
ShowOpen 打开
ShowSave 另存为
ShowColor 颜色
ShowFont 字体
ShowPrinter 打印
ShowHelp 调用 Windows“帮助”

8.1 “打开“对话框

下列代码显示“打开“对话框并以选定的文件名为打开文件过程的参数:

Private Sub mnuFileOpen_Click ()
'CancelError 为 True。
On Error GoTo ErrHandler
'设置过滤器。
CommonDialog1.Filter = "All Files (*.*)|*.*|Text _
Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat"
'指定缺省过滤器。
CommonDialog1.FilterIndex = 2

'显示“打开”对话框。
CommonDialog1.ShowOpen
'调用打开文件的过程。
OpenFile (CommonDialog1.FileName)
Exit Sub

ErrHandler:
'用户按“取消”按钮。
Exit Sub
End Sub

(1)指定在“文件类型”列表框中显示的文件过滤器列表。Description 是列表框中显示的字符串─ 例如,"Text Files (*.txt)"。Filter 是实际的文件过滤器─ 例如,"*.txt"。每个description | filter 设置间必须用管道符号分隔 (|)。

(2)选定文件后可用 FileName 属性获取选定文件的名称。

(3)对所有公共对话框,当 CancelError 属性为 True,而且用户单击了对话框的“取消”按钮时将生成一个错误。在显示对话框时捕获错误,以此检测是否按了“取消”按钮。

8.2 使用“颜色”对话框

Private Sub Command1_Click ()
'将 Cancel 设置成 True。
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
'设置 Flags 属性。
CommonDialog1.Flags = cdlCCRGBInit
'显示“颜色”对话框。
CommonDialog1.ShowColor
'将窗体的背景颜色设置成选定的
'颜色。
Form1.BackColor = CommonDialog1.Color
Exit Sub

ErrHandler:
'用户按了“取消”按钮。
Exit Sub
End Sub

8.3 使用“字体”对话框

“字体”对话框根据大小、颜色、样式选择字体。用户一旦在“字体”对话框中选定字体后,其属性就会包含有关用户选项的信息。

在显示“字体”对话框之前必须将 Flags 属性设置为3个常数之一,否则将发生不存在字体错误。

8.4 使用“打印”对话框

“打印”对话框允许用户指定打印输出的方法。用户可指定打印页数范围、打印质量、复制数目等等。此对话框还显示有当前安装的打印机信息,并允许用户进行配置或重新安装新的缺省打印机。

注意 此对话框并不真正地将数据送到打印机。它允许用户指定如何打印数据。必须编写代码实现用选定格式打印数据。

若将 PrinterDefault 属性设置为 True,则可在 Visual Basic Printer 对象上打印。另外,当 PrinterDefault 属性为 True 时,所有在“打印”对话框“设置”部分中作出的变更都将改变用户“打印机”设置中的打印机设置值。

8.5 使用 ShowHelp 方法显示帮助文件

Private Sub Command1_Click()
'将 Cancel 设置为 True。
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
'设置 HelpCommand 属性
CommonDialog1.HelpCommand = cdlHelpForceFile
'指定帮助文件。
CommonDialog1.HelpFile = "c:/Windows/Cardfile.hlp"
'显示 Windows 帮助引擎。
CommonDialog1.ShowHelp
Exit Sub

ErrHandler:
'用户按下了“取消”按钮。
Exit Sub
End Sub

九、使用Data控件

Data 控件通过使用 Microsoft 的 Jet 数据库引擎来实现数据访问 –与 Microsoft Access 所用的数据库引擎相同。Data 控件最适合较小的(桌面)数据库,诸如 Access 和 ISAM 数据库。

Data 控件和 Remote Data 控件两者都包含在 Visual Basic 中,以提供向后兼容。不过,由于 ActiveX 数据对象 (ADO) 的适应性更广,因此建议使用 ADO Data 控件来创建新的数据库应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")