Entwickler-Ecke

Sonstiges (Delphi) - Datumseingabe !


Jagg - Do 12.12.02 20:11
Titel: Datumseingabe !
Hallo,Leute !

Ich habe ein EditFeld und darin wird beim Start das Datum angezeigt !
Wenn ich jetzt im EditFeld das Datum aber verändere,soll sich dieses veränderte Datum mit dem Systemdatum gleich setzen,aber dafür muss das Programm erkennen,das ich die Bestandteile eines Datum (Tag,Monat,Jahr) übergeben will,wie mache ich das ?

Jagg !


Stauch - Fr 13.12.02 08:35

Hallo

das müßte doch irgendwie mit

function StrToDate(const S: string): TDateTime;

funktionieren

MfG

C.


Udontknow - Fr 13.12.02 09:55

Hi!

Wie immer ist es nicht gerade leicht, zu erraten, was du eigentlich genau willst.
Du willst, das das Datum mit dem Systemdatum gleichgesetzt wird, wenn jemand im Editfeld was ändert? Dann musst du doch nur Edit1.Text:=DateToStr(now) setzen. Wieso musst du überprüfen, ob "Bestandteile eines Datums" übergeben werden?

Na, wie dem auch sei, Bestandteile eines Datums kannst du mit DecodeDate herausfiltern.

Cu, :)
Udontknow


Delete - Fr 13.12.02 10:25

Umgekehrt, er will die Systemzeit ändern. Die neue Systemzeit wird in das Edit eingetragen und per Button-Klick dann die Systemzeit geändert.

SetSystemTime [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/setsystemtime.asp]. Die zugehörige Struktur heißt in Delphi TSystemTime.

Desweitern wurde hier gerade gestern ein Link gepostet zu einer Funktion, die sowas macht.


Udontknow - Fr 13.12.02 10:34

Woher entnimmst du das denn, Luckie? *Grübel*

Na ja, wie ich ja schon sagte, aussagekräftig war dieses Posting nicht wirklich...

Zitat:
soll sich dieses veränderte Datum mit dem Systemdatum gleich setzen

Ist nicht das gleiche wie
Zitat:
soll das Systemdatum auf das eingegebe Datum gesetzt werden


Cu,
Udontknow


Delete - Fr 13.12.02 10:54

Udontknow hat folgendes geschrieben:

Zitat:
soll sich dieses veränderte Datum mit dem Systemdatum gleich setzen

Ist nicht das gleiche wie
Zitat:
soll das Systemdatum auf das eingegebe Datum gesetzt werden


Na ja ich denke schon, dass der obere Satz identisch mit dem unterem ist. Anderst würde es auch keinen Sinn machen. Warum erst das Datum im Edit ändern, wenn man es dann wieder durch die Systemzeit ersetzt?


Udontknow - Fr 13.12.02 11:07

Na der Satz ist ja eben nicht identisch, deshalb habe ich ja auch so doof gefragt, weil es eben keinen Sinn macht!! :D

Cu,
Udontknow


Delete - Fr 13.12.02 11:12

Sagen wir mal so "sinn-identisch". :wink:


Jagg - Fr 13.12.02 13:54

in edit1 hab ich das datum stehen : z.b 12.12.2002
dann habe ich ein button wenn ich darauf gehe passiert das hier :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Time.wYear   := StrToInt(Copy(Edit1.Text,7,Length(Edit1.Text)-6));
    Time.wMonth  := StrToInt(Copy(Edit1.Text,4,Length(Edit1.Text)-8));
    Time.wDay    := StrToInt(Copy(Edit1.Text,1,Length(Edit1.Text)-8));
    Time.wHour   := StrToInt(Edit2.Text);
    Time.wMinute := StrToInt(Edit3.Text);
    Time.wSecond := StrToInt(Edit4.Text);
    if SetSystemTime(Time) then
    begin
      MessageDlg('Einstellungen an Kassen-PC übertragen !',mtInformation,[mbOk],0);
      Close;
    end;


..... das klappt soweit so gut....aber wie bekomme ich jetzt hin das ich auch einen "Punkt" eingeben kann !
Bei mir kann er nur Zahlen eingeben !

Das habe ich bei edit1keypress gemacht :

Quelltext
1:
2:
if not (key in ['0'..'9',#8]) then
    key:=#0;


Wie mache ich jetzt das ich auch Punkte eingeben kann ???
die punkte zwischen den zahlen !

Jagg !


Delete - Fr 13.12.02 14:04

Füg doch noch das '.' hinzu oder nimm den ASCII-Code des Punktes.


Jagg - Fr 13.12.02 20:33

und wie soll das gehen ?


Jagg - Fr 13.12.02 20:34

soll ich ind er klammer noch einen ounkt hinzufügen oder wie ?


patrick - Fr 13.12.02 22:32

der ANSI code für
. = #46
für
, = #44