list1里有3行数据(假设为A,B,C),在frame1里有三个(text1,text2,text3)输入数据后,
如何实现例:
选中list1里的A
在frame1里的3个text分别输入5然后选list1里的B
此时frame1里的3个text为初始的状态,可以输入新的数据再回到A
A的数据还在。我不知道是要把整个frame换掉还是有什么方法,frame是固定在相同位置的。还望哥哥姐姐们指教。
如何实现例:
选中list1里的A
在frame1里的3个text分别输入5然后选list1里的B
此时frame1里的3个text为初始的状态,可以输入新的数据再回到A
A的数据还在。我不知道是要把整个frame换掉还是有什么方法,frame是固定在相同位置的。还望哥哥姐姐们指教。
在frame1里的3个text分别输入5text1 = 5
text2 = 5
text3 = 5然后选list1里的B
此时frame1里的3个text为初始的状态,可以输入新的数据text1 = ""
text2 = ""
text3 = ""再回到A
A的数据还在。没看懂
Option ExplicitPrivate Sub Form_Load()
List1.AddItem "A"
List1.AddItem "B"
List1.AddItem "C"
End SubPrivate Sub List1_Click()
If List1.Text = "A" Then
Text1.Text = 5
Text2.Text = 5
Text3.Text = 5
End If
If List1.Text = "B" Then
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End IfEnd Sub
Select Case List1.List(List1.ListIndex)
Case "A"
Text1.Text = s(0)
Text2.Text = s(1)
Text3.Text = s(2)
Case "B"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Case Else
End Select
End SubPrivate Sub Text1_Change()
If List1.List(List1.ListIndex) = "A" Then
s(0) = Text1.Text
End If
End SubPrivate Sub Text2_Change()
If List1.List(List1.ListIndex) = "A" Then
s(1) = Text2.Text
End If
End SubPrivate Sub Text3_Change()
If List1.List(List1.ListIndex) = "A" Then
s(2) = Text3.Text
End If
End Sub
List1.AddItem "A"
List1.AddItem "B"
List1.AddItem "C"
ReDim a(2, List1.ListCount - 1)
End SubPrivate Sub List1_Click()
Dim i As Integer
If Frame1.Tag <> "" Then
i = Frame1.Tag
a(0, i) = Text1.Text
a(1, i) = Text2.Text
a(2, i) = Text3.Text
End If
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
i = List1.ListIndex
Text1.Text = a(0, i)
Text2.Text = a(1, i)
Text3.Text = a(2, i)
Frame1.Tag = List1.ListIndex
End Sub
我就是这个意思,text可以改成控件数组
你想拿listbox做导向,我觉得tabscript好看。
Dim s(2) As StringPrivate Sub List1_Click()
Select Case List1.List(List1.ListIndex)
Case "A"
Text1(0).Text = s(0)
Text1(1).Text = s(1)
Text1(2).Text = s(2)
Case "B"
Text1(0).Text = ""
Text1(1).Text = ""
Text1(2).Text = ""
Case Else
End Select
End SubPrivate Sub Text1_Change(Index As Integer)
If List1.List(List1.ListIndex) = "A" Then
s(Index) = Text1(Index).Text
End If
End Sub
Dim a() As StringPrivate Sub Form_Load()
'灵活方式,加多少没有关系
List1.AddItem "A"
List1.AddItem "B"
List1.AddItem "C"
List1.AddItem "D"
List1.AddItem "E"
List1.AddItem "F"
ReDim a(Text1.UBound, List1.ListCount - 1)End Sub
'
Private Sub List1_Click()
Dim i As Integer
Dim j As Integer
'把上次选中的存储
If Frame1.Tag <> "" Then
i = Frame1.Tag For j = 0 To Text1.UBound
a(j, i) = Text1(j).Text
Next j
End If '清空
For j = 0 To Text1.UBound
Text1(j).Text = ""
Next j
i = List1.ListIndex '把历史存储的取出
For j = 0 To Text1.UBound
Text1(j).Text = a(j, i)
Next j
Frame1.Tag = List1.ListIndexEnd Sub
用 Text1_Change 事件很多余
在单击list条目时记录就行了文本状态就行了
list条目较多时也比较麻烦,二维数组实现起来可能有一点乱
如果改用xml就轻松多了 这样程序在下次启动时还有记忆
是这样的,我是通过一个text输入到list1,所以list1的数量会变化
然后text1(0),text1(1),text1(2)
要在另一个窗口显示list1中所有条目的text1(0),text1(1),text1(2)
相加结果,如果符值为空的话,不是不好相加?
换你的方法可以实现这样吗?
我是通过一个text输入到list1,所以list1的数量会变化
然后text1(0),text1(1),text1(2)
要在另一个窗口显示list1中所有条目的text1(0),text1(1),text1(2)的相加结果
dim i%,j%,s&
form2.autoredraw=true
for i=0 to list1.listcount-1
s=0
for j=0 to text1.count-1
s=s + val(text1(j))
next
form2.print list1.list(i) & "=" & s
next
都什么不固定?1。list的项不固定?(这个我的程序就可以解决,对list项多少没有限制)2。list不同项对应的text1数组的个数也不固定?
http://topic.csdn.net/u/20110304/10/7e6fde94-865d-4eb8-af0d-5adc47b2c961.html
个数不同?数据不同?
你的text1控件数组的个数还变化?就像挤牙膏
list1的数量是从text2中输入进去的(数量多少由用户决定),command1的功能是从text2确认输入到list1。text1(0),text1(1),text1(2)是用户自己输入。
单击list1中第二条再输入text1(0),text1(1),text1(2)一些数据。
回到ist1中的第一条,之前输的第一条的数据还在。
以此类似。text2(0),text2(1),text2(2)是把list1中所有的加起来
list1的第一条。。第二条。。第N条
text2(0)=list1的第一条的text1(0)+第二条的text1(0)...+第N条的text1(0)
list1的第一条。。第二条。。第N条
text3(0)=list1的第一条的text1(0)+第二条的text1(0)...+第N条的text1(0)
Dim tmp() As String
dim idx as integer=-1Private Sub List1_Click()
Dim i As Integer
Dim j As Integer
dim result as decimal
'把上次选中的存储
If list1.listindex <> idx and idx > -1 Then
redim preserve tmp(list1.listcount,2)'listcount是取得list1的项目总数,具体属性名可能不对
For i = Text1.LBound To Text1.UBound
a(idx, i) = Text1(i).Text
Next j
End If idx = List1.ListIndex '把历史存储的取出
For j = Text1.LBound To Text1.UBound
Text1(j).Text = a(idx, j)
Next j
For j = Text3.LBound To Text3.UBound
result =0
For j = tmp.LBound To tmp.UBound
result += cdec(tmp(j, i))
Next j
Text3(i).Text=result
Next j
End Sub