从控件数组加载控件
Load control from array of controls
这是我的代码
Function GenerateInterface()
Dim ObjectsArray() As VB.Control
Dim TmpCtrl As VB.Control
ReDim ObjectsArray(1)
For Each TmpCtrl In Me.Controls
If TmpCtrl.Container Is frConfigVars(0) Then
Set ObjectsArray(UBound(ObjectsArray) - 1) = TmpCtrl
ReDim Preserve ObjectsArray(UBound(ObjectsArray) + 1)
End If
Next TmpCtrl
For i = 1 To UBound(Variables) - 1 'global array containing how many frames I need
Load frConfigVars(i)
frConfigVars(i).Left = 0
frConfigVars(i).top = frConfigVars(i - 1).top + frConfigVars(i - 1).Height
frConfigVars(i).Visible = True
For x = 0 To UBound(ObjectsArray) - 1
Set TmpCtrl = ObjectsArray(x)
Load TmpCtrl(i) '<-- crashes here
'stuff to move and view new object
Next x
Next i
End Function
它基本上将框架中存在的 0 索引对象加载到控件数组中,让我动态加载它们多少次我需要但我无法从变量本身加载新控件。
我有点明白为什么加载会崩溃,我猜 TmpCtrl 包含(示例)txtbox(0) 而不是我需要加载新对象的 txtbox,对吗?
如果是这样,我该如何加载新控件?
我无法从头开始创建对象,因为它们很多而且定位很麻烦
我不能用他们的名字来称呼他们,因为随着时间的推移我会 add/remove 一些东西所以我不想在它工作后再次触摸这个功能
谢谢
好吧,其实是我自己做的!
要访问对象数组本身,我只需要更改
Set TmpCtrl = ObjectsArray(x)
进入
Set TmpCtrl = Me.Controls(ObjectsArray(x).Name)
这是我的代码
Function GenerateInterface()
Dim ObjectsArray() As VB.Control
Dim TmpCtrl As VB.Control
ReDim ObjectsArray(1)
For Each TmpCtrl In Me.Controls
If TmpCtrl.Container Is frConfigVars(0) Then
Set ObjectsArray(UBound(ObjectsArray) - 1) = TmpCtrl
ReDim Preserve ObjectsArray(UBound(ObjectsArray) + 1)
End If
Next TmpCtrl
For i = 1 To UBound(Variables) - 1 'global array containing how many frames I need
Load frConfigVars(i)
frConfigVars(i).Left = 0
frConfigVars(i).top = frConfigVars(i - 1).top + frConfigVars(i - 1).Height
frConfigVars(i).Visible = True
For x = 0 To UBound(ObjectsArray) - 1
Set TmpCtrl = ObjectsArray(x)
Load TmpCtrl(i) '<-- crashes here
'stuff to move and view new object
Next x
Next i
End Function
它基本上将框架中存在的 0 索引对象加载到控件数组中,让我动态加载它们多少次我需要但我无法从变量本身加载新控件。
我有点明白为什么加载会崩溃,我猜 TmpCtrl 包含(示例)txtbox(0) 而不是我需要加载新对象的 txtbox,对吗? 如果是这样,我该如何加载新控件?
我无法从头开始创建对象,因为它们很多而且定位很麻烦 我不能用他们的名字来称呼他们,因为随着时间的推移我会 add/remove 一些东西所以我不想在它工作后再次触摸这个功能
谢谢
好吧,其实是我自己做的!
要访问对象数组本身,我只需要更改
Set TmpCtrl = ObjectsArray(x)
进入
Set TmpCtrl = Me.Controls(ObjectsArray(x).Name)