PDA

View Full Version : Trenger hjelp igjen godtfolk


Tathar
13. februar 2007, 07:46
hei og hopp... Jeg driver fortsatt på det samme prosjektet hvis noen fikk med seg den forrige tråden.
Visual Basic er tingen her.

Problemet nå er sånn at jeg har en timer og etter 5 sekunder (bare brukte det før å prøve)
så bytter den ut cmdbuttons...
Men jeg har prøvd å få opp en label som den skal telle ned på, men den viser ikke noe før telleren har telt seg ferdig, da viser den "0".
Skulle gjerne hatt den til å vise 5, 4, 3 osv...

her kommer den koden jeg har så hvis noen gidder å se over og rette/legge til ting og tang.


Private Sub cmdGiopp_Click()
End
End Sub

Private Sub lblTimer_Click()
If tmrTid.Interval = 0 Then lblTimer.Caption = "5"
ElseIf tmrTid.Interval = 1000 Then lblTimer.Caption = "4"
ElseIf tmrTid.Interval = 2000 Then lblTimer.Caption = "3"
ElseIf tmrTid.Interval = 3000 Then lblTimer.Caption = "2"
ElseIf tmrTid.Interval = 4000 Then lblTimer.Caption = "1"
ElseIf tmrTid.Interval = 5000 Then lblTimer.Caption = "0"
End If
End Sub

Private Sub Timer1_Timer()
cmdOption1.Visible = False
cmdOption2.Visible = False
cmdOption3.Visible = False
cmdOption4.Visible = False
cmdOption21.Visible = True
cmdOption22.Visible = True
cmdOption23.Visible = True
cmdOption24.Visible = True
End Sub

Private Sub tmrTid_Timer()
If tmrTid.Interval = 0 Then lblTimer.Caption = "5"
If tmrTid.Interval = 1000 Then lblTimer.Caption = "4"
If tmrTid.Interval = 2000 Then lblTimer.Caption = "3"
If tmrTid.Interval = 3000 Then lblTimer.Caption = "2"
If tmrTid.Interval = 4000 Then lblTimer.Caption = "1"
If tmrTid.Interval = 5000 Then lblTimer.Caption = "0"
End Sub

Pantheon
13. februar 2007, 07:59
Tror ikke det er her feilen ligger. Tror det ligger der hvor du kaller lblTimer_Click() eller noe. Regner med at dette ikke er all koden?

Tathar
13. februar 2007, 08:03
dette er koden som er aktuell å rette på... den andre delen av koden er irrelevant for dette emnet...

hmm, men ser at det står _click på labelen... noen andre forslag til hva jeg kan bruke?

flexd
13. februar 2007, 08:18
Vel, Intervallen til timeren forandrer seg ikke, bare hvis du setter den til noe annet, der har du feilen..
Og Det skal ikke skje i timer_click, det er vel en eller annen event f.eks timer_tick (du får se) :)

Tathar
13. februar 2007, 08:29
Vel, Intervallen til timeren forandrer seg ikke, bare hvis du setter den til noe annet, der har du feilen..
Og Det skal ikke skje i timer_click, det er vel en eller annen event f.eks timer_tick (du får se) :)


hmm.... fikk ikke helt til.... kan du legge ut et forslag?

Razor Sharp
13. februar 2007, 23:24
Det er jo bare å sette intervallet til 1000 og bytte ut koden.

obs! forutsetter en variable som er global i klassen med navnet iTeller satt til verdien 0

Private Sub Timer1_Timer()
iTeller = iTeller + 1
lblTimer.Caption = 5 - iTeller
If iTeller = 5 Then
cmdOption1.Visible = False
cmdOption2.Visible = False
cmdOption3.Visible = False
cmdOption4.Visible = False
cmdOption21.Visible = True
cmdOption22.Visible = True
cmdOption23.Visible = True
cmdOption24.Visible = True
End If
End Sub

Eller hvis du vil beholde 2 timere så kan du lage det som slik.
Timer1 intervallet må være 5000.
tmrTid intervallet må være 1000.

Private Sub Timer1_Timer()
cmdOption1.Visible = False
cmdOption2.Visible = False
cmdOption3.Visible = False
cmdOption4.Visible = False
cmdOption21.Visible = True
cmdOption22.Visible = True
cmdOption23.Visible = True
cmdOption24.Visible = True
End Sub

Private Sub tmrTid_Timer()
iTeller = iTeller + 1
lblTimer.Caption = 5 - iTeller
End Sub

Hvis du setter lblTimer.Caption til 5 før du starter tmrTid, så kan du bruke lblTimer.Caption til å telle på eks.Private Sub tmrTid_Timer()
lblTimer.Caption = CInt(lblTimer.Caption) - 1
End Sub

Tathar
16. februar 2007, 07:34
det fungerte veldig bra så takk for hjelpen:)

Men nå kom enda et problem :

noen som vet hvordan man legger inn en lyd i VB?
har en .wav fil som skal knyttes opp mot en spesiell event....

Razor Sharp
16. februar 2007, 09:49
Const SND_ASYNC = &H1

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

/*
' Play a WAV file.
'
' FileName is a string containing the full path of the file.
' If SyncExec is True, the sound is played synchronously
' Returns True if no errors occurred
*/

Function PlayWAV(FileName As String, Optional SyncExec As Boolean) As Boolean
If SyncExec Then
' play the file synchronously
PlayWAV = PlaySound(FileName, 0, 0)
Else
' play the file asynchronously
PlayWAV = PlaySound(FileName, 0, SND_ASYNC)
End If
End Function
Fant det som første treff på google (http://www.google.com/search?q=VB6+wave), så du kan lese på orginalen (http://www.devx.com/vb2themax/Tip/19039) også.

Vil annbefale at du putter koden i en modul fil (.bas)