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 :

Question sur le Tupdown


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut Question sur le Tupdown
    Bonjour,

    Dans mon application, un Tupdown associé à un Tedit.
    Au début du programme le Tedit contient une valeur Integer, par exemple 233.
    L'incrément du Tupdown est de 10.
    Si je clique sur le bouton haut de ce Tupdown, le Tedit passe à 240, alors que je souhaiterais qu'il passe à 243 et à 223 avec le bouton bas.

    Comment pourrais-je faire pour parvenir au résultat escompté?

    Merci de votre aide.

    Cordialement.
    Pierre

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    J'avais déjà vu ce fonctionnement.. du coup j'ai pris un TSpinEdit pour ne pas recoder quelque chose ..

  3. #3
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Salut,

    tu peux t'en sortir avec l’évènement OnChangingEx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //uses CommCtrl; // pour UDM_SETPOS
    procedure TUDemoMain.UpDown1ChangingEx(Sender: TObject;
      var AllowChange: Boolean; NewValue: Smallint;
      Direction: TUpDownDirection);
    begin
      AllowChange := False;
      with (Sender as TUpDown) do
      case Direction of
        updUp : SendMessage(Handle, UDM_SETPOS, 0, MakeLong(Position + Increment, 0));
        updDown:SendMessage(Handle, UDM_SETPOS, 0, MakeLong(Position - Increment, 0));
      end; // case
    end;
    il faudra encore peaufiner le code .. notamment vérifier les limites
    mais le principale y est

    ps: j'avais testé le code original sous D7 D2009 et Berlin 10.1
    et dans tous les cas au premier incrément il passait de 233 à 250 ou de 233 à 220 !!!
    donc encore un autre comportement que celui que tu décris !
    sous Win7 SP1

    Edit:
    après y avoir regardé de plus près ...
    c'est encore plus simple !! pas besoin de contrôler les limites et tout fonctionne parfaitement tel quel

  4. #4
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    re,

    petite précision:

    avec le code ci-dessus ... si l'on a
    1. Max := 300
    2. Min := 0
    3. Increment := 10
    4. Position := 233

    Position restera dans l'intervalle [3..293]

    pour obtenir un intervalle [Min..Max]
    il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TUDemoMain.UpDown1ChangingEx(Sender: TObject;
      var AllowChange: Boolean; NewValue: Smallint;
      Direction: TUpDownDirection);
    begin
      AllowChange := False;
      SendMessage((Sender as TUpDown).Handle, UDM_SETPOS, 0, MakeLong(NewValue, 0));
    end;
    voilà ça devrait convenir

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonsoir,

    merci à tous pour vos réponses, je teste cela et reviens vers vous pour rendre compte...

    Cordialement
    Pierre

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    La réponse de Cirec est parfaite, tout fonctionne à souhait.

    merci infiniment.

    Cordialement
    Pierre

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

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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