Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Systemzeit mit Zeit aus Editfeldern gleichsetzen.


Scrat - Do 12.12.02 16:52
Titel: Systemzeit mit Zeit aus Editfeldern gleichsetzen.
wie setze ich die Systemzeit meines Computers gleich mit dem Inhalt von Editfeldern???

Beispiel: Ersteinmal die Stunden,Minuten,Sekunden in die Editfelder schreiben.

Quelltext
1:
2:
3:
Edit1.text:=FormatDateTime('hh',now);
Edit2.text:=FormatDateTime('nn',now);
Edit3.text:= FormatDateTime('ss',now);

Nun werden die Daten vom Benutzer geändert......(*änder....änder..*)

So und jetzt will ich die Systemzeit des Rechners mit einem Tastendruck mit der geänderten Zeit (welche ja in den Editfeldern steht) gleichsetzen.

In etwa so:

Quelltext
1:
Systemtime := Edit1.text + Edit2.text + Edit3.text;                    

wie mach ich dass??? :?:

(13.12. 08:46 Tino) Code-Tags hinzugefügt.


Ex0rzist - Do 12.12.02 17:49

Hallo Scrat,

wie du die Systemzeit (und Datum) änderst, findest du bei DBR [http://home.pages.at/dbr-software/delphi/datum.htm].


Scrat - Fr 13.12.02 10:54

Ich arbeite aber mit Edit-Feldern,

in denen die (neuen) Stunden, die Minuten und Sekunden reingeschrieben werden.


Delete - Fr 13.12.02 11:11

Schön. Und wo ist das Problem? Mit den Funktionen von dem Link sollte es eigentlich kein Problem sein.


Scrat - Fr 13.12.02 12:20

Das Problem liegt an mir :twisted:

Ich muß mich in den Quelltext erst noch reinversetzen.

Geht das denn nicht einfacher ???irgendwie mit:


SETSYSTEMTIME

:?:


Delete - Fr 13.12.02 13:19

Wie soll es denn noch einfacher gehen? Du füllst die TSystemTime-Struktur und dann übergibst du sie der Funktion SetSystemTime - fertig. Und das ist genau so, wie du es dir vorstellst.


Scrat - Mo 23.12.02 11:19

Hier ist der Quelltext von dem LINK:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure setzen(jahr,monat,tag,stunde,minute,sekunde,msekunde:word);
var neu:TSystemTime;
begin
neu.wyear:=jahr;
neu.wmonth:=monat;
neu.wday:=tag;
neu.whour:=stunde;
neu.wminute:=minute;
neu.wsecond:=sekunde;
neu.wmilliseconds:=msekunde;
setlocaltime(neu);
// Die Uhr in der Taskleiste wird erst
// nach Minutenablauf aktualisiert
end;


Jahr,Monat,usw... sind WORD-Typen.

Deswegen kann ich nicht
neu.wmonth:=Edit1.text;

setzen.

PS: Deswegen hab ich ja auch das Problem.... kann mir jemand mal einen Teil des richtig lautenden Quellcodes schicken?


Tino - Mo 23.12.02 11:41

Scrat hat folgendes geschrieben:
Deswegen kann ich nicht
neu.wmonth:=Edit1.text;

Das sollst Du ja auch nicht. Die Funktion Setzen packst Du einfach in Deinen Quellcode. Wenn Du nun die Zeit setzen willst dann sollst Du die Funktion Setzen aufrufen.

Also zum Beispiel im OnClick-Event eines Buttons:

Quelltext
1:
2:
3:
4:
procedure tForm1.ButtonClick (Sender: tObject);
begin
  setzen (2002, 12, 23, 10, 41, 00, 00);
end;

Wenn Du nun möchtest das die Angaben nicht direkt im Quellcode gemacht werden sondern mit Hilfe mehrerer Edit-Felder dann sieht die sache so aus:

Quelltext
1:
2:
3:
4:
procedure tForm1.ButtonClick (Sender: tObject);
begin
  setzen (StrToInt (Edit1.Text), StrToInt (Edit2.Text), StrToInt (Edit3), 10, 41, 00, 00);
end;


Gruß
TINO


Scrat - Di 24.12.02 13:15

:idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea:

War wohl auf dem total falschen Weg...... :shock:

Danke & Frohe Weihnachten :beer:
Scrat


Tino - Di 24.12.02 16:17

Bitte! Dir auch!

Gruß
TINO