# Timer Code?



## Traumerin (26. August 2013)

Hey,
Ich suche nach dem Code für einen Timer, der den Willkommensbildschirm(frmSplash) genau 5sek anzeigen soll und danach auf ein anderes Formular wechseln soll(frmKategorienchoose).
Nun habe ich bisher versucht es mit der Interwallzahl 5000 im Eigenschaftenfenster zu lösen, aber als ich einen Probelauf versuchte zeigte der mir nicht den Willkommensbildschirm sondern sofort das nächste Formular. Ich habe den Timer auf enabled = true also sollte es daran nicht liegen. Insgesammt hat der mir nur noch nie im Laufmodus den Willkommensbildschirm gezeigt. Außerdem habe ich dem Willkommensbildschirm gesagt:

Private Sub frmSplash.lblFrame_Click()
Unload Me
End Sub

Da ich allerdings nie dazu kam irgendwie auf das Label zu klicken weil es wie gesagt nicht sichtbar wird, sollte es wohl nicht daran liegen.

Bitte um Hilfe!

Träumerin


----------



## tombe (26. August 2013)

Du redest jetzt vom Timer-Steuerelement?

Habe kein Visual Basic hier aber so in etwa müsste aus wohl aussehen:


```
Sub Form_Load()
'die Sub der Form frmSplash
    Timer1.Interval = 5000
End Sub

Sub Timer1_Timer()
    frmKategorienchoose.Show
    Unload Me
End Sub
```


----------



## HonniCilest (27. August 2013)

Und wenn du es mit Wait versuchst?

```
Application.Wait (Now + TimeValue("0:00:5"))
Unload Me
frmKategorienchoose.Show
```


----------



## Traumerin (27. August 2013)

Danke für die Mühe. Ich habe das mit dem Intervall versucht aber der hat mir damit nicht das gewünschte frmSplash gezeigt.
Ich bezweifle dass er den Prozess Wait kennt...
Habe es nun so gemacht:

Private Sub Timer1_Time()
Dim X As 60
For X = 1 To 60 Step 1
frmKategorienchoose.show
Unload Me
Next X

Nun zeigt er es mir nach einigem Tüfteln an, wenn auch ziemlich kurz, ich konnte gerade mal bis 0,5 zählen da war es wieder weg, aber es wird nicht mehr.
Musste ihm heute erstmal nochmal zwei seiner Formulare wiedergeben, der hatte die doch glatt verbummelt...

Träumerin


----------



## tombe (27. August 2013)

Wie ist den jetzt der genaue Ablauf.

Du startest das Programm und frmSplash wird angezeigt. Nach 5 Sekunden soll es ausgeblendet werden und dafür frm Kategorienchoose angezeigt werden?

Das Timer-Steuerelement befindet sich in der Form frmSplash, hat bei der Eigenschaft Intervall den Wert 5000 und die Eigenschaft Enabled steht auf True!

Wenn du dann in das Timer-Ereignis


```
frmKategorienchoose.Show
Unload Me
```

eingibst, muss/müsste es doch klappen!?

Womit arbeitest/programmierst du?


----------



## Traumerin (27. August 2013)

Das habe ich unter den Anweisungen im For...Next Befehl, wie gesagt.
Und ja, in den Eigenschaften des frmSplash.Timer1 ist der Intervall 5000 wodurch es eigentlich 5 Sekunden andauern sollte. In der For...Next anweisung habe ich schon 60 sek angegeben aber ich habe den eben genannten Zeitraum nur als Anzeige. Ich glaube entweder kann ich nicht zählen oder der weiß nicht wie lang eine Sekunde ist... Mit For...Next sollte man doch eigentlich jeden Counter leiten können, jedenfalls Personalnummern kann man so durchsuchen, einen Countdown angeblich und auch aufwärtszählen...

Träumerin


----------



## tombe (27. August 2013)

Die For-Next-Schleife läuft zwar immer um eins nach oben (außer es ist anders angegeben) aber sie läuft nicht im Sekundentakt!

Der Intervall sagt nicht aus wie lange etwas andauert, sondern nach welcher Zeitspanne das Timer-Ereignis aufgerufen wird. Das was dort steht wird nach Ablauf des angegebenen Intervalls ausgeführt!

Kannst du mal ein Bild vom Eigenschaftenfenster, der Form frmSplash und dem Timer-Ereignis hier einstellen.


----------



## Traumerin (27. August 2013)

Ich habe gerade nochmal versucht das Programm auszuführen aber nun mag er mich nicht mehr. Alles läuft blitzschnell durch und hält erst am MDI fenster an. Dann kommt die Fehler Meldung dass er nicht rtfText.Move kennt, obwohl das so auch vom Assistenten geschrieben wurde(Codiert, VB-Assistent)


----------



## tombe (27. August 2013)

Sorry, aber dir so zu helfen ist nicht möglich.

Du verrätst nicht womit du programmierst, du zeigst den aktuellen Code usw. nicht. Du änderst immer wieder was und kommst dann mit so vagen "Fehlermeldungen".

Wenn alles blitzschnell durchläuft, dann führe das Programm mit der F8-Taste aus. Dann siehst du Schritt für Schritt welcher Code ausgeführt wird.


----------



## Traumerin (27. August 2013)

Hab bmps versucht anzuhängen aber funktioniert nicht. ich kann dir den Code auch so schreiben...

```
Frm Splash


Option Explicit

Private Sub Form_KeyPress(KeyAscii As Integer)
    
    Timer1.Enabled = False
    Unload Me

End Sub

Public Sub frmSplash_Load()
    
    lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." & App.Revision
    lblProductName.Caption = App.Title
    
    frmKategorienchoose.Hide
    frmHäkelnchoose.Hide
    frmStrickenchoose.Hide
    frmStickenchoose.Hide
    MDI.Hide
        
End Sub

Private Sub Frame1_Click()

    Timer1.Enabled = False
    Unload Me

End Sub



Private Sub Timer1_Timer()
    Dim x
    x = 60
    For x = 0 To 60
        frmKategorienchoose.Show
        Unload Me
    Next x
End Sub


(In Eigenschaften:Name : Timer1
		     Enabled : True
		     Interval : 5000
		     Left : 2760
		     Top : 1440) 
frmKategorienchoose
Private Sub cmdHäkeln_Click()
    Me.Hide
    frmHäkelnchoose.Show
End Sub

Private Sub cmdSticken_Click()
    Me.Hide
    frmStickenchoose.Show
End Sub

Private Sub cmdStricken_Click()
    Me.Hide
    frmStrickenchoose.Show
End Sub

Private Sub Form_Load()
    Show Stil = 1
End Sub

 
MDI

Private Sub MDIForm_Load()
    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)
    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
    MDI.Show
    LoadNewDoc
End Sub


Private Sub LoadNewDoc()
    Static lDocumentCount As Long
    lDocumentCount = lDocumentCount + 1
    Set frmFiletHäkeln = New frmFiletHäkeln
    frmFiletHäkeln.Caption = "Häkeln Document " & lDocumentCount
    frmFiletHäkeln.Show
End Sub
 
MDI Child
Private Sub rtfText_SelChange()
    fMainForm.tbToolBar.Buttons("Fett").Value = IIf(rtfText.SelBold, tbrPressed, tbrUnpressed)
    fMainForm.tbToolBar.Buttons("Kursiv").Value = IIf(rtfText.SelItalic, tbrPressed, tbrUnpressed)
    fMainForm.tbToolBar.Buttons("Unterstrichen").Value = IIf(rtfText.SelUnderline, tbrPressed, tbrUnpressed)
    fMainForm.tbToolBar.Buttons("Links ausrichten").Value = IIf(rtfText.SelAlignment = rtfLeft, tbrPressed, tbrUnpressed)
    fMainForm.tbToolBar.Buttons("Zentrieren").Value = IIf(rtfText.SelAlignment = rtfCenter, tbrPressed, tbrUnpressed)
    fMainForm.tbToolBar.Buttons("Rechts ausrichten").Value = IIf(rtfText.SelAlignment = rtfRight, tbrPressed, tbrUnpressed)
End Sub

Private Sub Form_Load()
    Form_Resize
End Sub


Private Sub Form_Resize()
    On Error Resume Next
    rtfText.Move 100, 100, Me.ScaleWidth - 200, Me.ScaleHeight - 200
    rtfText.RightMargin = rtfText.Width - 400
End Sub
```


----------



## tombe (27. August 2013)

Ich denke mal das du dir mit den verschiedenen Anweisungen selber "ein Bein stellst".

Hier ist eine Seite wo ein nettes Beispiel für das Timer-Steuerelement zu finden ist, wenn auch auf englisch.

Wie schon geschrieben würde ich an deiner Stelle man die Anwendung durch drücken der F8-Taste in Einzelschrittmodus ausführen, dann kannst du genau sehen welcher Befehl wann ausgeführt wird.

Du kannst auch mal die Timer1.Enabled = False Zeile auskommentieren so das sicher gestellt ist, das der Timer wirklich aktiv ist.

Die For-Next-Schleife blendet übrigens die Form zumindest theoretisch 60 mal hinereinander aus!


----------



## Traumerin (27. August 2013)

wie sollte ich es deiner Meinung nach schreiben? Unload nach dem Next x?


----------



## tombe (27. August 2013)

Mit dem was ich noch über Visual Basic und das Timer-Steuerelement weiß würde ich es so machen wie schon oben geschrieben.

In den Eigenschaften der Intervall einstellen und Enabled auf True setzen, im Timer-Ereignis die Anweisung die Form frmSplash aus- und die Form frmKategorien... einzublenden. Mehr nicht.

So geht es normalerweise! Irgendwas läuft bei dir anders das es nicht klappt.

Nochmal *NIMM DIE F8-TASTE* und schau was dein Programm macht.


----------



## Traumerin (27. August 2013)

Nochmal : Ich komm mit der F8-Taste nicht klar!
Aber ich werde das mit dem Unload auf Hide ändern, obwohl ich dann glaube dass er die Fenster stehen lässt.


----------



## tombe (27. August 2013)

Was für ein Problem hast du mit F8?

Wenn du Unload auf Hide änderst, dann ändert das ja nichts am Problem selber! Hast du dir mal das Beispiel zum Timer angeschaut und versucht zu verstehen?

Hast du dir vielleicht mal die Mühe gemacht und ein neuen Projekt erstellt wo du die Funktionen mal ohne den ganzen anderen Code testen kannst.


----------



## Traumerin (28. August 2013)

Ich sehe bei der F8 Taste nur den gelb hinterlegten Text, der allerdings nicht auf den Code des Timers geht. Das bringt mir nichts.

Ja ich habe mir das Beispiel angesehen, aber ich finde in der hilfe von Visual Basic in dem Programm wurde das besser erklärt(auf Deutsch)

ohne den ganzen Anderen Code, das lässt sich leicht sagen, aber ohne den anderen Code läuft das nicht einmal.

Träumerin


----------



## tombe (28. August 2013)

Das der "Text" gelb hinterlegt ist, ist genau das was so auch passieren soll. Wenn dir das nichts bringt, dann tut es mir leid.

Scheinbar kennst du noch nichtmal die Grundfunktionen deiner Entwicklungsumgebung willst aber damit programmieren.

Keine Ahnung wie lange du dich schon damit beschäfftigst, aber vielleicht solltest du mal ein Anfängerbuch lesen wo solche Dinge erklärt werden oder du suchst mal nach Debug.


----------

