| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2694 人关注过本帖
标题:[求助] 如何循环Text1到Text17创建多个数组控件?
只看楼主 加入收藏
sblisb
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2013-3-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
[求助] 如何循环Text1到Text17创建多个数组控件?
我在窗体上创建了Text1(00到Text17(0)17个文本框,单个文本框动态创建我会了,用如下代码

For i = 1 To 26
    Load Text1(i) ' 这句是关键,,,,,
            Text1(i).Top = Text1(i - 1).Top + Text1(i - 1).Height + 200
             Text1(i).Visible = True
    Next
可如何把17个文本框都创建26个数组控件呢?能再加个循环从1-17吗?还是只能一个个写?

[此贴子已经被作者于2018-9-19 23:09编辑过]

搜索更多相关主题的帖子: 循环 Text1 创建 数组 控件 
2018-09-19 17:02
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:7 
文本框有index可用吧?

Text1(0) ... Text1(17)

不要選我當版主
2018-09-19 17:21
sblisb
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2013-3-12
收藏
得分:0 
以下是引用wube在2018-9-19 17:21:26的发言:

文本框有index可用吧?

Text1(0) ... Text1(17)

我的意思是Text1(0) ... Text1(26),我用如上代码创建了26个
而Text2(0)...Text(26)如何创建
总共有17个text要创建,每个都要26个
2018-09-19 18:04
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
http://level168.

這個方法必需先建立一個要動態產生的控制項,並將index設成0,然後就可以由程式來動態建立控制項陣列了。

1.在form1建立一個Text1的控制項,將屬性Index設為0,此控制項變成控制項陣列0。

2.利用Load 控制項(index)的方式來建立控制項。

For Example:

在Form_Load中輸入以下程式:

For i = 1 To 10
Load Text1(i)
Set Text1(i).Container = Form1
Text1(i).Left = i * 1000 + 2000
Text1(i).Top = 1500
Text1(i).Text = i
Text1(i).Visible = True
Next i

這樣便會在Form1建立十個text1控制項陣列,加上第一個原本就建立的總共是十一個。

若要使用events來控制,可以輸入以下的程式:

Private Sub Text1_change(Index As Integer)
Select Case Index

Case 0

MsgBox (”The text in the first TextBox has changed”)

Case 1

MsgBox (”The text in the second TextBox has changed”)

Case 2

MsgBox (”The text in the third TextBox has changed”)

End Select
End Sub
程式可以利用控制項的index來做處理。

來源:http://3ck.

不要選我當版主
2018-09-19 18:14
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
网路上找的关键字“动态创建控制项阵列VB6”

不要選我當版主
2018-09-19 18:16
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:7 
程序代码:
For i = 1 To 26
    Load Text1(i):Load Text2(i):Load Text3(i):Load Text4(i)....Load Text16(i):Load Text17(i)    '同时加载 Text1(i) 到 Text17(i) 的控件。
    Text1(i).Top = Text1(i - 1).Top + Text1(i - 1).Height + 200   '距上边界距离,不可缺少,不然控件将重合了,只能看到一个控件
    Text1(i).Left = Text1(i - 1).Left + Text1(i - 1).Width + 100   '距左边界距离,不可缺少,不然控件将重合了,只能看到一个控件
    Text1(i).Visible = True
    'Text1(i) 到 Text17(i) 的上边界与左边界距离设置同样不能缺少!!!
    'Text1(i) 到 Text17(i) 的 Visible 属性为 True 的设置同样不能缺少!!!
Next i


请不要选我!!!
2018-09-19 18:18
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4937
专家分:30047
注 册:2008-10-15
收藏
得分:7 
不同标识符的控件数组,需要写不同的代码段。
可以自己封装一个函数,负责加载控件,每次把控件名传递进去。

程序代码:
Public Sub addtextbox(tb As Object)
'经测试,只有 object 类型才能接受控件数组做为参数
Dim I As Long
'循环体代码照你的抄的
For I = 1 To 26
    Load tb(I) ' 这句是关键,,,,,
    tb(I).Top = tb(I - 1).Top + tb(I - 1).Height + 200
    tb(I).Visible = True
Next
End Sub


调用代码,有几组控件,就要写几个,这里写了二行
Call addtextbox(Text1())
Call addtextbox(Text2())



[此贴子已经被作者于2018-9-19 19:27编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2018-09-19 19:19
sblisb
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2013-3-12
收藏
得分:0 
以下是引用风吹过b在2018-9-19 19:19:36的发言:

不同标识符的控件数组,需要写不同的代码段。
可以自己封装一个函数,负责加载控件,每次把控件名传递进去。

Public Sub addtextbox(tb As Object)
'经测试,只有 object 类型才能接受控件数组做为参数
Dim I As Long
'循环体代码照你的抄的
For I = 1 To 26
    Load tb(I) ' 这句是关键,,,,,
    tb(I).Top = tb(I - 1).Top + tb(I - 1).Height + 200
    tb(I).Visible = True
Next
End Sub


调用代码,有几组控件,就要写几个,这里写了二行
Call addtextbox(Text1())
Call addtextbox(Text2())

代码停在
Load tb(I)
提示
实时错误'344',
必须为对象数组指定索引

怎么办?
2018-09-19 20:42
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
代码停在
Load tb(I)
提示
实时错误'344',
必须为对象数组指定索引

回复 8楼 sblisb
我测试了一下 7 楼 风吹过b 的代码,没有问题。
稍稍修改了一下:
程序代码:
Public Sub addtextbox(tb As Object)
Dim I As Long
For I = 1 To 26
    Load tb(I) 
    tb(I).Top = tb(I - 1).Top    '同一个数组控件离上边界距离应该是一样的
    tb(I).Left = tb(I - 1).Left + tb(I - 1).Width + 100   '同一个数组控件排列在同一行
    tb(I).Visible = True
Next
End Sub

你出现的问题估计是你没有对有些  Text 控件分配下标,即放置在窗体的有的控件没有设置 Index 的值为 0 的原因吧。

楼主 sblisb
既然问题已经解决,为什么不结贴!


[此贴子已经被作者于2018-9-26 19:16编辑过]


请不要选我!!!
2018-09-19 21:59
sblisb
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2013-3-12
收藏
得分:0 
以下是引用ZHRXJR在2018-9-19 21:59:58的发言:


回复 8楼 sblisb
我测试了一下 7 楼 风吹过b 的代码,没有问题。
稍稍修改了一下:
Public Sub addtextbox(tb As Object)
Dim I As Long
For I = 1 To 26
    Load tb(I)
    tb(I).Top = tb(I - 1).Top    '同一个数组控件离上边界距离应该是一样的
    tb(I).Left = tb(I - 1).Left + tb(I - 1).Width + 100   '同一个数组控件排列在同一行
    tb(I).Visible = True
Next
End Sub
你出现的问题估计是你没有对有些  Text 控件分配下标,即放置在窗体的有的控件没有设置 Index 的值为 0 的原因吧。

谢谢,确实是有一个控件没设置index值

谢谢二位版主

2018-09-19 23:07
快速回复:[求助] 如何循环Text1到Text17创建多个数组控件?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020208 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved