datum rechnen...

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

datum rechnen...

Beitrag von reiter »

hallo...
soweit funktioniert alles... das problem was ich habe:

ich möchte im ersten feld ein editierbares datum was ich ändern kann und sich die restlichen felder drauf rechnen
momentan zeigt er mir nur das aktuelle datum , ist aber nicht editierbar und feld2,3,4 rechnet halt auf das aktuelle die sollen aber auf das editierbare rechnen also z.b. 1.8.17

kann mir da jemand helfen?
wei muss ich datum1 deklarieren das das funktioniert

gruss

procedure TForm1.Button1Click(Sender: TObject);

var
Datum1: TDateTime;
Datum2: TDateTime;
Datum3: TDateTime;
Datum4: TDateTime;
Tage: Integer;

begin

Datum2 := Datum1 + 20; // Tage dazuaddieren
Datum3 := Datum1 + 40;
Datum4 := Datum1 + 60;

edit1.Text := FormatDateTime('dd.mm.yyyy', Datum1);
edit2.Text := FormatDateTime('dd.mm.yyyy', Datum2);
edit3.Text := FormatDateTime('dd.mm.yyyy', Datum3);
edit4.Text := FormatDateTime('dd.mm.yyyy', Datum4);

end;
Zuletzt geändert von reiter am Di 5. Dez 2017, 23:55, insgesamt 1-mal geändert.

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: datum rechnen...

Beitrag von Mathias »

Ich verstehe deine Frage nicht richtig, kommt ein falsches Datum oder werden deine Edit nicht aktualisiert ?

Dieser Code zeigt bei mir das Datum korrekt an.

Code: Alles auswählen

  Datum1 := Date;
  Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy', Datum1));
  Datum2 := Datum1 + 20;
  Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy', Datum2));
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: datum rechnen...

Beitrag von reiter »

doch das funktioniert alles...

nur soll date1 editierbar sein... also das ich irgendein datum eintragen kann , momentan zeigt er mir immer nur das aktuelle datum
datum2,3,4 funktioniert

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: datum rechnen...

Beitrag von Mathias »

Meinst du so was ?
Oder sollte bei jedem Tastendruck im Edit eine Abfrage kommen ?

Code: Alles auswählen

var
  t: TDateTime;
begin
  t := StrToDate(Edit1.Text);
end;

So nebenbei verwendet man normalerweise bei eine Edit 'Text', anstelle con 'Caption'.
Zuletzt geändert von Mathias am Di 5. Dez 2017, 21:54, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Epcop
Beiträge: 140
Registriert: Di 29. Mai 2012, 09:36

Re: datum rechnen...

Beitrag von Epcop »

Kann das sein, dass du den CalenderDialog suchst?

Code: Alles auswählen

 
if calendardialog1.Execute then begin
     label.Caption:=datetostr(calendardialog1.Date); \\ bzw datum1 = calenderdialog1.date
end;
 

Epcop
Beiträge: 140
Registriert: Di 29. Mai 2012, 09:36

Re: datum rechnen...

Beitrag von Epcop »

Mathias hat geschrieben:Meinst du so was ?
Oder sollte bei jedem Tastendruck im Edit eine Abfrage kommen ?

Code: Alles auswählen

var
  t: TDateTime;
begin
  t := StrToDate(Edit1.Text);
end;



Bei der Variante muss man vorher genau das Datum prüfen. Weil es gibt Tausend Möglichkeiten ein Datum zu schreiben ;-)

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: datum rechnen...

Beitrag von reiter »

ja, das mit dem edit.text habe ich selbst gemerkt...
und label.caption

hatte ich vertauscht
habe es jetzt aber hinbekommen... mit

sieht jetzt so aus

und es funktioniert wie ich es will

var
Datum1: TDateTime;
Datum2: TDateTime;
Datum3: TDateTime;
Datum4: TDateTime;
Tage: Integer;

begin

Tage := 60; // 60 Tage vorwärts

DateSeparator := '.'; // datum muss eingetragen werden


Datum1 := StrToDateTime(Edit1.Text);

Datum2 := Datum1 + 20;
Datum3 := Datum1 + 40;
Datum4 := Datum1 + 60;

edit1.Text := FormatDateTime('dd.mm.yyyy', Datum1);
edit2.Text := FormatDateTime('dd.mm.yyyy', Datum2);
edit3.Text := FormatDateTime('dd.mm.yyyy', Datum3);
edit4.Text := FormatDateTime('dd.mm.yyyy', Datum4);

end;

Antworten