怎样动态增加控件?

scxs 2006-03-07 10:35:31
需求:

有一TABLE中有IMAGE字段(图形值),我需要按TABLE中的行数在一FROM中显示出该字段的值在PICTURE控件中,请教如何按总行数而动态添加该控件。
...全文
176 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
思诺赛克 2006-03-15
  • 打赏
  • 举报
回复
up
scxs 2006-03-15
  • 打赏
  • 举报
回复
我要读取的记录不是一条完整的,而是每一条记录中的某个字段值?
scxs 2006-03-14
  • 打赏
  • 举报
回复
另外如何读书IMAGE类型的字段值(sql2000)
scxs 2006-03-14
  • 打赏
  • 举报
回复
For index = 1 To rs.RecordCount
Load txtrkzd(index)
txtrkzd(index).Top = txtrkzd(0).Height
txtrkzd(index).Left = txtrkzd(index - 1).Left + txtrkzd(index).Width

txtrkzd(index) = rs.Fields(index) '''错误在此行

txtrkzd(index).Visible = True
Next

请问如何读取不同的数据呢?我试用 txtrkzd(index) = rs.Fields("item") 读出的数据是第一条记录并全部相同的
kidc 2006-03-14
  • 打赏
  • 举报
回复
recordcount是记录总数 应该是 rs.fields.count

text是横排生成的

rs.fields是从0开始 如果你想一一对应 应该写成rs.fields(index-1) 这样读出来才是一条完整的记录!
kidc 2006-03-13
  • 打赏
  • 举报
回复
For Index =1 To 3
Load txtRkzd(Index)
txtRkzd(Index).Top = txtRkzd(0).Height
txtRkzd(Index).Left = txtRkzd(Index-1).Left+txtRkzd(index).width
txtRkzd(Index).Visible = True
Next
scxs 2006-03-13
  • 打赏
  • 举报
回复
可以给行代码参考吗?
kidc 2006-03-13
  • 打赏
  • 举报
回复
使用控件数组,要注意的是需要一个种子,还有被 加载的控件Visible = True
scxs 2006-03-13
  • 打赏
  • 举报
回复
为什么不能显示出控件来呢?
faysky2 2006-03-07
  • 打赏
  • 举报
回复
请参考:根据记录数来动态添加Image控件

引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Dim myImg() As Image
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection, rs
'连接SQL:
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登陆用户名;Password=登录密码;Initial Catalog=数据库名;Data Source=yourSERVICE"
'连接Access:
'cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Test.mdb;Jet OLEDB:DataBase password=12345;""
cn.Open
rs.CursorLocation=adUseClient'设置客户端游标
rs.Open "select * from 表1", cn, 3, 2
If rs.Eof Then
Exit Sub
rs.Close
cn.Close
Set rs=Nothing
Set cn=Nothing
End If
ReDim myImg(rs.RecordCount-1)
dim i%
for i=0 to rs.RecordCount-1
Set myImg(i) = Form1.Controls.Add("vb.Image", "img" & i & "")
myImg(i).Width=20:myImg(i).Height=20
myImg(i).Left = 100 + 100 * i
myImg(i).Top = 100 + 500 * i
myImg(i).Visible = True
'myImg.BorderStyle=1
next
rs.Close
cn.Close
Set rs=Nothing
Set cn=Nothing
Exit Sub
err:
MsgBox err.Description
End Sub
faysky2 2006-03-07
  • 打赏
  • 举报
回复
动态添加的控件,需要设置Visible=True才能看到,另外,位置也要设置一下(可以用Move方法),否则他们会堆在一起

你要根据记录数来添加多少个的话,先查询得到记录数,然后用循环来添加
faysky2 2006-03-07
  • 打赏
  • 举报
回复
或者用Load方法:
先在窗体上放一个Picture1控件,设置它的Index属性为0

Private Sub Command1_Click()
Load Picture1(1)
Load Picture1(2)
......
End Sub
faysky2 2006-03-07
  • 打赏
  • 举报
回复
动态添加控件:
Public myPic As VB.PictureBox

Private Sub Command1_Click()
Set myPic = Me.Controls.Add("VB.PictureBox", "myPic", Me)
myPic.Visible = True
myPic.Move 350, 500, 3000, 4000
myPic.ZOrder 0
End Sub

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧