vb中如何动态添加删除控件
- 格式:xls
- 大小:26.00 KB
- 文档页数:6
使用DataGrid 控件DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示Recordset 对象的记录和字段。
可以使用DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。
DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。
当在设计时设置了DataGrid 控件的DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。
然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。
在运行时,可以在程序中切换DataSource 来察看不同的表,或者可以修改当前数据库的查询,以返回一个不同的记录集合。
注意DataGrid 控件与Visual Basic 5.0中的DBGrid 是代码兼容的,除了一个例外:DataGrid 控件不支持DBGrid 的“解除绑定模式”概念。
DBGrid 控件包括在Visual Basic 的Tools 目录中。
可能的用法查看和编辑在远程或本地数据库中的数据。
与另一个数据绑定的控件(诸如DataList 控件)联合使用,使用DataGrid控件来显示一个表的记录,这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。
使用DataGrid 控件的设计时特性可以不编写任何代码,只通过使用DataGrid 控件的设计时特性来创建一个数据库应用程序。
下面的说明概要地说明了在实现DataGrid 控件的典型应用时的一般步骤。
完整的循序渐进的指示,请参阅主题“DataGrid 方案1: 使用DataGrid 控件创建一个简单数据库应用程序”。
要在设计时实现一个DataGrid 控件1. 为要访问的数据库创建一个Microsoft 数据链接(.MDL) 文件。
请参阅“创建Northwind OLE DB 数据链接”主题,以获得一个示例。
2. 在窗体上放置一个ADO Data 控件,并将其ConnectionString 属性设置为在第1 步中所创建的OLE DB 数据源。
(完整版)VB6+Access对数据库进行添加删除项目附件2:VB6+Access编程中的数据库操作方法例1:首先,在工程里引用microsoft activex data objects 2.7 library Dim cn As New ADODB.Connection, rs1 As New ADODB.Recordset, sql As String '在通用声明里定义,其中cn是连接对象,rs1是记录集,sql是查询语句cn.Open "provider=microsoft.jet.oledb.4.0;data source=" + App.Path + "\数据库名.mdb" + ""sql = "select * from 表名"rs1.Open sql, cnrs1.MoveFirstDo While Not rs1.EOFCombo1.AddItem rs1("字段名")rs1.MoveNextLooprs1.Close例2:一个用户登录系统'准备工作: 数据库D:\Mydb.mdb 数据库中,建数据表:UserInfo,数据表中,建字段:User,Password,并添加一条记录'点工程->引用选中Microsoft Activex Data Objects 2.7 Library '控件:添加一个文本框,一个命令按钮Private Sub Command1_Click()Dim s As StringDim Conn As New ADODB.ConnectionDim Rs As New ADODB.RecordsetConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\mydb.mdb"'请将数据库名及路径换成你的实际数据库名及路径Dim UserName As StringDim Password As Strings = Text1.TextIf s = "1" Or s = "2" ThenUserName = InputBox("请输入用户名")Password = InputBox("请输入用户密码")sql = "Select * From [UserInfo] where User='" & UserName & "'"'UserInfo请换成你的实际数据表名Rs.Open sql, Conn, 1, 3If Rs.EOF ThenMsgBox "没有找到此用户"ElseIf Rs("Password") = Password ThenIf s ="1" ThenMsgBox "123"ElseIf s = "2" ThenMsgBox "456"End IfElseMsgBox "密码错误"End IfEnd IfEnd IfEnd Sub上面的例子实现了查询如果是要添加,删除,更新等操作,只要编写相应的SQL语句,再用Conn.Execute SQL 就可以了,如:添加的:SQL="Insert Into [UserInfo](User,Password) Values('aaaa','1234')"Conn.Execute SQL '执行后,就添加了一条记录删除:SQL="Delete From [UserInfo] Where User='aaaa'"Conn.Execute SQL '删除用户名为aaaa的用户记录更新:SQL="Update [UserInfo] Set Password='abcdefg' Where User='aaaa'"Conn.Execute SQL '执行后,修改用户aaaa的密码为abcdefg以上只是示例,在实际使用过程中,可以将一些内容用控件输入等方式进行,这样就有很大的灵活性了例3:Private Sub Form_Load()Dim cnn As ADODB.ConnectionDim my_recordset As ADODB.RecordsetDim connect_string As StringDim statestring As StringSet cnn=New ADODB.ConnectionSet my_recordset=New ADODB.Recordset'连接Access数据库connect_string="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\aaa.mdb;Pe rsist Security Info=False"cnn.Open connect_stringSelect Case cnn.StateCase adStateClosestatestring="adStateClosed"Case adStateOpenstatestring="adStateOpen"End Select'显示连接的状态MsgBox "连接成功!",,statestring'对wzdz表进行查询操作my_recordset.Open "Select * from wzdz",cnnmy_recordset.CloseEnd Sub例4:Dim strConn As String '连接字符串Dim strSql As String 'SQL命令Dim conn As ADODB.Connection '数据源Dim Ado As ADODB.Recordset '记录集strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\aaa.mdb;Persist Se curity Info=False"strSql = "SELECT * FROM bbb"Set conn = New ADODB.Connectionconn.ConnectionString = strConnconn.OpenVB中怎么对数据库进行添加删除修改的操作我用的是DATA控件我已经把VB和ACCESS 2000连接上了,VB 也能正常访问到数据了我希望可以加几的按钮,拥有添加,删除,修改,查询的功能(相关的数据改动就在原本浏览数据的TEXT中录入就行了)分享到:Private Sub Command1_Click()For i = 0 To 5Text1(i).Text = ""Next iAdodc1.RecordSource = "select * from " & s1 & " order by 编号"Adodc1.RefreshIf Adodc1.Recordset.RecordCount > 0 ThenAdodc1.Recordset.MoveLastText1(0).Text = "G" + Format((Val(Right(Trim(Adodc1.Recordset.Fields("编号")), 4)) + 1), "0000")ElseText1(0).Text = "G0001"End IfEnd SubPrivate Sub Command2_Click()If Adodc1.Recordset.EOF = False Thenc = MsgBox("您确认要删除该记录吗?", vbOKCancel, "删除提示信息")If c = vbOK ThenAdodc1.Recordset.DeleteAdodc1.RecordSource = "select * from 人员表"Adodc1.RefreshEnd IfElseMsgBox "当前数据库中没有可删除的数据记录", vbOKOnly, "提示信息"End IfEnd SubPrivate Sub Command3_Click()If Text1(0).Text = "" Or Text1(1).Text = "" ThenMsgBox "请选择需要改动的记录信息!", vbOKOnly, "错误提示"Elsec = MsgBox("确定要修改该记录吗?", vbOKCancel, "提示信息")If c = vbOK Then '如果确认修改的话进行修改操作If Text1(1).Text = "" ThenMsgBox "姓名不能为空值!", 48, "修改信息提示"Else'连接所要修改的数据库con.Open "Provider=SQLOLEDB.1;Password=2752;Persist Se curity Info=True;User ID=sa;Initial Catalog=sample;Data Source=JAMLEEPC"'开始修改数据库con.Execute ("UPDATE " & s1 & " SET 姓名='" & Text1(1). Text & "',年龄=" & Text1(2).Text & ",学历='" & Text1(3).Text & "',年级=" & Text1(4).Text & ",入学时间='" & Text1(5).Text & "' where 编号='" & Trim(Text1(0)) & "'")MsgBox "信息修改成功", 64, "修改信息提示"con.CloseAdodc1.RecordSource = "select * from 人员表"Adodc1.RefreshEnd IfEnd IfEnd IfEnd SubPrivate Sub Command4_Click()Adodc1.RecordSource = "select * from 人员表where 编号='" + Text1(0).T ext + "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount > 0 ThenMsgBox "该信息已存在,信息保存不成功", 64, "保存信息提示"Elsecc = MsgBox("您确定要保存该信息吗?", 33, "信息保存提示") If cc = vbOK ThenIf Text1(1).Text = "" Or Text1(2).Text = "" Or Text1(3).Text = "" Or Text1(4).Text = "" Or Text1(5).Text = "" ThenMsgBox "请确认,人员的姓名、年龄、学历、年级和入学时间不能为空", 48, "保存信息提示"Elsecon.Open "Provider=SQLOLEDB.1;Password=2752;Persist Security Info=True;User I D=sa;Initial Catalog=sample;Data Source=JAMLEEPC"con.Execute ("insert into 人员表values('" & Text1(0).Text & "','" & Text1(1).Text & "','" & Text1(2).Text & "','" & Text1(3).Text & "','" & Text1(4).Text & "', '" & Text1(5).Text & "')")MsgBox "信息修改成功", 64, "修改信息提示"con.CloseAdodc1.RecordSource = "select * from 人员表"Adodc1.RefreshEnd IfElseEnd IfEnd IfSet DataGrid1.DataSource = Adodc1End Sub给你段代码参考下,这个就是添加,删除,修改的代码。
ActiveX控件的动态创建和删除4. Active X 控件的动态创建和删除以上论述的方法适合于控件在应用程序[ying yong cheng xu]工具箱(TOOLBOX )中的情况,而Active X 控件一般在应用程序[ying yong cheng xu]运行机器上,但没有在工具箱中,这种情况则需要先进行注册,方法是利用 Regsvr32 在 Windows 环境中注册,或者在 VB 代码中进行注册,方法如下:Shell(Systempath &“ regsvr32.exe /s /I" & MyControlName, vbHide)其中Systempath 是Regsvr32.exe 所在的路径,MyControlName 是控件名字(包括路径)若要撤销,可以如下操作:Shell(Systempath &“ regsvr32.exe /s /U" &MyControlName, vbHide)下面讨论注册但是未出现在工具箱( TOOLBOX )中的 Active X 控件的情况,这其中也包括 VB 自带的一些 Active X 控件的使用。
具体的方法就是利用VBControlExtender 对象。
VBControlExtender 对象与EventInfo 相结合能提供事件陷井捕捉,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编程设计控件的事件,声明时若使用WithEvents 关键字,则会有个特殊的事件ObjectEvent(Info As EventInfo) ,它能捕捉到对象使用 RaiseEvent 产生的所有事件, EventInfo 数据结构[jie gou][shu ju jie gou]映射[ying she]了事件的名称、参数个数和参数的值。
VBControlExtender 和 EventInfo 相结合,采用 Select Case 就可以预先将不同类对象的事件放置一起,各自独立[du li]运作。
VB 动态添加删除控件汇总1. 概述在使用Visual Basic 进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。
本人在设计网络监控系统时,需要在原理图与实物示意图间切换。
切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。
下面将就Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法——控件数组和控件集合作详细的阐述。
2. 基于控件数组的动态控件的创建与删除vb 中的控件数组实际上也是一种数组,其中的每个控件具有相同的Name 属性,但具有不同的Index 属性,在这里Name 属性类似于数组的名字,而Index 属性类似于数组的下标同时,控件数组也支持普通VBA 数组的LBound 、UBound 和Count 方法,控件数组中的控件可以共享一个事件过程,便于代码的编写和集中处理,这正是使用控件数组的最大的理由。
但是控件数组与普通的数组并非完全一样,它不需要定义大小,只有这样我们才可以动态的扩展[kuo zhan]它。
下面给出利用Load 命令动态添加控件和Unload 命令动态删除控件的一般方法:(1)首先在窗体上放置一个TextBox ,其Name 属性设置为Text1 ,Index 属性设置为0 ,这样我们就创建了一个TextBox 控件数组,其中有一个成员。
(2)在窗体上放置一个命令按钮Command1 ,在其Click 事件中添加如下的代码:LoadText1(1)Text1(1).left=0Text1(1).visible=true(3)在窗体上放置一个命令按钮Command2 ,在其Click 事件中添加如下的代码:Unload Text1(1)(4)运行。
单击命令按钮Command1 ,窗体上会出现一个新的文本框;单击命令按钮Command2 ,窗体上刚出现的新的文本框就被删除。
vb中如何动态添加删除控件用Controls.Remove(控件) 动态删除控件。
注意:在VB中只能动态删除那些动态添加的控件;不允许删除在窗体设计器上布置的控件!示例如下:(1)创建一个VB工程(2)在Form1上布置两个Command(3)窗体代码Option Explicit' 声明要被动态添加/删除的控件Dim x As Label'-----------------------------' 动态添加一个Label控件'-----------------------------Private Sub Command1_Click()If x Is Nothing ThenSet x = Controls.Add("bel", "label1")x.Move 150, 150x.AutoSize = Truex.Caption = "这个是动态添加的标签" x.Visible = TrueEnd IfEnd Sub'-----------------' 动态删除控件'-----------------Private Sub Command2_Click()If x Is Nothing Then Exit Sub Controls.Remove xSet x = NothingEnd SubPrivate Sub Form_Load() Command1.Caption = "添加控件" Command2.Caption = "删除控件" End Sub(4)运行窗体启动点击“添加控件”按钮点击“删除控件”按钮。
VB动态添加控件并对其进行拖放操作改变位置用Controls.Add添加控件Dim WithEvents mypic As PictureBoxPrivate Sub Command1_Click()Set mypic = Controls.Add("VB.PictureBox", "mypic")mypic.Left = 50mypic.Top = 50mypic.Visible = TrueEnd Sub至于拖放操作,在程序中设置好mypic控件的有关属性后,处理mypic的有关事件即可注意:如果是控件数组的话,建议采用:load 控件数组名(索引) 的方法添加控件'可先手工画一个控件,Visable设置为False,Index设置为0'若需要多个就用load object(index)来加载,并把它们的visable设置为true;不需要多个就真接把原有的那个的visable设成显示就行了。
Private Declare Function ReleaseCapture Lib "user32" () As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As LongPrivate Sub Command1_MouseDown(Index As Integer, Button As Integer, _Shift As Integer, X As Single, Y As Single)If Button = 1 ThenReleaseCapture '移动控件SendMessage Command1(Index).hwnd, &HA1, 2, 0&End IfEnd SubPrivate Sub Form_Click()On Error GoTo endsubFor i = 1 To 5Load Command1(i) '生成控件Command1(i).Top = Command1(i - 1).TopCommand1(i).Left = Command1(i - 1).Left + Command1(i -1).WidthCommand1(i).Visible = TrueNextExit SubEnd Sub‘例如:添加一个commandbuttonPrivate Sub Form_Load()Form1.Controls.Add "mandButton", "cmdOk", Picture1 With Form1!cmdOk.Visible = True.Width = 500.Caption = "确认(&Y)"End WithEnd Sub‘删除控件Form1.Controls.Remove "ctl1" ctl1为控件名。
vb6中如何动态添加控件vb6中可以动态添加控件,不用控件数组:object.add (progid, name, container)参数说明:object:必需。
一个对象表达式,其值是“应用于”列表中的一个对象。
progid:必需。
一个标识控件的字符串。
大多数控件的 progid 都可通过查看对象浏览器来决定。
控件的 progid 是由控件的库和类组成的。
例如,commandbutton 控件的 progid 是mandbutton。
在progid 与对象浏览器中所显示的不一样的情况下,visual basic 将显示一个包括正确 progid 的错误信息。
name:必要。
一个字符串,用来标识集合的成员。
container:可选。
一个对象引用,它指定控件的容器。
如果没有指定或为null,缺省值为controls 集合所属的容器。
通过指定该参数,可以把一个控件放置在任何现存的容器控件(如frame 控件)中。
用户控件或 activex 文档也可以作为一个容器。
举例:(在picture1上面添加一个commandbutton)private sub form_load()form1.controls.add "mandbutton", "cmdok", picture1with form1!cmdok.visible = true.width = 500.caption = "确认(&y)"end withend sub重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用 add 方法之前您必须也添加这个控件的许可证关键字。
在运行时添加未引用的控件您也可以利用 add 方法来动态添加一个在工程中没有被引用的控件。
(“未引用的”控件是不出现在 toolbox 中的控件)。
为此,您必须也把控件的license 关键字添加到 licenses 集合中。
VB数组操作模块数组添加数组插入数组删除在VB中,数组操作是非常常见和重要的操作之一、本文将介绍VB中的数组操作模块,包括数组的添加、插入和删除等操作。
1.数组的添加:在VB中,可以使用ReDim Preserve语句来添加数组。
ReDim语句用于调整数组的大小,而Preserve关键字用于保留现有的数组数据。
下面是一个示例:```vbDim arr(3) As Integerarr(0) = 1arr(1) = 2arr(2) = 3ReDim Preserve arr(4)arr(3) = 4arr(4) = 5```上面的代码中,首先创建了一个长度为3的整型数组arr,然后使用ReDim Preserve语句将数组的大小调整为4,并且保留了原有的数据。
接着,我们可以通过索引访问数组的元素,向其中添加新的数据。
2.数组的插入:数组的插入操作可以通过使用VB的Array类来完成。
Array类提供了一些方法,如Insert和CopyTo等,用于数组的插入和复制。
下面是一个示例:```vbDim arr(3) As Integerarr(0) = 1arr(1) = 2arr(2) = 3Dim newArr As Array = Array.CreateInstance(GetType(Integer), arr.Length + 1)Array.Copy(arr, newArr, 3)newArr.SetValue(4, 3)arr = TryCast(newArr, Integer()```在上面的代码中,首先创建了一个长度为3的整型数组arr,并给数组元素赋值。
然后,使用Array.CreateInstance方法创建一个长度比原数组大1的新数组newArr。
接着,使用Array.Copy方法将原数组的前3个元素复制到新数组中。
最后,使用SetValue方法将新的元素4插入到新数组的最后一个位置。
vb中如何动态添加删除控件
Private Declare Function GetCursorPos Lib "user32" (lpPoint As pointapi) As Long
Private Type pointapi
X As Long
Y As Long
End Type
Private Sub Command_Click(Index As Integer)
Text3.Text = 1
End Sub
Private Sub Command_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As S If Index > 0 And Button = 2 Then
Unload Command(Index)
End If
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim mouse As pointapi
GetCursorPos mouse
Text1.Text = Val(mouse.X) * 15 - Me.Left - 50
Text2.Text = Val(mouse.Y) * 15 - Me.Top - 300
If Text1.Text > 1000 Then
If Text3.Text = 1 Then
If Button = 1 Then
i = Command.UBound + 1
Load Command(i)
Command(i).Left = Text1.Text
Command(i).Top = Text2.Text
Command(i).Caption = Str(i)
Command(i).Visible = True
End If
End If
If Text3.Text = 2 Then
If Button = 1 Then
i = Label.UBound + 1
Load Label(i)
Label(i).Left = Text1.Text
Label(i).Top = Text2.Text
Label(i).Caption = Str(i)
Label(i).Visible = True
End If
End If
If Text3.Text = 3 Then
If Button = 1 Then
i = Text.UBound + 1
Load Text(i)
Text(i).Left = Text1.Text
Text(i).Top = Text2.Text
Text(i).Visible = True
End If
End If
End If
End Sub
Private Sub Label_Click(Index As Integer)
Text3.Text = 2
End Sub
Private Sub Label_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single If Index > 0 And Button = 2 Then
Unload Label(Index)
End If
End Sub
Private Sub Text_Click(Index As Integer)
Text3.Text = 3
End Sub
Private Sub Text_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) If Index > 0 And Button = 2 Then
Unload Text(Index)
End If
End Sub
无法在窗体上添加控件是为什么
问题补充:
小弟明白,但是我上面的程序错在什么地方,无法显示控件啊,谢谢
推荐答案
Private Sub Form_Load()
Form1.Controls.Add "mandButton", "cmdObj1", Frame1
With Form1!cmdObj1
.Visible = True
.Width = 2000
.Caption = "Dynamic Button"
End With
End Sub
其他回答共1条
动态添加控件有两种方法,一种是添加一个控件,一种是再已存在的控件组里动态添加组员。
法1:dim withevents CMD as commandbutton
set CMD=controls.add(""mandbutton","CMD1")
之后设置CMD1的各个属性即可
法2:先在设计窗口上创建一个控件数组组员,比如名为CMD1(0)的一个按钮,然后在程序中使用Load方法加载新组员,比乘以15是坐标两种单位的换算,VB默认坐标单位是tiwp(缇),缇与像素之间换算关系是: 15缇=1像素
Single, Y As Single)
e, Y As Single) As Single, Y As Single)
Load方法加载新组员,比如 load CMD1(1),load CMD1(2)...之后再设置其属性即可。