Controle des champs DateEdit

gedeon7 - 27 juin 2017 à 09:52
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 - 28 juin 2017 à 16:46
Bonjour,
je suis gedeon, je viens de commencé Delphi et j'ai un problème de controle de champs.je veux controlé les champs de date.je veux donné un intervall de date;Date Min et Max.Merci

2 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
Modifié le 28 juin 2017 à 15:19
Bonjour,

et bien venu ;)

pour les besoin du teste j'ai mis 3 TDateTimePcker et 1 TButton sur une fiche;

Dans les uses il faut mettre "DateUtils"
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    DateTimePicker3: TDateTimePicker;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1        : TForm1;

implementation

{$R *.dfm}
uses DateUtils;


procedure TForm1.Button1Click(Sender: TObject);
var
  DateMin,
  DateMax,
  DateTest: TDateTime;
begin
  DateMin := DateTimePicker1.DateTime;
  DateMax := DateTimePicker2.DateTime;
  DateTest := DateTimePicker3.DateTime;
  if WithinPastDays(DateMin, DateTest, DaysBetween(DateMin, DateMax)) then
    ShowMessage('Dans l''intervalle')
end;

end.


Cordialement,

    
@+ Cirec
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
28 juin 2017 à 14:21
Oui, soit le bienvenu dans l'univers Delphi.

Petite question sympa qui nous rappelle qu'on a tous débuté ;-)
...et qu'on a pas fini d'apprendre !

Si tu ne veux pas utiliser DateUtils (?), ou si tu utilises une très vieille version de Delphi qui ne dispose pas des fonctions "WithinPastDays" et "DaysBetween", voici une petite fonction qui peut dépanner :

function IsInInterval(DateMini, DateMaxi, DateTest: TDate): Boolean;
begin
  Result := not (Int(DateTest) < Int(DateMini)) and not (Int(DateTest) > Int(DateMaxi));
end;

que tu peux tester avec 3 TDateTimePicker :

procedure TForm1.DateTimePickerTestChange(Sender: TObject);
begin
  if IsInInterval(DateTimePickerMini.Date, DateTimePickerMaxi.Date, DateTimePickerTest.Date) then
    Label1.Caption := 'dans l''intervalle'
  else
    Label1.Caption := 'pas dans l''intervalle'
end;


0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 juin 2017 à 15:19
Salut,
ça fait plaisir de croiser quelqu'un ici, surtout un ancien ^^
je croyais être le dernier à passer par là (^_^)

Sinon tu as parfaitement raison !!!

On ne pense plus à la simplicité quand on a "enfin intégré" l'existence et l'utilisation de toutes ces fonctions et procédures misent à notre disposition qui, disons le, nous facilite grandement la vie.

Merci pour ce rappel ;)
et du coup ça m'a permis de corriger ma faute d'orthographe sur "Intervalle" on dira que c'est à cause de l'habitude d'écrire du code en Anglais #-_-# :p

Cordialement,
@+
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
28 juin 2017 à 16:46
Salut Cirec,

plaisir partagé !

Il y a tellement d'approches pour résoudre un problème qu'il serait dommage de se priver, et chaque solution a ses mérites et conviendra à l'un ou à l'autre, et selon les situations, et selon son goût...

"c'est à cause de l'habitude d'écrire du code en Anglais" : ça c'est sûr, et ça nous nous rend rend pas pour autant meilleur en anglais... :-P

Bien cordialement !
0
Rejoignez-nous