VB控件教程大全.docx
- 文档编号:10774823
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:60
- 大小:47.26KB
VB控件教程大全.docx
《VB控件教程大全.docx》由会员分享,可在线阅读,更多相关《VB控件教程大全.docx(60页珍藏版)》请在冰豆网上搜索。
VB控件教程大全
VB控件教程大全Datagrid
DataGrid1.Columns.Remove(0)'删除0号字段
DataGrid1.Columns.Add(0).Caption=”姓名”'标签头
DataGrod1.Columns(0).DataField=”Name”'对应的字段
Adodc1.Refresh
DataGrid
BackColor—设定背景颜色。
Font—设定DataGrid的字体信息。
字体信息包括使用何种字体、字号,是否粗体,斜体等。
CellPadding—设定HTML表格中单元格内的边距。
CellSpacing—设定HTML表格中单元格之间的间距。
Width—设定HTML表格的宽度(可以以像素、百分比等为单位)
HorizontalAlign—设定表格在页面上的对齐方式(左对齐、右对齐、居中、未设定)
一个使用上述属性而使得表格变得漂亮的例子如下所示。
请注意DataGrid的Font属性是一个对象,它
指向了FontInfo类,FontInfo类包括Size,Name,Bold,Italic等属性。
为了设定Font对象所指向类的属性,
必须通过连字符(-)完成。
这类似于VB.Net和C#语言中表示对象属性的点(.)。
1DataGrid
DataGrid控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示Recordset对象的
记录和字段。
可以使用DataGrid来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。
DataGrid控件可以在设计时快速进行配置,只需少量代码或无需代码。
当在设计时设置了DataGrid控件的
DataSource属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。
然后您就
可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。
在运行时,可以在程序中切换DataSource来察看不同的表,或者可以修改当前数据库的查询,以返回
一个不同的记录集合。
注意DataGrid控件与VisualBasic5.0中的DBGrid是代码兼容的,除了一个例外:
DataGrid控件不
支持DBGrid的“解除绑定模式”概念。
DBGrid控件包括在VisualBasic的Tools目录中。
2
查看和编辑在远程或本地数据库中的数据。
与另一个数据绑定的控件(诸如DataList控件)联合使用,使用DataGrid控件来显示一个表的记录,
这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。
使用DataGrid控件的设计时特性
可以不编写任何代码,只通过使用DataGrid控件的设计时特性来创建一个数据库应用程序。
下面的说明概要地说明了在实现DataGrid控件的典型应用时的一般步骤。
完整的循序渐进的指示,请参阅主题
“DataGrid方案1:
使用DataGrid控件创建一个简单数据库应用程序”。
要在设计时实现一个DataGrid控件
1.为要访问的数据库创建一个Microsoft数据链接(.MDL)文件。
请参阅“创建NorthwindOLEDB
数据链接”主题,以获得一个示例。
2.在窗体上放置一个ADOData控件,并将其ConnectionString属性设置为在第1步中所创建的
OLEDB数据源。
3.在这个AdoData控件的RecordSource属性中输入一条将返回一个记
录集的SQL语句。
例如,Select*FromMyTableNameWhereCustID=12
4.在窗体上放置一个DataGrid控件,并将其DataSource属性设置为这个ADOData控件。
5.右键单击该DataGrid控件,然后单击“检索字段”。
6.右键单击该DataGrid控件,然后单击“编辑”。
7.重新设置该网格的大小、删除或添加网格的列。
8.右键单击该DataGrid控件,然后单击“属性”。
9.使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为。
在运行时更改显示的数据
在创建了一个使用设计时特性的网格后,也可以在运行时动态地更改该网格的数据源。
下面介绍实现
这一功能的通常方法。
3DataSourceRecordSource
更改所显示的数据的最通常方法是改变该DataSource的查询。
例如,如果DataGrid控件使用一个ADO
Data控件作为其DataSource,则重写RecordSource和刷新该ADOData控件都将改变所显示的数据。
''ADOData控件连接的是Northwind数据库的''Products表。
新查询查找所有
''SupplierID=12的记录。
DimstrQueryAsString
strQuery="SELECT*FROMSuppliersWHERESupplierID=12"
Adodc1.RecordSource=strQuery
Adodc1.Refresh
4DataSource
在运行时,可以将DataSource属性重新设置为一个不同的数据源。
例如,您可能具有若干个ADOData
控件,每个控件连接不同的数据库,或设置为不同的RecordSource属性。
可以简单地将DataSource从一
个ADOData控件重新设置为另一个ADOData控件:
''将DataSource重新设置为一个连接到Pubs数据库的、
''使用Authors表的ADOData控件。
SetDataGrid1.DataSource=adoPubsAuthors
5DataSource
当将DataGrid控件用于一个远程数据库,诸如SQLServer时,可以改变表的结构。
例如,可以给这
个表添加一个字段。
在这种情形下,可以调用Rebind方法根据新的结构来重新创建该网格。
注意,如果已
经在设计时改变了这个列的布局,DataGrid控件将会试图重新创建当前的布局,包括任何空的列。
不过,
通过首先调用ClearFields方法,可以强制该网格重新设置所有的列。
从DataGrid返回值
在DataGrid被连接到一个数据库后,可能想要监视用户单击了哪一个单元。
可以使用RowColChange
事件——而不是Click事件。
如下所示:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
''显示用户所单击的单元的文字、行和列的信息。
Debug.PrintDataGrid1.Text;DataGrid1.Row;DataGrid1.Col
EndSub
6CellTextCellValue
当一个列使用NumberFormat属性设置格式后,CellText和CellValue属性是很有用的。
NumberFormat
属性不必更改实际的数据格式就可以更改任何包含数字的列的格式。
例如,给定一个网格,其中包含一个
名为ProductID的、包含整数的列。
下面的代码将使DataGrid以"P-0000"的格式来显示数据。
换句话说,
尽管在ProductID字段中所包含的实际数值为"3",但该网格所显示的值将是"P-0003"。
PrivateSubForm_Load()
DataGrid1.Columns("ProductID").NumberFormat="P-0000"
EndSub
要返回数据库中所包含的实际值,应使用CellValue方法,如下所示:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
Debug.Print_
DataGrid1.Columns("ProductID").CellValue(DataGrid1.Bookmark)
EndSub
注意上面所用的CellValue和下面所用的CellText值,都需要将Bookmark属性作为一个参数,功
能才正确。
相反地,如果要返回该字段的格式化的值,应使用CellText方法:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
Debug.Print_
DataGrid1.Columns("ProductID").CellText(DataGrid1.Bookmark)
EndSub注意上面的CellText方法等价于使用DataGrid控件的Text属性。
添加、删除或隐藏列
通过使用Columns集合和Column对象的属性和方法,可以在程序中添加、删除或隐藏列。
添加和删除一列
要在运行时添加一列,可以使用Add方法。
如果首先声明一个变量,并将新对象赋给该变量,
就可以用简明的代码设置各种属性。
PrivateSubAddColumn()
'在最右边的位置添加一列。
然后设置其Visible、Width、
'Caption以及Alignment属性。
DataField属性则指定
'该列将绑定到哪一个字段。
DimcAsColumn
Setc=DataGrid1.Columns.Add(DataGrid1.Columns.Count)
Withc
.Visible=True
.Width=1000
.Caption="我的新列"
.DataField=Adodc1.Recordset.Fields("ProductName").Name
.Alignment=dbgRight
EndWith
EndSub
可以使用方法来删除任意一列。
请确保使用ColIndex参数来指定要删除的列。
下面的代码将
删除被单击的列。
PrivateSubDataGrid1_HeadClick(ByValColIndexAsInteger)
DataGrid1.Columns.RemoveColIndex
EndSub
通过将Visible属性设置为False,可以隐藏任意一列。
当想要限制用户可以查看或编辑的
列时这一功能特别有用。
下面的示例在Columns集合中循环,隐藏除少数列之外的所有列。
PrivateSubHideColumns()
'使用DataField属性来判别正在测试的是哪一列。
'只显示三列:
ProductName、UnitPrice以及
'UnitsInStock。
DimcAsColumn
ForEachcInDataGrid1.Columns
SelectCasec.DataField
Case"ProductName"
c.Visible=TrueCase"UnitPrice"
c.Visible=True
Case"UnitsInStock"
c.Visible=True
c.Caption="InStock"'更改这个列的标头。
CaseElse'隐藏其它所有的列。
c.Visible=False
EndSelect
Nextc
EndSub
一个“拆分”的网格使最终用户对相同的数据可以拥有多个视图。
例如,假设有一个由十个字
段组成的大表。
在这种情况下,在控件中察看的记录集将有十列宽,除非窗体非常宽,否则用户将
无法同时看见所有列的内容。
,而且,假设用户只对第一列和最后一列感兴趣(例如,第一列是名
字,最后一列是电话号码)。
为了能同时看到在两端的列(不重新安排列的顺序),可以对网格进
行拆分。
在设计时,可以创建一个拆分,具体步骤是:
右键单击网格,单击“编辑”,再单击右键,然
后单击“拆分”。
通过右键单击该控件,并单击“属性”来显示“属性页”对话框,可以编辑这个
拆分。
可以使用“拆分”选项卡来自定义拆分。
要删除一个拆分,右键单击该拆分,并单击“删除”。
在运行时,最终用户也可以通过单击位于这个网格控件的左下边的右边的选项卡,以手工方式
来拆分该网格(除非不允许这个操作),如下图所示:
默认情况下,DataGrid控件包含一个Split对象。
防止最终用户添加拆分的代码为:
DataGrid1.Splits(0).AllowSizing=False
DataGrid控件包含一个Split对象的集合。
要在程序中添加拆分,可以使用Add方法,如
下所示:
DataGrid1.Splits.Add1
注意Add方法需要新的拆分索引作为其参数。
要添加一个拆分,应将这个索引参数设置为
Splits集合的Count属性值。
使用Split集合的Add方法,可以在程序中按照实际需要添加拆分。
由于添加多于两个以上
的拆分将使网格很难使用,可以使用该集合的Count属性来限制拆分的数目。
IfDataGrid1.Splits.Count<3Then'添加一个拆分。
DataGrid1.Splits.AddDataGrid1.Splits.Count
EndIf
当拆分多于一个时,可能希望控制这些拆分如何滚动。
例如,在一个具有三个拆分的网格中,
可以决定只让第一个和第三个拆分同步,而让中间的拆分独立地滚动。
要同步任何两个(或多个)
拆分,只需将每个Split对象的ScrollGroup属性设置为同一个值。
'使第一个和第三个Split对象同步。
WithDataGrid1
.Splits(0)
.ScrollGroup=1
.Splits
(1).ScrollGroup=2
.Splits
(2).ScrollGroup=1
EndWith
通过设置Scrollbars属性,使同步的拆分组只显示一个滚卷条,从而进一步自定义拆分的外
观。
使用WrapCellPointer、TabAcrossSplits以及TabAction属性,可以决定当最终用户按下
tab键或箭头键时网格的行为。
在这三个属性中,TabAction属性级别最高,它决定WrapCellPointer和TabAcrossSplits
这两个属性是否能生效。
TabAction有三个设置值:
ControlNavigation、ColumnNavigation和
GridNavigation。
当该属性设置为ControlNavigation时,按Tab键根据TabIndex将焦点切
换到下一个控件。
这一设置优先于WrapCellPointer和TabAcrossSplits。
WrapCellPointer属性决定在任何单个的拆分中tab键和箭头键的行为。
如果该属性设置为
True,且当前单元位于最后一列,这时最终用户按tab键则使第一列的下一行变成当前的单元。
不过,如果当前单元位于最后一行的最后一列时,这时就没有地方可以“换行”。
TabAcrossSplits属性决定当网格中存在两个或多个拆分时tab和箭头键的行为。
如果该属
性设置为True,且当前单元位于任何一个拆分的最后一列,则按Tab或箭头键将使当前单元“跳”
到下一个拆分的第一列。
当前单元仍保持相同的行位置。
注意如果WrapCellPointer和TabAcrossSplits属性都设置为True,则只有当前单元位于
最后一个拆分的最后一列时才会换行。
这时当前单元将换到第一个拆分的第一列中的下一行。
每一个Split对象都有一个Columns属性,允许用户来操作一个Column对象的集合。
通过
这样做,可以更改每个Split对象的外观。
例如,可以用一个拆分包含显示姓氏字段和名字字段
的两个列,而第二个拆分则显示电话字段和地址字段。
要实现这一目标,需要将其它的每一列的
Visible属性设置为False,如下所示:
'枚举Columns集合,对每一个Column对象的DataField属性'进行测试。
如果测试失败,则隐藏这一列。
DimiAsInteger
'隐藏除ProductName列之外的所有列。
Fori=0ToDataGrid1.Splits(0).Columns.Count-1
IfDataGrid1.Splits(0).Columns(i).DataField<>"ProductName"Then
DataGrid1.Splits(0).Columns(i).Visible=False
EndIf
Nexti'隐藏除UnitPrice列之外的所有列。
Fori=0ToDataGrid1.Splits(0).Columns.Count-1
IfDataGrid1.Splits
(1).Columns(i).DataField<>"UnitPrice"Then
DataGrid1.Splits
(1).Columns(i).Visible=False
EndIf
NextI
Bookmarks和SelBookmarks提供了标记记录的一种手段。
当编写应用程序中的特定功能(诸
如允许最终用户手工地选择多个不相邻的记录,进行所选记录的大批更新)时,这就很有必要。
在
这些情形中,需要标记哪些记录已被选择,因此可以使用SelBookmarks集合及其属性。
有两个函数,分别是CellText和CellValue方法,需要标记才能正确执行。
SelBookmarks集合包含所有选定的记录的书签。
当最终用户手工选择记录时(即在单击时按
住CTRL键),每一个选定的记录的书签都会加入到该集合中。
使用标准的循环,用户可以知道已
经选定了什么,也可以保存书签(因为可能需要恢复某个值),以及执行操作:
DimiasInteger'计数器
DimintCountAsInteger
intCount=DataGrid1.SelBookmarks.Count-1
ReDimarrSelBK(intCount)'声明用于保存书签的数组。
Fori=0TointCount
ArrSelBK(i)=DataGrid1.SelBookmarks(i)
'在此处执行操作。
如果该操作必须被
'取消,则退出该循环,然后使用该数
'组来取消这些更改。
Nexti
通过将记录添加到这个集合,也可以在程序中选定记录。
例如,可能有一个显示指定的客户所
有订货的网格。
如果要高亮显示该客户花费超过$100的所有记录,则对记录进行过滤,并将结果书签添加到SelBookmarks集合。
DimrsAsRecordset
Setrs=Adodc1.Recordset
WhileNotrs.EOF
Ifrs!
SupplierID=12Then
DataGrid1.SelBookmarks.Addrs.Bookmark
EndIf
rs.MoveNext
Wend
假设在表中有一个名为"Price"的字段,并且想使用本地税率来计算表中每一项的税费。
这
就是一个计算结果字段,可以通过修改DataSource的查询来计算这个值,并把这个值返回给
DataGrid控件。
要在DataGrid控件中创建一个计算结果字段
1.确认在机器上已为Northwind数据库建立了一个OLEDB数据源;如果还没有创建这样的
一个数据源,请按照“创建Northwind的OLEDBData连接”的步骤操作。
2.在窗体上放置一个ADOData控件和一个DataGrid控件。
3.将ADOData控件的ConnectionString属性设置为Northwind的数据源。
4.设置ADOData控件的RecordSource属性。
在“属性”窗口中,单击“记录源”并输入
SelectProductName,UnitPrice,(UnitPrice*.082)AsTaxFromProducts。
5.将DataGrid控件的DataSource属性设置为这个ADOData控件。
6.运行该工程。
如果想要访问以自定义格式或以ODBC驱动程序不直接支持的格式存放的数据,可以创建一个
类来封装该数据。
然后可以编写该类的自定义函数来检索这些数据。
这样该类就变成了一种数据源,
可以被任何数据使用者(如DataGrid控件)使用。
在这个类模块的Initialize事件中,首先通过声明一个作为NewADODB.Recordset的变量,
来创建一个ADODBrecordset对象。
在创建了这个recordset对象后,再添加字段,每个数据源
中的每个字段都要加入。
然后使用合适的数据填充这个记录集。
注意也可以使用OLEDB示例提供者来创建一个数据源。
关于OLEDB示例提供者的详细信息,
请参阅“创建带有数据提供方的部件”。
类模块有一个GetDataMember事件,只要当数据使用者(诸如DataGrid控件)需要数据时
就产生该事件。
在这个事件中,Data参数被设置为在Initialize事件中所创建的recordset对
象。
如果要使用这个类模块,应创建一个具有一个DataGrid控件的窗体。
在该窗体的Load事件
的代码中,将该控件的DataSource属性设置为这个类。
注意数据类模块在设计时是不可用的。
例如,如果使用DataGrid控件,则当用户在“属性”窗口中单击“数据源”时,所有可用的数据源都会出现在一个下拉列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 控件 教程 大全