Controle des champs DateEdit

- - Dernière réponse : korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
- 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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
0
Merci
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
Commenter la réponse de Cirec
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
0
Merci
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;


Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
-
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,
@+
korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
-
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 !
Commenter la réponse de korgis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.