读书人

关于一段循环代码的批改

发布时间: 2013-05-02 09:39:29 作者: rapoo

关于一段循环代码的修改
本帖最后由 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


读书人网 >VB

热点推荐