怎样实现vb6的combox三级联动

2025-04-28 03:11:25
推荐回答(1个)
回答1:

1、在列表的事件里设定spl查询语句从各表表中取数据即可,此方法关键在于查询条件的设定;
2、以下方法是纯数组实现三级联动。
思路:定义一个结构体,然后定义一个结构体类型的数组;
结构体第一项为列表一的项;
结构体第二项为列表二的项目数组
结构体第三项为列表三的项目数组
这样以来,是结构体数组嵌套数组,3个列表形成连带关系,选择列表1的项时,列表2对应加载和列表1对应的结构体中第二项数据(是个数组),列表3亦然。
如果用三维数组表示也可以,但是没这样直观。
以下是联动示例,至于把数据从数据库读到数组里,那就不是此问题的关键,也不是难事。
Private Type data1
d_num As Long '列表1*******(示例中为数字)
d_val1(9) As Long '列表2*******(示例中为列表1的值+100+index)
d_val2(9) As Long '列表3******(示例中为列表2的值+10)
End Type
Dim test(9) As data1
Private Sub Combo1_Click()
Combo2.Clear: Combo2.Text = test(Combo1.ListIndex).d_val1(0)
For i = 0 To UBound(test(Combo1.ListIndex).d_val1())
Combo2.AddItem test(Combo1.ListIndex).d_val1(i) '列表2变动
Next i
Combo3.Clear: Combo3.Text = test(Combo1.ListIndex).d_val2(0)
For i = 0 To UBound(test(Combo1.ListIndex).d_val2())
Combo3.AddItem test(Combo1.ListIndex).d_val2(i) '列表3变动
Next i
End Sub
Private Sub Form_Load()
For i = 0 To 9 '初始化
test(i).d_num = i
For j = 0 To 9
test(i).d_val1(j) = test(i).d_num + 100 + j '列表2数组赋值
test(i).d_val2(j) = test(i).d_val1(j) + 10 '列表3数组赋值
Next j
Combo1.AddItem test(i).d_num '列表初始化
Combo2.AddItem test(0).d_val1(i): Combo3.AddItem test(0).d_val2(i) '列表初始化
Next i
Combo1.Text = test(0).d_num 'text显示
Combo2.Text = test(0).d_val1(0): Combo3.Text = test(0).d_val2(0) 'text显示
End Sub