关于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
展开
 我来答
syx54
2012-03-28 · TA获得超过7380个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2883万
展开全部
首先提醒:动态添加控件数组,你窗体上的第1个控件的Index属性,要设置为0
其次,你的程序有问题,变量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
这样,这些控件左边对齐,垂直等距离间隔了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式