gpt4 book ai didi

vb6 - 在代码中制作控制数组

转载 作者:行者123 更新时间:2023-12-01 23:12:35 25 4
gpt4 key购买 nike

此代码不起作用我想在 VB6 中的 Form_Load 上创建一个控件数组,因为我必须为拼字板制作 225 个控件数组,并且它们必须精确。我的代码是:

Private lblblocks(1 To 225) As Label

Private Sub Form_Load()
Dim i As Integer, j As Integer
For i = 1 To 15
For j = 1 To 15
Dim arrnum As Integer
arrnum = (i - 1) * 15 + j
Load lblblocks(arrnum)
With lblblocks(arrnum)
.Width = 1000
.Height = 1000
.Top = (i - 1) * 1000
.Left = (j - 1) * 1000
.Visible = True
.BackColor = Int(Rnd(1) * 255) + &H100 * Int(Rnd(1) * 255) + &H10000 * Int(Rnd(1) * 255)
End With
Next j
Next i
End Sub

我使用背景色来查看所有标签框。这段代码不起作用。我收到错误“未设置对象变量或 With block 变量”。有什么帮助吗?我不知道出了什么问题。我想将标签框保留在控制数组中,我知道如何做到这一点而不将其设为控制数组。

最佳答案

科迪·格雷的评论是正确的。我不相信您可以仅在 VB6 代码中即时创建控制数组。您必须在窗体上放置该控件的一个实例,并为其指定一个为零的 Index 属性值。这将创建一个只有一个元素(索引为零)的控制数组。然后,您可以修改代码以产生所需的结果,如下所示:

Private Sub Form_Load()
Dim i As Integer
Dim j As Integer

For i = 0 To 14
For j = 0 To 14
Dim tileIdx As Integer
tileIdx = i * 15 + j

'If the tile index is zero, we already have that control,
'so there's no need to load new instance. Otherwise, use the
'Load method to create a new control in the array with the
'specified index.
If tileIdx > 0 Then
Load lblTile(tileIdx)
End If

With lblTile(tileIdx)
.Width = 1000
.Height = 1000
.Top = i * 1000
.Left = j * 1000
.Visible = True
.BackColor = Int(Rnd(1) * 255) + &H100 * Int(Rnd(1) * 255) + &H10000 * Int(Rnd(1) * 255)
End With
Next
Next
End Sub

正如评论中所指出的,您不需要在数组索引零处加载控件的另一个实例,因为您在设计时就这样做了。我还从零开始迭代数组,以便稍微轻松地计算索引。

关于vb6 - 在代码中制作控制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com