回 帖 发 新 帖 刷新版面

主题:[求助] VB关于控件数组的创建

Private Sub Command1_Click()
    Static MaxIdx
    If MaxIdx = 0 Then MaxIdx = 1
    MaxIdx = MaxIdx + 1
    上面最后两行没有读明白  为什么在If 和 Then后面的MaxIdx 的值一个为0,一个为1
意思是数组的下标号还是数组元素的个数  ?  请大虾们指点 谢 谢
    
    If MaxIdx > 7 Then Exit Sub
    Load Optbutton(MaxIdx)
    Optbutton(MaxIdx).Top = Optbutton(MaxIdx - 1).Top + 480
    Optbutton(MaxIdx).Visible = True
End Sub

回复列表 (共11个回复)

沙发

[quote]    Static MaxIdx
    If MaxIdx = 0 Then MaxIdx = 1[/quote]
为什么要 static ...
为什么要 if Maxidx=0....
为什么要 optbutton(1)不存在?

板凳

Static的确需要,每按一次新创建的控件索引需要加1

“If MaxIdx = 0 Then MaxIdx = 1”就没必要了,如果要了的话,就变成从索引2开始Load了
另外,在“Optbutton(MaxIdx).Top = Optbutton(MaxIdx - 1).Top + 480”也会报错,因为1为空
当然,不排除楼主特意把默认存在的那个Optbutton的Index设为1

MaxIdx是控件数组的索引(或者楼主讲的下标)

3 楼

用 Optbutton.UBound &  Optbutton.Count 操作又方便有好理解

4 楼

“If MaxIdx = 0 Then MaxIdx = 1”就没必要了,如果要了的话,就变成从索引2开始Load了

这段程序是每单击1次命令按钮就创建一个单选按钮 ,我执行这段程序之后一共可以创建7个单选按钮---(optbutton) 为单选按钮这个控件数组的名称.
我认为"If MaxIdx > 7 Then Exit Sub" 当中的MaxIdx是个数  
但是当第二次单击command的时候 我不知道 If MaxIdx = ??? Then MaxIdx=???

5 楼


程序我试过 没有问题的  而且能够创建7个单选按钮

6 楼

[quote]
程序我试过 没有问题的  而且能够创建7个单选按钮[/quote]
[url]http://file.pfan.cn/upfile/200808062314761.rar[/url]

7 楼

好例子。

8 楼


此控件索引是从2到7,应是6个,0也不存在。

9 楼

唉!此程序是经典的“动态添加控件数组元素”的例子。
其在设计阶段,已经有序号为0、1的两个控件了。其余的依次加入,每次一个。

然后回答楼主问题。
    If MaxIdx = 0 Then MaxIdx = 1
maxidx变量的意义是,当前已经有的控件数组的最大下标。所以在初次使用时应为1,但因为新声明变量的初值为0,所以当是初值时改为1。这里从你对问题的叙述看,对if……then语句你不很理解,再啰嗦一下。if后面的“MaxIdx = 0”是条件,当满足条件时就执行then后面的“MaxIdx = 1”赋值语句。也就是说,这句用汉语来表达为:如果maxidx的值是0那么使maxidx的值为1。
    MaxIdx = MaxIdx + 1
因为现在我们要增加一个控件元素,所以数组的下标就要增加1个了。这句没有什么解释的,主要是你不理解maxidx的用途。
    If MaxIdx > 7 Then Exit Sub
这句用来控制控件的极限的,你可以修改成你喜欢的数字(大于1的整数)。

祝楼主进步。

10 楼

这个例题似乎是谭浩强主编的丛书里面的 [例7.5] ,在231页?

我来回复

您尚未登录,请登录后再回复。点此登录或注册