vb动态加载控件

前端之家收集整理的这篇文章主要介绍了vb动态加载控件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Option Explicit@H_502_1@ Dim con As New ADODB.Connection@H_502_1@ Dim res As New ADODB.Recordset@H_502_1@ Dim moveX As Long '动态添加控件时控件移到X点@H_502_1@ Dim moveY As Long '动态添加控件时控件移到Y点@H_502_1@ Const mWidth = 1500@H_502_1@ Const ConCount = 4 '表中查询条件的数量@H_502_1@ Const WM_DELETE = &H400 '自定义消息@H_502_1@ Const GWL_WNDPROC = -4@H_502_1@ Dim LVW_COUNT As Integer 'listview控件中行数@H_502_1@ Dim WithEvents cBoxName As VB.ComboBox@H_502_1@ Dim WithEvents cBoxAge As VB.ComboBox@H_502_1@ Dim WithEvents cBoxTime As VB.ComboBox@H_502_1@ Dim isLoadAge(2) As Boolean@H_502_1@ Dim tBoxName As VB.TextBox@H_502_1@ Dim tBoxAge(1) As Control@H_502_1@ Dim tBoxTime() As VB.TextBox@H_502_1@ Dim lbl(1) As VB.Label@H_502_1@ Private Sub Age_Click() '选中年龄@H_502_1@ Dim itemA As ListItem@H_502_1@ Dim i,x As Integer@H_502_1@ res.MoveFirst@H_502_1@ Do While Not res.EOF@H_502_1@ If (res.Fields("Condition")) = "年龄" Then@H_502_1@ For x = 1 To ListViewSearch.ListItems.Count@H_502_1@ If ListViewSearch.ListItems(x).Text = "年龄" Then@H_502_1@ MsgBox "该配置项中已经存在!"@H_502_1@ Exit Sub@H_502_1@ End If@H_502_1@ Next x@H_502_1@ Set itemA = ListViewSearch.ListItems.Add(,res.Fields("Condition"))@H_502_1@ Set cBoxAge = Controls.Add("VB.ComboBox","cBoxAge")@H_502_1@ LVW_COUNT = ListViewSearch.ListItems.Count@H_502_1@ moveX = ListViewSearch.Width + 60@H_502_1@ moveY = ListViewSearch.Top + 260 * (LVW_COUNT)@H_502_1@ cBoxAge.Visible = True@H_502_1@ cBoxAge.Move moveX,moveY,mWidth@H_502_1@ For i = 1 To ConCount@H_502_1@ If res.Fields(i).Value <> "" Then@H_502_1@ cBoxAge.AddItem res.Fields(i).Value@H_502_1@ End If@H_502_1@ Next i@H_502_1@ End If@H_502_1@ res.MoveNext@H_502_1@ Set itemA = Nothing@H_502_1@ Loop@H_502_1@ End Sub@H_502_1@ Private Sub cBoxAge_Click() '选择年龄查询条件,根据所选条件查询@H_502_1@ If Not (tBoxAge(0) Is Nothing) Then@H_502_1@ Dim wParam As Long@H_502_1@ Dim lParam As Long@H_502_1@ Dim lResult As Long@H_502_1@ SendKeys "{Enter}"@H_502_1@ Call SendMessage(Me.hwnd,WM_DELETE,wParam,lParam)@H_502_1@ End If@H_502_1@ If cBoxAge.List(cBoxAge.ListIndex) = "介于两者之间" Then@H_502_1@ Set tBoxAge(0) = Controls.Add("VB.TextBox","tBoxAge0") '添加控件用于输入年龄进行查询@H_502_1@ Set tBoxAge(1) = Controls.Add("VB.TextBox","tBoxAge1")@H_502_1@ Set lbl(0) = Controls.Add("VB.Label","lbl")@H_502_1@ isLoadAge(0) = True@H_502_1@ isLoadAge(1) = True@H_502_1@ lbl(0).Caption = "到"@H_502_1@ lbl(0).Visible = True@H_502_1@ tBoxAge(0).Visible = True@H_502_1@ tBoxAge(1).Visible = True@H_502_1@ moveX = ListViewSearch.Width + cBoxAge.Width + 50@H_502_1@ moveY = cBoxAge.Top@H_502_1@ tBoxAge(0).Move moveX,mWidth,cBoxAge.Height - 50@H_502_1@ moveX = moveX + tBoxAge(0).Width + 50@H_502_1@ lbl(0).Width = mWidth - 1200@H_502_1@ lbl(0).Move moveX,moveY + 50,lbl(0).Width,tBoxAge(0).Height@H_502_1@ tBoxAge(1).Move moveX + lbl(0).Width - 100,cBoxAge.Height@H_502_1@ Else@H_502_1@ Set tBoxAge(0) = Controls.Add("VB.TextBox","tBoxAge0")@H_502_1@ isLoadAge(0) = True@H_502_1@ tBoxAge(0).Visible = True@H_502_1@ moveX = ListViewSearch.Width + cBoxAge.Width + 50@H_502_1@ moveY = cBoxAge.Top@H_502_1@ tBoxAge(0).Move moveX,cBoxAge.Height@H_502_1@ End If@H_502_1@ End Sub

Private Sub cBoxAge_KeyPress(KeyAscii As Integer)@H_502_1@ If KeyAscii = 13 Then@H_502_1@ Controls.Remove tBoxAge(0)@H_502_1@ Set tBoxAge(0) = Nothing@H_502_1@ End If@H_502_1@ KeyAscii = 0@H_502_1@ End Sub

Private Sub Form_Load()@H_502_1@ con.ConnectionString = "Provider=sqlOLEDB;Persist Security Info=False;User ID=sa;PWD=密码;Initial Catalog=数据库名;Data Source=服务器名" '连接数据库字符串@H_502_1@ con.Open@H_502_1@ con.CommandTimeout = 20@H_502_1@ res.Open "CaseSerchConfg",con,adOpenDynamic,adLockPessimistic@H_502_1@ ListViewSearch.View = lvwReport '报表显示@H_502_1@ ListViewSearch.ColumnHeaders.Add 1,"Condition",2050@H_502_1@ ListViewSearch.GridLines = True@H_502_1@ Call WindowProc(Me.hwnd,0)@H_502_1@ End Sub@H_502_1@ Private Sub Name_Click() '选中姓名@H_502_1@ Dim itemA As ListItem@H_502_1@ Dim i,x As Integer@H_502_1@ res.MoveFirst@H_502_1@ Do While Not res.EOF@H_502_1@ If (res.Fields("Condition")) = "姓名" Then@H_502_1@ For x = 1 To ListViewSearch.ListItems.Count@H_502_1@ If ListViewSearch.ListItems(x).Text = "姓名" Then@H_502_1@ MsgBox "该配置项中已经存在!"@H_502_1@ Exit Sub@H_502_1@ End If@H_502_1@ Next x@H_502_1@ Set itemA = ListViewSearch.ListItems.Add(,res.Fields("Condition"))@H_502_1@ Set cBoxName = Controls.Add("VB.ComboBox","cBoxName")@H_502_1@ Set tBoxName = Controls.Add("VB.TextBox","tBoxName")@H_502_1@ LVW_COUNT = ListViewSearch.ListItems.Count@H_502_1@ moveX = ListViewSearch.Width + 60@H_502_1@ moveY = ListViewSearch.Top + 260 * (LVW_COUNT)@H_502_1@ cBoxName.Visible = True@H_502_1@ cBoxName.Move moveX,mWidth@H_502_1@ For i = 1 To ConCount@H_502_1@ If res.Fields(i).Value <> "" Then@H_502_1@ cBoxName.AddItem res.Fields(i).Value@H_502_1@ End If@H_502_1@ Next i@H_502_1@ tBoxName.Visible = True@H_502_1@ moveX = moveX + cBoxName.Width@H_502_1@ tBoxName.Move moveX,cBoxName.Height@H_502_1@ End If@H_502_1@ res.MoveNext@H_502_1@ Loop@H_502_1@ Set itemA = Nothing@H_502_1@ End Sub

Private Sub Time_Click() '选中日期 Dim itemA As ListItem Dim i,x As Integer res.MoveFirst Do While Not res.EOF If (res.Fields("Condition")) = "时间" Then For x = 1 To ListViewSearch.ListItems.Count If ListViewSearch.ListItems(x).Text = "时间" Then MsgBox "该配置项中已经存在!" Exit Sub End If Next x Set itemA = ListViewSearch.ListItems.Add(,res.Fields("Condition")) Set cBoxTime = Controls.Add("VB.ComboBox","cBoxTime") cBoxTime.Visible = True LVW_COUNT = ListViewSearch.ListItems.Count moveX = ListViewSearch.Width + 60 moveY = ListViewSearch.Top + 260 * (LVW_COUNT) cBoxTime.Move moveX,mWidth For i = 1 To ConCount If res.Fields(i).Value <> "" Then cBoxTime.AddItem res.Fields(i).Value End If Next i End If res.MoveNext Loop Set itemA = Nothing End Sub

猜你在找的VB相关文章