关于一段循环代码的修改
本帖最后由 bcrun 于 2013-04-22 14:55:52 编辑
Private Sub Timer2_Timer()
Static i As Long
Dim j As Long
Dim C As Integer
For j = Picture6.lbound To Picture6.UBound
Picture6(j).Visible = False
Next j
Picture6(i).Visible = True
i = i + 1
'If Picture6(i).Picture.Handle = 0 Then Exit Sub
If i = j Then i = 0
End Sub
代码如何上:
我有一个图片数组,共20个,我现在做的是20个图片循环显示,做成一个动态图。
现在的问题是:如果这个动态图没有20个图片,余下的图片框就为空,我在循环的时候检测到没有图片的图像框时就重新开始循环,也就是说没有图片的图片框不做显示,请问如何修改,谢谢!
[解决办法]
让图片框缺省不可见:
Private Sub Timer2_Timer()
Static i As Long, j As Long
Picture1(j).Visible = False
If Picture1(i).Picture.Handle Then
Picture1(i).Visible = True
j = i
End If
Do
i = (i + 1) Mod Picture1.Count
Loop Until Picture1(i).Picture.Handle
End Sub
[解决办法]
本帖最后由 bcrun 于 2013-04-28 12:45:22 编辑 拿下
Dim d As Object
Dim j As Long
Private Sub Form_Load()
Dim c As Long
Set d = CreateObject("scripting.dictionary")
For c = Picture6.LBound To Picture6.UBound
Picture6(c).Visible = False
If Picture6(c).Picture.Handle <> 0 Then
j = j + 1
d(j) = c
End If
Next c
End Sub
Private Sub Timer2_Timer()
Static i As Long
Dim k As Long
i = i + 1
If i > j Then i = 1
For k = 1 To j
Picture6(d(k)).Visible = (i = k)
Next
End Sub
[解决办法]
本来看了楼主的贴子,我想说的也跟1F是一样的。
但看了楼主在2F的回复,似乎察觉到了点什么苗头。
楼主试下这个代码,应该符合你的想法了:
Private Sub Timer2_Timer()
Static i As Long
Dim j As Long
Dim C As Integer
For j = Picture6.lbound To Picture6.UBound
Picture6(j).Visible = False
Next j
Picture6(i).Visible = True
i = i + 1
'If Picture6(i).Picture.Handle = 0 Then Exit Sub
'If i = j Then i = 0 '这句不要
'添加下面的代码:
For j = i To Picture1.UBound
If (Picture6(j).Picture.Handle) Then i = j: Exit Sub
Next
If (j > Picture1.UBound) Then i = 0
End Sub