Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Uhrzeit anzeige
henny - Di 30.06.09 13:34
Titel: Uhrzeit anzeige
Hallo zusammen ich möchte ein Programm schreiben das im Hintegrund läuft und dem Benutzer jede Stunde mit eine MessageBox die Uhrzeit anzeigt!
Das Programm soll auf die Systemuhrzeit zugreifen!
Kann mir jemand sagen wie ich das programmieren könnte?
Danke schonmal im Vorraus
Nersgatt - Di 30.06.09 13:36
Setze einen Timer auf ein Formular, frage alle 30 Sekunden die Uhrzeit ab, und wenn sich die Stunde geändert hat, gibst Du die Messagebox aus.
henny - Di 30.06.09 13:40
Und wie frage ich die Uhrzeit ab?
Und wie mache ich das das Programm im Hintergrund läuft?
Nersgatt - Di 30.06.09 13:47
Und was heißt "Uhrzeit" nochmal auf Englisch? :roll:
jaenicke - Di 30.06.09 15:21
So oft muss der Timer ja vielleicht gar nicht laufen. Ich würde mir eher die vorherige Stunde merken und schauen wann die nächste begonnen hat. Die Stringumwandlung ist doch überflüssig.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| CurrentHour: Integer;
...
CurrentHour := Floor(Time * 24);
...
if Floor(Time * 24) > CurrentHour then begin ... |
Floor ist aus der Unit Math.
henny - Di 30.06.09 18:48
Und wie mache ich das dann das das Programm im Hintergrund läuft (unten rechts neben der Uhr)?
jaenicke - Di 30.06.09 19:24
Ich habe das doch sogar schon verlinkt gehabt... :(
henny - Mi 01.07.09 16:41
O.K. ich habs mir runtergeladen was muss ich jetzt machen?
jaenicke - Mi 01.07.09 16:44
Wenn du CoolTrayIcon meinst: Installieren bzw. bei Turbo Delphi manuell erstellen...
henny - Mi 01.07.09 17:05
Ja und wie installiere ich CoolTrayIcon ?
elundril - Mi 01.07.09 17:10
1) Cooltrayicon_d6.dpk finden
2) auf auf CoolTrayIcon_D6plus.dpk doppelt klicken
3) in delphi auf compile klicken
4) auf installieren klicken
5) spass haben mit CTI
jaenicke - Mi 01.07.09 17:10
Sorry, aber ich hab mittlerweile echt keine Lust mehr dir zu antworten. Du stellst immer wieder Fragen, die man relativ einfach auch selbst finden kann, auch als Anfänger. Ok, kann ja sein, dass mal jemand etwas begriffsstutziger ist, da hab ich halt trotzdem geantwortet.
Aber hier liegt eine install.txt dabei, in der das genau steht wie das geht...
Und falls du Turbo Delphi hast, dann musst du die Komponente wie gesagt
manuell erstellen [
http://www.delphi-treff.de/tutorials/vcl/komponenten-zur-laufzeit-erstellen/], da kann man keine Komponenten installieren.
henny - Mi 01.07.09 17:33
O.K. ich gibs zu ich war zu ..... zum installieren.
Habs jetzt aber geschafft! :lol:
Und wie programmiere ich des ding dann?
jaenicke - Mi 01.07.09 17:35
Dass da eine .chm Hilfedatei dabei ist, hast du übersehen?
elundril - Mi 01.07.09 17:37
bist du dir sicher das programmieren das richtige ist? Schon mal stricken oder so probiert?
Und in dem Ordner Demos (ist im gleichen Ordner wie CoolTrayIcon_D6plus.dpk) gibts schöne demos dazu, einfach mal ausführen und den quelltext ansehen.
Weiters gibts in der Delphi-Praxis ein sehr schönes tutorial zu CTI in deren ihrer Knowledgebase. Einfach mal dort hineinschauen ;)
lg elundril
henny - Mi 01.07.09 17:37
Sorry :oops:
henny - Mi 01.07.09 18:08
Hat alles super keklappt bis auf eins:
wenn das Programm im Infobereich ist und eine Stunde rum ist passiert nichts wieso?
jaenicke - Mi 01.07.09 18:10
Welchen Code hast du denn jetzt in deinem Programm drin?
henny - Mi 01.07.09 18:23
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, CoolTrayIcon, StdCtrls, Menus, ExtCtrls;
type TForm1 = class(TForm) Button1: TButton; CoolTrayIcon1: TCoolTrayIcon; PopupMenu1: TPopupMenu; Anzeigen1: TMenuItem; Timer1: TTimer; Timer2: TTimer; procedure Button1Click(Sender: TObject); procedure Anzeigen1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer2Timer(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin coolTrayIcon1.iconvisible := true; form1.hide; timer1.enabled := true; end;
procedure TForm1.Anzeigen1Click(Sender: TObject); begin form1.show; timer1.Enabled := false; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin if FormatDateTime('mm:ss', Now)='18:12' then ShowMessage('Es ist mal wieder eine volle Stunde rum!'); timer2.enabled := true; timer1.Enabled := false; end;
procedure TForm1.FormCreate(Sender: TObject); begin timer2.Enabled := false; end;
procedure TForm1.Timer2Timer(Sender: TObject); begin if FormatDateTime('mm:ss', Now)='18:12' then ShowMessage('Es ist mal wieder eine volle Stunde rum!'); timer2.Enabled := false; timer1.Enabled := true; end;
end. |
Sorry ich weiß nicht wie das geht das der Code in so nem ding zum scrollen drin ist
Moderiert von
Narses: Delphi-Tags hinzugefügt
jaenicke - Mi 01.07.09 18:31
henny hat folgendes geschrieben : |
Delphi-Quelltext 1:
| if FormatDateTime('mm:ss', Now)='18:12' then | |
Ist dir denn klar was der Code macht?
henny hat folgendes geschrieben : |
| Sorry ich weiß nicht wie das geht das der Code in so nem ding zum scrollen drin ist |
Ich muss zugeben, dass
in der Hilfe im Forum [
http://www.delphi-forum.de/help_schreiben_bbcodes_source.html&sub=,19,27,32] die Kategorie etwas unglücklich bezeichnet ist. Wenn du einen so formatierten Beitrag zitierst, siehst du es z.B. auch. Nämlich:
Quelltext
1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG49681fa489931e7169f80538c37d4af3}</span></span> |
henny - Mi 01.07.09 18:38
Nicht ganz was macht der Code?
henny - Mi 01.07.09 18:55
Und wie mache ich das er die Zeit 18:59 Uhr oder so abfrägt?
jaenicke - Mi 01.07.09 18:57
Dafür musst du wohl auf Stunde und Minute testen. Und wie du FormatDateTime dazu bringst, sagt dir die verlinkte Hilfe.
Und zudem darfst du die Anzeige nicht mehrfach auslösen, wenn der Timer auf unter einer Minute gesetzt ist.
Und wie das am besten geht habe ich ganz am Anfang schon geschrieben... :roll:
jaenicke hat folgendes geschrieben : |
So oft muss der Timer ja vielleicht gar nicht laufen. Ich würde mir eher die vorherige Stunde merken und schauen wann die nächste begonnen hat. Die Stringumwandlung ist doch überflüssig. Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| CurrentHour: Integer;
...
CurrentHour := Floor(Time * 24);
...
if Floor(Time * 24) > CurrentHour then begin ... | Floor ist aus der Unit Math. |
henny - Mi 01.07.09 19:22
Vielen Vielen dank an alle die mir geantwortet haben es hat alles bestens geklappt!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!