Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Geburtsdatum errechnen (https://www.delphipraxis.net/142469-geburtsdatum-errechnen.html)

Kunoishi 28. Okt 2009 19:08


Geburtsdatum errechnen
 
Ich hatte hier mal einen Quellcode gefunden zur berechnung des Geburtsdatums
Delphi-Quellcode:
function Age(BirthDate: TDate): integer;
var y1,y2,m1,m2,d1,d2: Word;
begin
  SysUtils.DecodeDate(date,y1,m1,d1);
  SysUtils.DecodeDate(BirthDate,y2,m2,d2);
  Result := ((y1 * 10000 + m1 * 100 + d1)
           - (y2 * 10000 + m2 * 100 + d2)) div 10000;
end;
dieses wollte ich jetzt in meinem Projekt einbinden
Delphi-Quellcode:
procedure TSachverhaltForm.DateTimePicker1Exit(Sender: TObject);
begin
DateTimePicker1.DateTime:=EncodeDate(1950,1,25);
Alter.Text:='das Alter der Person ist ' + IntToStr(age(DateTimePicker1.Date)) + ' Jahre'; //ergibt 59 bei Systemdatum < 25.01.2010
end;
hierzu möchte ich aber eine MaskEdit zur Eingabe verwenden, um bei verlassen dieser in dem Editfeld "Alter.Text" mir dann das Alter ausgeben zu lassen.

Komme aber nicht ganz klar damit und Suche wie so oft hier wieder mal eure Hilfe.

patti 28. Okt 2009 19:22

Re: Geburtsdatum errechnen
 
Meinst du, dass du zur Eingabe des Datums ein MaskEdit verwenden möchtest? Wenn ja, dann zieh dir ein MaskEdit auf dein Formular und stelle bei der Eigenschaft EditMask folgenden Wert ein:

Code:
!90/90/00;1;_
Auf das Verlassen des MaskEdits kannst du beispielweise im Ereignis OnExit reagieren.

MFG
Patti

Kunoishi 28. Okt 2009 19:26

Re: Geburtsdatum errechnen
 
wie kann ich aber den Wert bei dem EncodeDate();
von meiner MaskEdit zuweisen?
Das wäre hier mein Problem.

DP-Maintenance 28. Okt 2009 19:32

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Delphi-Frage: TMaskEdit -> VCL

himitsu 28. Okt 2009 19:37

Re: Geburtsdatum errechnen
 
String nach TDate (TDateTime)
z.B. Delphi-Referenz durchsuchenStrToDate


Gibt es keinen TDateTimePicker in D5?

Kunoishi 28. Okt 2009 19:43

Re: Geburtsdatum errechnen
 
werde ich mal durchforsten, ich hoffe ich werde damit klar kommen :-)

Kunoishi 10. Dez 2009 16:07

Re: Geburtsdatum errechnen
 
da ich mit den Berechnungen des Geburtstags noch nicht so recht weiter komme, habe ich mal umgedacht und mein Problem anderes angefast. Wo ich ein wenig besser klarkomme und eigentlich schon ein Ergebnis habe.

Hierzu verwende ich ein Stringgrid (Dazu hatte ich was hier im Forum gefunden)
Delphi-Quellcode:
procedure TForm.StringGridKeyPress(Sender: TObject;
  var Key: Char);
begin
 with StringGrid do
 begin
  if col = 6 then if key = Chr(13) then calcYears;
 end
end;


procedure TForm.calcYears;
var heute: TDateTime;
    geb, jahr, monat, tag: Word;
    i,code: Integer;
begin
 heute := Now;          
 DecodeDate(heute, jahr, monat, tag);
 with StringGrid do
 begin
  EditorMode := True;                
  if Cells[6,row] <> '' then
  begin
   Val(Cells[6,row], geb, code);    
   Cells[3,row] := IntToStr(jahr-geb)
  end
 end
end;
bis hierhin geht auch alles
jetzt habe ich aber nicht nur das Jahr für die Berechnungsgrundlage sondern möchte das Datum verwenden (20.12.1971)
damit die Berechnung genauer wird.
wie bekomme ich das den jetzt nur hin

Wolfgang Mix 10. Dez 2009 17:00

Re: Geburtsdatum errechnen
 
In der CodeLib hier hättest du ein Beispiel gefunden:

Zitat:

Delphi-Quellcode:
gebdate:=EncodeDate(1950,1,25);
 Edit1.Text:=IntToStr(age(gebdate)); ergibt 59 bei Systemdatum < 25.01.2010

Gruß

Wolfgang

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

Kunoishi 10. Dez 2009 17:08

Re: Geburtsdatum errechnen
 
oh dann schau ich dort mal noch durch :-)
danke

stoxx 10. Dez 2009 18:32

Re: Geburtsdatum errechnen
 
Zitat:

Zitat von Wolfgang Mix
In der CodeLib hier hättest du ein Beispiel gefunden:


könntet ihr solche spitzen Kommentare bitte weglassen?
erstens: wenn das so weitergeht, fragt irgendwann niemand mehr
zweitens: gibt es immer wieder neue Aspekte und Ideen, auch wenn das Thema irgendwo schonmal behandelt wurde
drittens: hättest du schreiben können "da konnte ich folgendes finden"
viertens: einfach gar nicht antworten, wenn man nicht möchte
fünftens: gibt es Menschen, die beim Suchen wirklich nicht so geschickt sind, wie Du, oder vielleicht einfach die falschen Suchwörter eingegeben haben
sechstens: entwickelt sich Technik immer weiter, so dass es vielleicht auch neue Lösungen zu dem Problem geben könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr.
Seite 1 von 2  1 2      

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