首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于一段循环代码的批改

2013-05-02 
关于一段循环代码的修改本帖最后由 bcrun 于 2013-04-22 14:55:52 编辑Private Sub Timer2_Timer()Static

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


热点排行