Manipulation : utilisation des fonctions Date et Heure
Objectif : à la fin de cette manipulation le stagiaire serait capable d’utiliser les
fonctions date et heure étudiées.
Enonce :
Soit l’application Pdate qui permet de calculer l’Age et l’ancienneté d’un employé.
Le projet comprend une seule fiche fdate ;en bas de la fiche deux boutons calcul et fermer.
Au click de fermer l’application se ferme.
Au clic de calcul, on doit vérifier :
1. la validité de la date de naissance : dans le cas où elle est valide l’âge est calculé et
affiche dans la zone de saisie associée sinon un message d’erreur est affiché
2. la validité de la date de recrutement : dans le cas où elle est valide ;on vérifie que
la date de recrutement doit être supérieur à la date de naissance et que la
différence doit être au moins 18 (des messages d’erreurs seront affichés dans le
cas contraire) et enfin l’ancienneté est calculée et affichée dans la zone de saisie
associée.
Solution
1. créer un nouveau projet puis l’enregistrer sous :Pdate et l’unité Udate
2. deposer sur la fiche les composants suivants :
Composant propriéte valeur
Label caption Nom :
Prénom :
Né(e) le :
Date de recrutement :
Age :
Ancienneté :
Maskedit Name menom
editmask >LLLllllllllll;1;
Name Meprenom
Editmask >LLLllllllllll;1;
Name medaten
Editmask 90\/90\/0000;1;
Name Medater
Editmask 90\/90\/0000;1;
Edit Name Eage
Readonly True
name Eanc
readonly true
Button Name Calcul
Caption Calcul
Name Fermer
caption fermer
procedure Tfsuivi.calculClick(Sender: TObject);
var d1,d2:Tdatetime; y,m,d,age,anc: integer;
begin
{avant de calculer l'age je dois vérifier que
la date de naissanse saisie est valide}
d:=strtoint(copy(medaten.Text,1,2));
m:=strtoint(copy(medaten.Text,4,2));
y:=strtoint(copy(medaten.Text,7,4));
if isvaliddate(y,m,d) then
begin
D1:=strtodate(medaten.text);
age:=yearsbetween(d1,date);
eage.Text:=inttostr(age)
end
else
begin
showmessage('date de naissance non valide'); medaten.SetFocus
end;
d:=strtoint(copy(medater.Text,1,2));
m:=strtoint(copy(medater.Text,4,2));
y:=strtoint(copy(medater.Text,7,4));
{avant de calculer l'ancienneté je dois vérifier que
la date de recrutement saisie est valide}
if isvaliddate(y,m,d) then
begin
D2:=strtodate(medater.text);
if d1>=d2 then
begin
showmessage('la date de naissance est supérieure à date de recrutement ') ;
medater.SetFocus
end
else
if yearsbetween(d1,d2) < 18 then
begin
showmessage('l''employé doit avoir au moins 18 ans au recrutement ') ;
medater.SetFocus
end
else
begin
anc:=yearsbetween(d2,date);
eanc.Text:=inttostr(anc)
end
end
else
begin
showmessage('date de recrutement non valide') ;
medater.SetFocus
end;
end;
procedure Tfsuivi.fermerClick(Sender: TObject);
begin
fsuivi.close
end;