1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| // Afficher le calendrier
procedure Calendrier(EditDate: TMaskEdit); overload;
var
DateActuelle: Variant;
X, Y: Integer;
PositionFnt: TPoint;
begin
////////////////////////////////////////////////////////////////////////////////
// UTILISE L'UNITÉ : UDate /////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Créer la fenêtre
Application.CreateForm(TFDate, FDate);
// Récupère la position du TEdit
PositionFnt.X := 0;
PositionFnt.Y := 0;
PositionFnt := EditDate.ClientToScreen(PositionFnt);
X := PositionFnt.X - 2;
Y := PositionFnt.Y + EditDate.Height - 3;
// Spécifie la position de la fenêtre
FDate.Left := X;
FDate.Top := Y;
// Spécifie la date du calendrier
DateActuelle := VerifDate(LeftStr(EditDate.Text, 10));
if DateActuelle = Null then
FDate.MC_Calendrier.Date := Date()
else
FDate.MC_Calendrier.Date := DateActuelle;
// Affiche la fenêtre
FDate.ShowModal;
// Récupère la valeur
if FDate.ModalResult = idOk then
EditDate.Text := DateToStr(FDate.MC_Calendrier.Date)
else if FDate.ModalResult = idCancel then
EditDate.Text := EditDate.Text
else
EditDate.Text := '';
end;
// Vérifie la date tapée et la renvoye sous forme de TDateTime
function VerifDate(Date: String; Erreur: Boolean = True): Variant;
var
FormatDate: TFormatSettings;
begin
GetLocaleFormatSettings(1, FormatDate);
if Length(Date) = 10 then
FormatDate.ShortDateFormat := 'dd/MM/yyyy'
else
begin
FormatDate.ShortDateFormat := 'dd/MM/yyyy hh:nn';
// Vérifie si il y a une heure de saisie
if (Length(Date) > 10) then
if (Date[12] = ' ') and (Date[1] <> ' ') then
begin
Date[12] := '0';
Date[13] := '0';
Date[15] := '0';
Date[16] := '0';
end;
end;
// Configure le format de date pour la base de donnée
if (Trim(Date) = '/ /') or (Trim(Date) = '/ / :') or (Date = '') then
Result := Null
else
try
Result := StrToDateTime(Date, FormatDate);
except
on E: Exception do
begin
if Erreur then
MessageDlg('Erreur lors de la vérification'
+ ' d''une date.'#13#10 + E.Message, mtWarning, 0);
Abort;
end;
end;
end; |
Partager