kostenloser Webspace werbefrei: lima-city


Timer funktioniert nicht richtig...

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    kill-a-teddy

    Kostenloser Webspace von kill-a-teddy

    kill-a-teddy hat kostenlosen Webspace.

    Hallo Leute, ich hab mir eine Ampel gemacht, mit einem Timer der nach Button Klick startet und verschiedene Shapes nacheinander anzeigt. An sich funktioniert es auch, aber nur wenn ich den Button mehrmals klicke!

    Das ist mein Button:
    Private Sub btn_on_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_on.Click
            Timer1.Start()
    End Sub


    Und das mein Timer:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_on.Click
            zaehler += 1
            If zaehler = 2 Then
                shape_red.Visible = True
            End If
            If zaehler = 3 Then
                shape_yellow.Visible = True
            End If
            If zaehler = 4 Then
                shape_green.Visible = True
            End If
        End Sub


    Welcher ja ausgelöst wird, durch btn_on.Click... Aber statt weiter zu zählen und den nächsten Shape anzuzeigen passiert gar nichts.. Wenn ich aber öfters auf den Button klicke, dann werden die Shapes angezeigt.


    //EDIT: Kann geschlossen werden, die Lösung:

    Button On Click:
    Private Sub btn_on_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_on.Click
            Timer1.Enabled = True
            btn_on.Visible = False
            btn_off.Visible = True
        End Sub


    FormLoad
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Timer1.Enabled = False
            Timer2.Enabled = False
            Timer3.Enabled = False
            Timer4.Enabled = False
            Timer5.Enabled = False
            Timer6.Enabled = False
        End Sub


    Die verschiedenen Timer:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_on.Click
            zaehler += 1
            If zaehler = 2 Then
                shape_red.Visible = True
                Timer2.Enabled = True
                Timer1.Enabled = False
            End If
        End Sub
    
     Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
            zaehler += 1
            If zaehler = 3 Then
                shape_yellow.Visible = True
                shape_red.Visible = False
                Timer3.Enabled = True
                Timer2.Enabled = False
            End If
        End Sub
    
        Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
            zaehler += 1
            If zaehler = 4 Then
                shape_green.Visible = True
                shape_yellow.Visible = False
                Timer4.Enabled = True
                Timer3.Enabled = False
            End If
        End Sub
    
        Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
            zaehler += 1
            If zaehler = 5 Then
                shape_yellow.Visible = True
                shape_green.Visible = False
                Timer5.Enabled = True
                Timer4.Enabled = False
            End If
        End Sub
    
        Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick
            zaehler += 1
            If zaehler = 6 Then
                shape_red.Visible = True
                shape_yellow.Visible = False
                Timer6.Enabled = True
                Timer5.Enabled = False
            End If
        End Sub
    
        Private Sub Timer6_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer6.Tick
            zaehler += 1
            If zaehler = 7 Then
                shape_yellow.Visible = True
                shape_red.Visible = False
                zaehler = 1
                Timer2.Enabled = True
                Timer6.Enabled = False
            End If
        End Sub


    Button Off Click:
    Private Sub btn_off_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_off.Click
            Timer1.Enabled = False
            Timer2.Enabled = False
            Timer3.Enabled = False
            Timer4.Enabled = False
            Timer5.Enabled = False
            Timer6.Enabled = False
            shape_red.Visible = False
            shape_yellow.Visible = False
            shape_green.Visible = False
            btn_off.Visible = False
            btn_on.Visible = True
        End Sub


    Da meine Form keinen Rahmen hat, noch mit der Maus verschiebbar machen:
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Left Then
                MouseLocation = e.Location
            End If
        End Sub
    
        Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
            If e.Button = Windows.Forms.MouseButtons.Left Then
                Me.Location = e.Location - MouseLocation + Me.Location
            End If
        End Sub


    Und einen "eigenen" schließen Button hinzufügen:
    Private Sub btn_close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_close.Click
            Me.Close()
        End Sub


    Erklärung dazu:
    Der Timer wird geandelt (initiiert) von dem Button_on.Click Event, dieser wieder startet Timer2, welcher Timer3 usw. bis 5 Startet. Timer6 Allerdings setzt den zähler für den Timer wieder zurück und startet ihn erneut (es ist also praktisch eine Endlos schleife, es wird niemals aufhören, solange man nicht den aus button drückt). Mit dem Aus Button werden alle derzeitigen Shapes ausgeblendet und alle Timer gestoppt. Mit Dim zaehler As Integer wird der Startwert von dem Zähler festgelegt, Der Intervall der Timer (den man in der Benutzeroberfläche einstellen kann, wenn man auf den Timer klickt) ist für die ersten 3 auf 2000 (2 Sekunden) gesetzt, das heißt es wird rot, gelb, grün in einem Abstand von 2 Sekunden. Timer4 hat einen Intervall von 30000 (30 sekunden), damit es auch länger wieder grün bleibt. Dann von grün auf gelb auf rot wieder 2000 und rot hat wieder 30000.



    Beitrag zuletzt geändert: 9.11.2011 12:06:55 von kill-a-teddy
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!