Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Trackbar (https://www.delphipraxis.net/98804-problem-mit-trackbar.html)

kronos89 1. Sep 2007 18:55


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.

Cyberbob 1. Sep 2007 19:39

Re: Problem mit Trackbar
 
Also, die Zeit bekommst du mit Now. Einen Teil dieser Zeit extrahieren kannst du mit FormatDateTime()
Delphi-Quellcode:
FormatDateTime('FormatString', Now);
mit "h" bekommst du die Stunden, mit "n" die Minuten, mit "s" die Sekunden.

Also in etwa so:
Delphi-Quellcode:
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;
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.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TrackBar1.Max := 24;
  TrackBar2.Max := 60;
  TrackBar3.Max := 60;
end;
dann noch die Anfangszeit einstellen:
Delphi-Quellcode:
Trackbar1.Position := StrToInt(FormatDateTime('h', Now));
Trackbar2.Position := StrToInt(FormatDateTime('n', Now));
Trackbar3.Position := StrToInt(FormatDateTime('s', Now));

kronos89 1. Sep 2007 20:13

Re: Problem mit Trackbar
 
Vielen Dank für die schnelle Antwort! :-D
Die Uhrzeit hab ich so gemacht:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  dateseparator:=' ';
  shortDateFormat :='ddd,/dd./mmmm/yyyy';
  Label1.Caption:= DateToStr(Date);
end;
Wie müsste ich das denn mit
Delphi-Quellcode:
FormatDateTime('FormatString', Now);
einfügen oder umschreiben?

Hab nicht so viel Ahnung von Delphi und Zuhause hab ich auch kein Delphi. Der Rest ist klar!

Cyberbob 1. Sep 2007 20:29

Re: Problem mit Trackbar
 
Mit deinem Code müsstst du aber das Datum, nicht die Zeit erhalten :gruebel:

kronos89 1. Sep 2007 20:54

Re: Problem mit Trackbar
 
Ups, dann war es doch so:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  dateseparator:=' ';
  shortDateFormat :='ddd,/dd./mmmm/yyyy';
  Label1.Caption:= Timetostr(time);
end;
Hab das nur von ein anderen Programm kopiert und es ist auf anhieb gelaufen.

Cyberbob 1. Sep 2007 20:58

Re: Problem mit Trackbar
 
aber mit
Delphi-Quellcode:
dateseparator:=' ';
shortDateFormat :='ddd,/dd./mmmm/yyyy';
veränderst du nur das aussehen deines Datums. Das brauchst du gar nicht. Oder lässt du irgendwo auch das Datum anzeigen?

Zeig mal ein wenig mehr Code!

kronos89 1. Sep 2007 21:19

Re: Problem mit Trackbar
 
Ja, ein Datum ist auch noch drauf.
Das ist alles, was ch dfür das Programm jetzt habe:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  dateseparator:=' ';
  shortDateFormat :='ddd,/dd./mmmm/yyyy';
  Label1.Caption:= DateToStr(Date);
  Label2.Caption:= Timetostr(time);
end;
Funktioniert auch alles.

Cyberbob 1. Sep 2007 23:16

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!

kronos89 2. Sep 2007 06:02

Re: Problem mit Trackbar
 
Gut mach ich so! Danke!!!!!!!!!

Sharky 2. Sep 2007 07:22

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 Delphi-Referenz durchsuchenDecodeTime arbeiten. Das macht den Code leichter zu verstehen ;-)

Wenn Du dann noch die Funktionen zum setzen der Trackbars in eine eigene Procedure auslagerst ist eigentlich schon alles erledigt:

Delphi-Quellcode:
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;
Nachtrag
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 03:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz