fireplay
Goto Top

Uhr mit Visualbasic programmieren

Wie kann ich......

Ich habe die Frage ob ich im Visualbasic ein Uhr Programieren kann.
Aber ich habe es bis her noch nicht geschaft .
Kann mir da einer Helfen???

PS:Es ist egal ob eine Digital oder Zeiger Uhr!!!

Gruss Fireplay

Content-Key: 8743

Url: https://administrator.de/contentid/8743

Printed on: April 19, 2024 at 06:04 o'clock

Member: linkit
linkit Mar 31, 2005 at 06:18:12 (UTC)
Goto Top
Naja, selbstverständlich geht das.... die Frage ist, wie komplex das ganze sein soll. Ob die Uhr manuell gestellt wird, vom System ausgelesen oder sogar per Internet upgedatet wird.


Dann kommt dazu, ob du in .net oder Version 6 arbeitest, weil sich hier die Befehle etwas unterscheiden.


Ich gehe mal davon aus, daß du Version 6 hast.


Die einfachste digitale Uhr ist, indem du Labels nimmst. Ein Label für Stunden, ein Label für Minuten und eines für Sekunden.

Wenn die Form geöffnet wird, also initialsiert, dann läßt du mit dem time Befehl die Uhrzeit vom System auslesen. Entweder du ließt gleich Stunden Minuten Sekunden eigens aus, oder du manipulierst die Zeichenkette, die du erhältst und splittst diese dann in diese drei Werte. Diese drei Werte läßt du in das entsprechende Labelfeld schreiben.


Jetzt zeigt die Form die aktuelle Uhrzeit an. Jetzt muß die Uhr nur noch weiter zählen. Hier gibt es verschiedene Möglichkeiten. Die allereinfachste ist, wenn du den Zeitgeber von Visual Basic 6 nimmst. Den stellst du auf eine Sekunde und läßt dann das Ereignis ausführen.

Im Ereignis schreibst du einfach, daß das Label Sekunde um eins hoch gezählt wird. Natürlich ist der Labelwert ein string, also mußt du diesen als Zahl umwandel und dann um eins hochzählen. Bevor du den Wert zurückschreibst, überprüfst du mit einer IF Bedingung beispielsweise, ob die Zahl = 60 ist. Ist dies der Fall, läßt du die Zahl auf 0 setzen und setzt den Wert von der Minute um eines hoch, wie du es mit der Sekunde gemacht hast.

Die Sekunde läßt du dann ins Labelfeld zurückschreiben.


Jetzt überprüfst du gleich, ob die Minute = 60 ist, oder du machst das im Minutenlabel, hierfür gibt es das Ereignis, wenn sich etwas geändert hat. Beides geht.


Ebenso funktioniert es mit der Stunde, nur ist hier das Ende bei 24.
Member: linkit
linkit Mar 31, 2005 at 07:09:37 (UTC)
Goto Top
@alle Programmierer:

JA, es geht schöner, aber es geht um das Verständnis !!!!

@author:

Ich habe dir mal ein Beispiel gebaut in Realbasic... wenn du Visual Basic hsat, kannst du kostenlos wechseln:

http://www.heise.de/newsticker/meldung/57838

Quellcode vom Timer:

rem Dimensionierung von der Variable x für die sekunden
  rem Dimensionierung von der Variable y für die Minuten
  rem Dimensionierung von der Variable z für die Stunden
  
  dim x as integer
  dim y as integer
  dim z as integer
  
  rem Abfragen der Variable x und hochsetzen des Wertes
  rem Ist die Variable = 60, dann wird diese auf 0 gesetzt.
  
  x = val(editSekunde.text)
  x = x +1
  if x = 60 then
    x = 0
    
    rem Abfragen der Variable Minuten, 
    rem weil ja eine Minute vergangen ist, muß der Wert
    rem um eins erhöht werden.
    
    y = val(editMinute.text)
    y = y +1
    
    REM Überprüfen, ob eine Stunde vergangen ist.
    REM Dann wert Minute zurück auf 0 und den 
    REM Stundenwert erhöhen
    
    if  y = 60 then
      y = 0
      
      REM Wert der Stunde um eines erhöhen.
      
      z = val(editStunde.text)
      z = z +1
      
      REM Überprüfen, ob ein Tag vergangen ist.
      
      if z = 24 then
        z = 0
      end if
      
      REM Stunde Schreiben
      if y < 10 then
        editStunde.text = "0" + str(z)  
      else
        editStunde.text = str(z)
      end if
      
    end if
    REM Schreiben des Wertes Minute, Erklärung 
    REM unten bei Sekunde
    
    if y < 10 then
      editMinute.text = "0" + str(y)  
    else
      editMinute.text = str(y)
    end if
    
    
    
    
  end if 
  
  rem Hier wird überprüft, ob die Sekunde < 10 ist, 
  rem wenn das so ist, dann wird einfach eine 0 davor
  rem geschrieben, damit dies schöner aussieht. 01.. 02
  
  if x < 10 then
    editSekunde.text = "0" + str(x)  
  else
    editSekunde.text = str(x)
  end if
  
Member: linkit
linkit Mar 31, 2005 at 07:12:56 (UTC)
Goto Top
Das Beispiel kannst du im Prinzip fast 1:1 nach Visual Basic übertragen. Visual Basic 6 habe ich nur bereits eingemottet und ist in der Packung im Schrank... für so kleine Exedateien habe ich Realbasic. Ansonsten .net......


Die Uhr fängt in diesem Beispiel um 0 Uhr an.... wenn die aktuelle Uhrzeit noch angezeigt werden soll, dann mußt du diese einfach beim initialisieren der Form noch vom System auslesen.
Member: linkit
linkit Apr 07, 2005 at 10:36:10 (UTC)
Goto Top
@fireplay:

wie wäre es mit fairplay ???? eine kurze Rückmeldung wäre nett gewesen, wenn man sich schon die Arbeit macht....
Member: fireplay
fireplay Apr 07, 2005 at 11:47:04 (UTC)
Goto Top
Danke viel mal für eure Hilfe.
Hat keiner eine Uhr schon programiert die ich bearbeiten könnte???
Member: linkit
linkit Apr 07, 2005 at 16:27:39 (UTC)
Goto Top
=> guck mal etwas höher.... Quellcode steht doch komplett zum Download bereit....
Member: fireplay
fireplay Apr 07, 2005 at 20:37:46 (UTC)
Goto Top
Hallo zusammen ich hab den download im obenstehenden Text nich im Visualbasic 2005 express öffnen können.Ich bracuhe eine vorprogramierte Uhr die ich nur noch im Visual aufmachen muss und bearbeiten kann.

Danke im voraus für euhre Hilfe

Greez Fireplay
Member: linkit
linkit Apr 08, 2005 at 05:48:41 (UTC)
Goto Top
1. Lade dir Realbasic von der angegeben Seite herunter
2. Öffne den oben angebenen Quellcode als Download
3. Schau dir an wie es funktioniert, dann verstehst du das auch....
4. Übernehme den Quellcode der hier steht mit Copy und Paste nach Visual Basic. Erstelle die Steuerelemente und ändere in zwei Minuten einfach dann noch den Quellcode ab, so daß es paßt.... (Steuerelemente Namen müssen richtig sein etc....)
Member: timi007
timi007 Apr 29, 2005 at 08:18:15 (UTC)
Goto Top
Starte VB, einfach ein neues Projeckt (Standard exe)

1. auf Form1: ein Label setzten ( wo es dir passt : -)) )
das Label hat nun den namen : Label1
2. setzte einen Timer auf Form1 : geh auf Timer Eigenschaften Recht, bei "Interval: 1000" setzen.
Doppelklick auf Timer :

label1.capation = time

das selbe kannst du auch mit Datum machen, statt :

"label1.capation = time" nimmst du einfach "label1.capation = date"  

aber, hier kannst du es downloaden:

also nichts besonderes 1 Zeile...code...

bis dann HF
Member: Desperado
Desperado Jul 17, 2005 at 20:05:10 (UTC)
Goto Top
 Form mit Label und Timer 
Form1; Label1; Timer1

Sub Form_Load()
Timer1.Interval = 1000
    Timer1.Enabled = True
    Label1.caption = DateTime.Now()
End Sub

Sub Timer1_Timer()
    Label1.caption = DateAdd("s", 1, CDate(Label1.caption))  
End Sub

Das wars schon face-smile