| Autor |
Beitrag |
IronBull
Hält's aus hier
Beiträge: 9
|
Verfasst: Do 29.10.09 01:26
Hallo Leute,
ich habe eine Statusbar unten in meinem Formular. Dort sollen die aktive offene Datei, das Datum und die Uhrzeit dargestellt werden.
1. Frage: Die Uhrzeit ändert sich, deshalb muss das Formular aktualisiert werden mit einem Ereignis. Welches oder besser welche Alternative kennt ihr, dass sich immer das Datum unten bei Minutenwechseln ändert?
2. Frage: Die ganze Geschichte kann ich nicht realisieren, weil es einen Typenkonflikt gibt.
Bsp.:
StatusBar1.Panels.Items[0]:='bla';
Funktioniert nicht, weil ich versuche mit einem String eine TStatusPanel zu füllen. Wie kriege ich das nun rein?
Bei ListBoxen ist das ähnlich, da hatte ich erst
var item:TListBox;
geschrieben gehabt und konnte irgendwie zuweisen(ist eine ganze Weile her).
mfg. IronBull
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Do 29.10.09 02:09
Du kannst Application.OnIdle nutzen (ist ein event), aber das kommt ziemlich oft rein, öfters als Du das brauchst für eine Uhr.
Du kannst auch einen timer nehmen und Dir jede Sekunde ein Event werfen und die aktuelle Uhrzeit dann reinsetzen.
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Do 29.10.09 02:34
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Apuch
      
Beiträge: 27
Kubuntu 9.04, Win 2000
Delphi 7
|
Verfasst: Do 29.10.09 02:54
IronBull hat folgendes geschrieben: | 1. Frage: Die Uhrzeit ändert sich, deshalb muss das Formular aktualisiert werden mit einem Ereignis. Welches oder besser welche Alternative kennt ihr, dass sich immer das Datum unten bei Minutenwechseln ändert?
|
Ein Timer-Event ist das einfachste (TTimer unter System in Delphi7). Wenn es wirklich nur aller Minuten sein soll, dann ist der rechenzeitliche Aufwand nahe Null.
MfG
Moderiert von Narses: Zitat repariert.
_________________ DasLebenIstZuKurzFürWhitespaces!
|
|
IronBull 
Hält's aus hier
Beiträge: 9
|
Verfasst: Do 05.11.09 13:18
Vielen Dank für die Antworten!
Hat geholfen 
|
|
IronBull 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 08.11.09 19:40
Ok funktioniert bisher alles, außer das Datum spinnt ein wenig. Mein System zeigt mir das korrekte Datum und die Uhrzeit an. Nur wird beim Datum in Delphi angezeigt: 30.12.1899. Habe bei google geschaut, aber finde nichts bzw. bin nicht in der Lage nach dem Stichwort zu suchen
lg. ironbull
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.11.09 20:11
Dann ist die Datumsvariable nicht initialisiert. Wenn du das aktuelle Datum (Date) nehmen würdest, würde das auch klappen. Aber wenn du den Quelltext geheim halten möchtest, kann da auch niemand etwas genaueres dazu sagen...
Bzw. was meinst du mit "in Delphi"?!? Drück dich doch einmal bitte etwas deutlicher aus...
|
|
IronBull 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 08.11.09 20:56
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.11.09 20:59
Tja, da habe ich die Antwort ja schon gegeben... jaenicke hat folgendes geschrieben : | | Dann ist die Datumsvariable nicht initialisiert. |
Vergleich mal die beiden Quelltexte für Zeit und Datum...
Zudem: Was macht GetTime und wozu die zusätzlichen Variablen? Nimm doch z.B. Date bzw. now direkt.
|
|
IronBull 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 08.11.09 21:05
Hehe ich wusste das das mit der "zusätzlichen Variable" kommen wird
Ich habe schon gesehen, mist. Danke für den Hinweis.
Hier nochmal für die die später irgendwann bei Google danach suchen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Timer1Timer(Sender: TObject); begin StatusBar1.Panels.Items[2].Text:='Uhrzeit: '+TimeToStr(GetTime()); end;
procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=true; StatusBar1.Panels.Items[1].Text:='Datum: '+ DateToStr(Date); end; |
Moderiert von Klabautermann: Code- durch Delphi-Tags ersetzt.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.11.09 21:12
IronBull hat folgendes geschrieben : | Hehe ich wusste das das mit der "zusätzlichen Variable" kommen wird  |
Wobei, um das vielleicht noch klarzustellen, das nicht so gemeint war, dass zusätzliche Variablen grundsätzlich schlecht sind. Das kann durchaus die Übersicht erhöhen.
Zwei Bedingungen müssen dafür aber erfüllt sein, damit solche Variablen sinnvoll ist:
Erstens sollte eine Variable nicht einfach eine andere ersetzen (also statt Date einfach Datum mit dem selben Inhalt). Heißt: es muss auch eine Vereinfachung da sein, z.B. das Ergebnis einer Berechnung in der Variable statt diese Berechnung direkt irgendwo einzusetzen.
Zweitens sollten die Variablen gut bezeichnet sein. Also z.B. CurrentDate oder sowas und nicht einfach Datum.
|
|