![]() |
Problem mit Trackbar
Ich bin neu hier im Forum und habe ein Problem mit Trackbars. Wir sollen in der Schule ein Programm erstellen, dass die aktuelle Zeit in Trackbars anzeigt.
Zuerst soll ganz normal die aktuelle Uhrzeit angezeigt werden, das hab ich auch schon und dann sollen 3 Trackbars , jeweils die Stunden, Minuten und Sekunden aus diesen timer anzeigen. Ich hab nicht so viel Ahnung von Delphi und auch nicht mehr viel Zeit. Für ein Programmablaufplan wäre ich echt dankbar. Der Lehrer meinte das wäre nicht viel und auch nicht schwer, aber der ganze Kurs weiß da nicht weiter. |
Re: Problem mit Trackbar
Also, die Zeit bekommst du mit Now. Einen Teil dieser Zeit extrahieren kannst du mit FormatDateTime()
Delphi-Quellcode:
mit "h" bekommst du die Stunden, mit "n" die Minuten, mit "s" die Sekunden.
FormatDateTime('FormatString', Now);
Also in etwa so:
Delphi-Quellcode:
Im OnCreate des formulars musst du dann noch die Max-Eigenschaften setzen. 24 für die Stunden und jeweils 60 für Minuten und sekunden.
procedure TForm1.Timer1Timer(Sender: TObject);
begin Trackbar1.Position := StrToInt(FormatDateTime('h', Now)); Trackbar2.Position := StrToInt(FormatDateTime('n', Now)); Trackbar3.Position := StrToInt(FormatDateTime('s', Now)); end;
Delphi-Quellcode:
dann noch die Anfangszeit einstellen:
procedure TForm1.FormCreate(Sender: TObject);
begin TrackBar1.Max := 24; TrackBar2.Max := 60; TrackBar3.Max := 60; end;
Delphi-Quellcode:
Trackbar1.Position := StrToInt(FormatDateTime('h', Now));
Trackbar2.Position := StrToInt(FormatDateTime('n', Now)); Trackbar3.Position := StrToInt(FormatDateTime('s', Now)); |
Re: Problem mit Trackbar
Vielen Dank für die schnelle Antwort! :-D
Die Uhrzeit hab ich so gemacht:
Delphi-Quellcode:
Wie müsste ich das denn mit
procedure TForm1.Timer1Timer(Sender: TObject);
begin dateseparator:=' '; shortDateFormat :='ddd,/dd./mmmm/yyyy'; Label1.Caption:= DateToStr(Date); end;
Delphi-Quellcode:
einfügen oder umschreiben?
FormatDateTime('FormatString', Now);
Hab nicht so viel Ahnung von Delphi und Zuhause hab ich auch kein Delphi. Der Rest ist klar! |
Re: Problem mit Trackbar
Mit deinem Code müsstst du aber das Datum, nicht die Zeit erhalten :gruebel:
|
Re: Problem mit Trackbar
Ups, dann war es doch so:
Delphi-Quellcode:
Hab das nur von ein anderen Programm kopiert und es ist auf anhieb gelaufen.
procedure TForm1.Button2Click(Sender: TObject);
begin dateseparator:=' '; shortDateFormat :='ddd,/dd./mmmm/yyyy'; Label1.Caption:= Timetostr(time); end; |
Re: Problem mit Trackbar
aber mit
Delphi-Quellcode:
veränderst du nur das aussehen deines Datums. Das brauchst du gar nicht. Oder lässt du irgendwo auch das Datum anzeigen?
dateseparator:=' ';
shortDateFormat :='ddd,/dd./mmmm/yyyy'; Zeig mal ein wenig mehr Code! |
Re: Problem mit Trackbar
Ja, ein Datum ist auch noch drauf.
Das ist alles, was ch dfür das Programm jetzt habe:
Delphi-Quellcode:
Funktioniert auch alles.
procedure TForm1.Timer1Timer(Sender: TObject);
begin dateseparator:=' '; shortDateFormat :='ddd,/dd./mmmm/yyyy'; Label1.Caption:= DateToStr(Date); Label2.Caption:= Timetostr(time); end; |
Re: Problem mit Trackbar
und jetzt willst du noch das mit den TrackBars machen? Nimm doch einfach meinen Code, den kannst du zusätzlich zu deinem verwenden!
|
Re: Problem mit Trackbar
Gut mach ich so! Danke!!!!!!!!!
|
Re: Problem mit Trackbar
Hai kronos89,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS". Anstelle die Zeit immer mit FormatDateTime zu bekommen und sie dann mit StrToInt in eine Zahl zu wandeln solltest Du lieber mit ![]() Wenn Du dann noch die Funktionen zum setzen der Trackbars in eine eigene Procedure auslagerst ist eigentlich schon alles erledigt:
Delphi-Quellcode:
Nachtrag
procedure SetTrackbars(a_tbhour, a_tbmin, a_tbsec: TTrackBar);
var stunde: Word; minute: Word; sekunde: Word; msekunde: Word; begin DecodeTime(now, stunde, minute, sekunde, msekunde); a_tbhour.Position := stunde; a_tbmin.Position := minute; a_tbsec.Position := sekunde; end; procedure TDemo_Form.FormCreate(Sender: TObject); begin TrackBar1.Max := 24; TrackBar2.Max := 60; TrackBar3.Max := 60; SetTrackbars(TrackBar1, TrackBar2, TrackBar3); // einmal beim programm start Timer1.Interval := 250; Timer1.Enabled := True; end; procedure TDemo_Form.Timer1Timer(Sender: TObject); begin SetTrackbars(TrackBar1, TrackBar2, TrackBar3); // im festgelegten Intervall die Trackbars aktualisieren. end; Die Übergabe der Trackbars an die Procedure SetTrackbars muss man natürich nicht machen. Man kann die TBs auch in der Procedure selber ansprechen. Aber ich wollte halt mal zeigen das man es auch so machen kann ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz