
关于VB6动态添加控件的问题
我想动态添加Frame下所有的控件,并将新添加的控件移动到指定的位置和显示出来。现在的问题是:1、Frame下的控件数量多且各种类型都有,且全是控件数组;2、如果采用Lo...
我想动态添加Frame下所有的控件,并将新添加的控件移动到指定的位置和显示出来。现在的问题是:
1、Frame下的控件数量多且各种类型都有,且全是控件数组;
2、如果采用Load 方法一个个地手动添加,那代码会变得很长,而且容易漏和出错,也不便于改变原始控件。
我的想法是先通过自动搜索Frame下的控件,搜到一个自动动态添加一个。但是一直实现不了,请大家帮忙解决,谢谢:)
Dim Obj1 As Control
Dim int1 As Integer
Dim intCount As Integer '添加的数量
For int1 = 1 To intCount
For Each Obj1 In Me.Controls
If Obj1.Name = "frame1" Then
'动态加载
Load Obj1.Name & "(" & int1 & ")"
End If
Next Obj1
Next int1
End Sub 展开
1、Frame下的控件数量多且各种类型都有,且全是控件数组;
2、如果采用Load 方法一个个地手动添加,那代码会变得很长,而且容易漏和出错,也不便于改变原始控件。
我的想法是先通过自动搜索Frame下的控件,搜到一个自动动态添加一个。但是一直实现不了,请大家帮忙解决,谢谢:)
Dim Obj1 As Control
Dim int1 As Integer
Dim intCount As Integer '添加的数量
For int1 = 1 To intCount
For Each Obj1 In Me.Controls
If Obj1.Name = "frame1" Then
'动态加载
Load Obj1.Name & "(" & int1 & ")"
End If
Next Obj1
Next int1
End Sub 展开
1个回答
展开全部
首先提醒:动态添加控件数组,你窗体上的第1个控件的Index属性,要设置为0
其次,你的程序有问题,变量intCount的默认值是0,循环不会执行。
最后:既然是对控件frame1添加数组,后边的具体添加可以这样实现:
Load frame1(int1)
frame1(int1).Visible = True
frame1(int1).left = ????
frame1(int1)..Top = ????
因为用代码动态添加的控件,默认情况下是不可见的,而且位置是与原来的控件重合的。
估计,你的那个 Load Obj1.Name & "(" & int1 & ")",有问题。
如有不当,请指正。
其次,你的程序有问题,变量intCount的默认值是0,循环不会执行。
最后:既然是对控件frame1添加数组,后边的具体添加可以这样实现:
Load frame1(int1)
frame1(int1).Visible = True
frame1(int1).left = ????
frame1(int1)..Top = ????
因为用代码动态添加的控件,默认情况下是不可见的,而且位置是与原来的控件重合的。
估计,你的那个 Load Obj1.Name & "(" & int1 & ")",有问题。
如有不当,请指正。
追问
谢谢一楼的回答。
1、Load Obj1.Name & "(" & int1 & ")"
是的,是这条语句有问题。我之所以写出来,只是想通过这种方法来达到加载的目的。也是想能不能用这种方法进行加载。你给出的代码我用过,只是要一个控件一个控件地写代码,控件多了,太繁琐,又容易出错,而且控件有变化的话,还得改。
2、不好意思,intCount,在这忘了给它赋值。我原来的程序里,这个变量是程序一开始就会从配置文件里取到,它的值在1~10之间。
追答
我读你的代码,理解为应该改成这样如下,就可以满足你的要求:
For Each Obj1 In Me.Controls
If Obj1.Name = "frame1" Then
'动态加载
For int1 = 1 To intCount
Load frame1(int1)
frame1(int1).visible=tre
frame1(int1).top=frame1(int1-1).top+ x 'x是有个垂直方向增量
frame1(int1).left=frame1(int1-1).left
Next int1
End If
Next Obj1
这样,这些控件左边对齐,垂直等距离间隔了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询