IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Reculer TDateTimePicker.MinDate sans erreur


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut Reculer TDateTimePicker.MinDate sans erreur
    Bonjour
    Et bonne année 2008 à toutes et tous

    Pour limiter la saisie d'une date via un TDateTimePicker à une année civile donnée, sélectionnée dans un TComboBox, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        CalAjoutOp.MinDate:=encodedate(strtoint(ListAnnees.Text),1,1);
        CalAjoutOp.MaxDate:=encodedate(strtoint(ListAnnees.Text),12,31);
    Lorsque je change l'année dans ma ComboBox, par ex de 2007 je passe à 2008, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure Tpal.ListAnneesChange(Sender: TObject);
    begin
        CalAjoutOp.MinDate:=encodedate(strtoint(ListAnnees.Text),1,1);
        CalAjoutOp.MaxDate:=encodedate(strtoint(ListAnnees.Text),12,31);
    end;
    Et là, ça déclenche une exception, car le MinDate que je demande est postérieur au Maxdate.
    Ce qui se comprend d'un point de vue logique, mais est aberrent du point de vue de la manipulation de ce compo
    Et si j'essaie de contourner le pb en fixant d'abord le MaxDate, je retrouve la même exception en passant cette fois de 2008 à 2007
    Même si l'exeception ne plante pas le programme, c'est pas... disons intellectuellemnt satisfaisant

    Si qqn a une soluce, je suis preneur

    -----------------------------------------
    Oups! j'aurais du ouvrir la discussion dans le sous forum composants

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Ben la soluce c'est de tester si la nouvelle date est inférieure ou supérieure à la première, et selon le cas, modifier d'abord MinDate ou MaxDate
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Mets MinDate à 0, définis MaxDate puis MinDate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.ComboBox1Change(Sender: TObject);
    var
      Annee: Word;
    begin
      with TComboBox(Sender) do Annee := StrToInt(Items[ItemIndex]);
      with DateTimePicker1 do
      begin
        MinDate := 0;
        MaxDate := EncodeDate(Annee, 12, 31);
        MinDate := EncodeDate(Annee, 1, 1);
      end;
    end;
    @+ Claudius

  4. #4
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut
    Ben voilà

    Les idées les plus simples sont souvent les plus pertinentes.

    Fallait juste réfléchir un peu
    On va mettre ça sur le compte du réveillon...

    Merci les gars

    N'empêche que le choix du concepteur du compo est discutable : si je définit un MinDate postérieur à "l'ancien MaxDate", c'est que logiquement cette dernière doit aussi être modifiée. On aurait pu imaginer dans ce cas, un MaxDate qui prend automatiquement la même valeur que le nouveau MinDate...

    Bon, je sais ça se discute


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lien <a href> sans erreur
    Par loady dans le forum Langage
    Réponses: 3
    Dernier message: 12/07/2006, 00h14
  2. [Upload] pb upload fichier sans erreur
    Par guns17 dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2006, 14h30
  3. comment faire un group by sans erreur
    Par phpaide dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/04/2006, 09h11
  4. Restaurer ma Base sans Erreur???
    Par touhami dans le forum Connexion aux bases de données
    Réponses: 9
    Dernier message: 08/03/2006, 17h04
  5. REquete sans erreur sql qui n'agit pas ........
    Par Skam dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/02/2005, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo