Avatar billede Mathias- Nybegynder
22. april 2012 - 23:26 Der er 7 kommentarer og
1 løsning

Simpelt billede skift

Hej,

Jeg skal bruge et slide show mellem 5 billeder som er konstante.
Jeg har en timer. Når jeg klikkel på imgBold, vil jeg have slideshowet til at køre mellem de 5 billeder, men det virker ikke. Hvad gør jeg galt? (jeg bruger vb 6.0 pro)

Private Sub imgBold_Click()
Timer1.Enabled = True
End Sub


Private Sub Timer1_Timer()
ImageNum = ImageNum + 1
If ImageNum > 5 Then ImageNum = ImageNum = 1

    Select Case ImageNum
            Case Is = 1:
        imgBold = img1
            Case Is = 2
        imgBold = img2
            Case Is = 3
        imgBold = img3
            Case Is = 4
        imgBold = img4
            Case Is = 5
        imgBold = img5
End Select

End Sub
Avatar billede mireigi Novice
23. april 2012 - 00:44 #1
Du har et kolon efter Case Is = 1, det kan være det.

Hvis det ikke virker, så prøv at kopiere din logik ind i din imgBold_Click() i stedet for, og så se om billedet skifter ved hvert click. Hvis det gør, er det din timer der fejler noget.
Avatar billede Mathias- Nybegynder
23. april 2012 - 01:00 #2
det virker ikke :(

kan fejlen ligge i : ImageNum = ImageNum + 1??
hvordan kunne man ellers gøre det?
Avatar billede mireigi Novice
23. april 2012 - 01:18 #3
Det ser fint ud, men, hvis du ikke har angivet ImageNum uden for din metode, vil det selvsagt ikke virke.
Avatar billede Mathias- Nybegynder
23. april 2012 - 09:25 #4
Jeg har løst det selv. Tak for din tid.

Private Sub Timer1_Timer()
    Static i As Integer
        Select Case i
            Case Is = 1
                imgCoin = img1
            Case Is = 2
                imgCoin = img2
            Case Is = 3
                imgCoin = img3
            Case Is = 4
                imgCoin = img4
            Case Is = 5
                imgCoin = img5
        End Select
    i = (i + 1) Mod 6
End Sub
Avatar billede mireigi Novice
23. april 2012 - 11:18 #5
Den kode giver så slet ingen mening.

Mod = tal efter kommaet, efter division, som heltal (10 Mod 3 = 3,33 = 33).

i = (0 + 1) Mod 6 = 16
i = (16 + 1) Mod 6 = 83
i = (83 + 1) Mod 6 = 14
...
...
osv

Hvordan det overhovedet kan virke forstår jeg ikke.

Den rigtige kode ville være:
Static intImageIndex AS Integer = 1

Private Sub Timer1_Timer()
  Select Case intImageIndex
      Case Is = 1
        imgCoin = img1
      Case Is = 2
        imgCoin = img2
      Case Is = 3
        imgCoin = img3
      Case Is = 4
        imgCoin = img4
      Case Is = 5
        imgCoin = img5
  End Select
 
  intImageIndex = intImageIndex + 1
  If intImageIndex  > 5 Then
      intImageIndex = 1
  End If
End Sub
Avatar billede Mathias- Nybegynder
23. april 2012 - 16:37 #6
min kode virker altså beklageligt hver gang :)
Avatar billede Mathias- Nybegynder
23. april 2012 - 16:38 #7
ubeklageligt*
Avatar billede mireigi Novice
23. april 2012 - 16:43 #8
Ok, må være noget VB noget. Den burde bare ikke virke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester