[VisualBasic] aktuelle Uhrzeit?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von poison0815, 18. Oktober 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 18. Oktober 2007
    aktuelle Uhrzeit?

    Hi,

    ich wollte fragen, ob jemand vielleicht eine Ahnung hat, wie man am besten die Uhrzeit mit VB ausgibt. Also sie soll die aktuelle Zeit angeben ( also fortlaufend ) !

    Ich hab es mit einem Timer ( Intervall 1000 ) und

    Code:
    Private Sub Form_Load()
     UhrzeitLabel.Text = Now
    End Sub
    
    probiert, aber da zeigt er gar nichts an.

    Hat jemand eine Lösung?

    Bewertung ist sicher!

    Peace

    PS.: Falls das notwendig ist, ich benutze "Visual Basic 2005 Express Edition"!
     
  2. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    Code:
    Private Sub Form_Load()
     UhrzeitLabel.Caption = Now
    End Sub
    
    Private Sub Timer1_Timer()
    UhrzeitLabel.Caption = Now
    End Sub
    Habs nicht ausprobiert weil ich nur VB6 habe, aber es sollte funktionieren!

    mFg Chrisomator
     
  3. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    Code:
    Private Sub Form_Load()
     UhrzeitLabel.Text = Now
    Timer1.Enabled = true
    End Sub
    
    Private Sub Timer1_Timer()
    UhrzeitLabel.Text = Now
    End Sub
    sollte gehen. BEi vb6 heißts noch Text
     
  4. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    Nein, bei VB6 heißts Caption

    mFg Chrisomator
     
  5. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    eigentlich müsste er nen laufzeitfehler bringen wenn du label.text angibst


    Code:
    Private Sub Timer1_Timer()
    UhrzeitLabel.caption = Time
    End Sub
    sollte klappen, .caption bei label, .text bei textboxen

    "Time" ist warscheinlich auch besser, da du mit "Now" das gesamte Datum mitgeliefert bekommst



    edit: wobei ich nicht weiss wie das mit '05 Express ist, baut das auf .NET auf oder auf 6.0?
     
  6. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    Hallo,

    Zum Einen starte man einen Timer und definiere eine Funktion, die aufgerufen werden soll, wenn der Timer schreit
    Code:
    Dim t As New System.Timers.Timer
    With t
     .Interval = 1000 'Millisekunden
     AddHanlder .Elapsed, AddressOf TimerElapsed
     .Start()
    End With
    Zum anderen baue man sich die Funktion, die aufgerufen wird wenn der Timer schreit
    Code:
    Private Sub TimerElapsed(Byval sender As Object, Byval e As System.Timers.TimerEventArgs)
     Me.Label1.Text = Date.Now.ToString("hh:mm:ss")
    End Sub
    Hoffe das hilft (und ich hab mich nicht verschrieben).

    BG MaxDev

    //Edit: Date.Time gibts soweit ich weiss in .Net nicht mehr.
     
  7. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    Ich glaube MaxDev´s Vorschlag ist auf dem richtigen Weg, aber wenn ich dann einen Testlauf starte kommt folgende meldung:

    "Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement UhrzeitLabel erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

    Kannst du bzw. jemand anderes mir vielleicht erläutern was da falsch ist ?

    Bewertungen sind schonmal raus!

    Peace
     
  8. 18. Oktober 2007
    AW: aktuelle Uhrzeit?

    Ok alles klar, hab es hinbekommen ( danke nochmal an alle - Bewertungen sind raus ).

    Falls es jemanden interessiert :
    Code:
     Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
     Label.Text = TimeOfDay
     End Sub
     Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer.Tick
     Label.Text = TimeOfDay
     End Sub
    
    Peace
     
  9. 19. Oktober 2007
    AW: aktuelle Uhrzeit?

    Sorry, hab's mit .Net 1.1 gemacht.


    Für das Problem musst Du Deine Funktion über Delegate-Subs aufrufen. Wenn die Exception fliegt, bekommst Du einen Hilfelink angezeigt (konnte den so im Web grad nicht finden). Naja, da ist es bei MS recht gut beschrieben.

    BG MaxDev
     
  10. 8. November 2007
    AW: aktuelle Uhrzeit?

    mögliche Lösung für vb.net

    Code:
    dim time as date
    dim exitVar as boolean
    
    
    exitVar=false
    
    do
    time = time.now
    label1.text = "Uhrzeit: " & time.hour & ":" & time.minute & " Uhr"
    System.threading.thread.sleep(1000)
    loop while exitVar = false
    

    'müsste gehen, habs aber nicht getestet
     
  11. 10. November 2007
    AW: aktuelle Uhrzeit?

    vollkommen falsch ^^ außer du möchtest ein programm haben dass sich dauerhaft aufhäng weil es in einer schleife hängt!

    Du kannst sowas sehr gut mit einem UserControl machen!
    Erstell ein neues UserControl.vb > Erstelle dort dein Control (TextBox oder Label) >
    Codebrereich öffen und UserControl-Event OnPaint aufrufen > dort kannst du dann reinschreiben:
    TextBox1.Text= Now.ToString("HH:mm:ss dd.MM.yyyy")
     
  12. 10. November 2007
    AW: aktuelle Uhrzeit?

    Ich glaub OnPaint wird nur getriggert sobald der Bereich noch gezeichnet wird. Also wenn z.B. das Control durch ein anderes Fenster verdeckt wurde.
    In dem Fall müsstest du dann mit nem Timer den Befehl zum neumalen geben, also deinControl.Invalidate()
     
  13. 11. November 2007
    AW: aktuelle Uhrzeit?

    Hallo zusammen,

    ich denke, dass die Lösung von Dark|pUM4 nicht gerade falsch ist.

    Es ist richtig, dass sich das Programm aufhängen würde, da der aktuelle Thread immer wieder unterbrochen würde. Lässt man den Code allerdings in einem eigenen Thread laufen (was ja keine Kunst ist), so wäre die Lösung ein durchaus gangbarer Weg, da eine neuer Thread ja keinem weh tut.

    Das OnPaint Event abzufangen halte ich da schon für eher nicht richtig, da zum einen das Event für einen anderen Zweck geschmissen wird (um den Entwickler zu unterrichten, dass das Form oder Control neu gezeichnet wird). Zum Anderen würde die Zeit auch nur aktualisiert werden, wenn der Benutzer die OnPaint Methode des Frameworks auslöst. Lässt man das Programm also nur offen auf dem Bildschirm liegen, läuft die Zeit nicht. Ich denke nicht, dass das gewollt ist.

    Übrigens, hier steht wie man threadsicher codet: http://msdn2.microsoft.com/de-de/library/ms171728(VS.80).aspx

    Um einen anderen Weg aufzuzeigen, hier mal die Lösung mit einem eigenen Thread (VB.Net 2005 / threadsicher):
    Code:
    Public Class frmTest
    
     Private m_thread As System.Threading.Thread
     Private m_doDisplayTime As Boolean = False
    
    #Region " Property Text (thread safe) "
    
     ' Die Friend Sub und die Delegate Sub werden für das
     ' threadsiche Setzen des Textes in der Form benötigt.
     '
     ' Das Überschreiben der Property Text ist nicht 
     ' zwangsläufig erforderlich. Ohne die Überschreibung 
     ' müsste im Code die Methode "SetText" anstatt der 
     ' Property "Text" für den threadsicheren Aufruf 
     ' verwendet werden.
    
     Delegate Sub SetTextCallBack(ByVal [text] As String)
    
     Friend Sub SetText(ByVal [text] As String)
     If Me.InvokeRequired Then
     Dim d As New SetTextCallBack(AddressOf SetText)
     Me.Invoke(d, New Object() {[text]})
     Else
     MyBase.Text = text
     End If
     End Sub
    
     Public Overrides Property Text() As String
     Get
     Return MyBase.Text
     End Get
     Set(ByVal value As String)
     SetText(value)
     End Set
     End Property
    
    #End Region
    
    #Region " Event handlers "
    
     Private Sub btnStart_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnStart.Click
     StartTimeDisplay()
     End Sub
    
     Private Sub btnStop_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnStop.Click
     StopTimeDisplay()
     End Sub
    
    #End Region
    
     Private Sub StartTimeDisplay()
     ' Neuen Thread erzeugen
     m_thread = New System.Threading.Thread(AddressOf DisplayTime)
     ' Zeit soll angezeigt werden
     m_doDisplayTime = True
     ' Thread starten
     m_thread.Start()
     End Sub
    
     Private Sub StopTimeDisplay()
     ' Zeit soll nicht mehr angezeigt werden
     m_doDisplayTime = False
     ' Thread Stoppen
     m_thread.Abort()
     ' Thread verwerfen
     m_thread = Nothing
     End Sub
    
     Private Sub DisplayTime()
     Do
     ' Zeit anzeigen
     Me.Text = My.Computer.Clock.LocalTime.ToString("hh:mm:ss")
     ' Thread (m_thread) 1 Sekunde aussetzen
     Threading.Thread.Sleep(1000)
     Loop While m_doDisplayTime ' Solange Zeit angezeit werden soll
     ' Zeit (Text) entfernen
     Me.Text = String.Empty
     End Sub
    
    End Class
    Hoffe das hilft.

    BG MaxDev
     
  14. 12. November 2007
    AW: aktuelle Uhrzeit?

    Erledigt.

    ~dicht
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.