如何在程序中动态生成控件名?

梦断酒醒 2007-07-06 01:07:13
我要在一个active report中使用数十个标签,可是active report好像不支持控件数组,在代码中一个一个写控件名名太麻烦了,能不能动态生成控件名呢?
...全文
339 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2007-07-27
  • 打赏
  • 举报
回复
sorry
晕了,是activ report啊~~看错!
vbman2003 2007-07-27
  • 打赏
  • 举报
回复
给你个示例,以前写的

Private Sub DataReport_Initialize()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Integer
Dim mLeft As Long

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & App.Path & "\db1.mdb"
rs.Open "select * from tb1", cn, adOpenKeyset, adLockOptimistic
Set DataReport1.DataSource = rs
'以上部分是设置 DataReport 的数据源

Dim dTextCol As New Collection
Dim Ctl As Object

'根据情况,预先在报表上添加多个相关控件
'下面以RptTextBox控件为例
For Each Ctl In DataReport1.Sections.Item("Section1").Controls
If TypeName(Ctl) = "RptTextBox" Then
Ctl.DataField = rs.Fields.Item(0).Name '先将所有TextBox(RptTextBox) 控件绑定到某一字段
dTextCol.Add Ctl
End If
Ctl.Left = 0
Ctl.Top = 0
Ctl.Height = 400
Ctl.Width = 1500
Ctl.Visible = False
Next Ctl

For i = 0 To rs.Fields.Count - 1
With dTextCol.Item(i + 1)
.Visible = True
.DataField = rs.Fields.Item(i).Name '重新绑定字段
.Left = mLeft
mLeft = .Left + .Width
'重新定位。还有Width等等比较复杂,要根据具体情况写代码判断
End With
Next i
DataReport1.Sections.Item("Section1").Height = 400

End Sub
梦断酒醒 2007-07-27
  • 打赏
  • 举报
回复
在哪啊?地址是什么?谢了
zhangpj11 2007-07-22
  • 打赏
  • 举报
回复
我才写了一篇,去看看吧
梦断酒醒 2007-07-16
  • 打赏
  • 举报
回复
继续求助,想了好几天也没想到好的解决方案啊!
梦断酒醒 2007-07-11
  • 打赏
  • 举报
回复
请教楼上,即然很简单能不能简单说明一下如何做?我在它的例子里没有找到类似的演示.
梦断酒醒 2007-07-10
  • 打赏
  • 举报
回复
没有人知道?
gpyrbn 2007-07-10
  • 打赏
  • 举报
回复
很简单,activ report里面很多空间是可以编程的,在他们的示例程序中有这方面的例子!建议你到安装目录下找一找!

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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