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

Delphi Discussion :

Checkbox - validation conditionnelle


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut Checkbox - validation conditionnelle
    Bonjour

    Je voudrais mettre une condition sur l'activation ou la désactivation d'une checkbox.
    Pour cela, j'ai commencé par implémenter l'évènement [OnClick] et dedans je défini un bout de code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (MyCheckBox.checked) and (Application.MessageBox('Etes-vous sure ?','',MB_OKCANCEL)=IDOK) then 
       MyCheckBox.Checked = false;
    Le problème est que lorsque je décoche (ou recoche) ma checkbox, l'évènement se reproduit. Quelqu'un saurait-il comment contourner ce problème et modifier l'état de la checkbox SANS déclencher l'évènement ?

    Merci d'avance
    Basteo

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    autre astuce; met le chekbox sur une panel, et selon ton choix change le enable du panel

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut
    Bonjour

    J'ai mal choisi mes termes au début du texte : ce n'est pas activé/désactivé mais plutôt coché/décoché ma checkbox.

    Donc, au final, je voudrais pouvoir demander à l'utilisateur s'il désire oui ou non valider son choix de coché/décoché la checkbox.

    Merci pour la rapidité
    Basteo

  4. #4
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut
    ARGH !! Même si j'aimais pas trop l'idée d'une variable globale pour ça, ça paraissait sympa, mais en fait l'idée ne fonctionne pas.

    Tout se passe comme si l'évènement onClick attendait d'avoir fini de se déroulé pour placer la case à cocher dans l'état demandé lors de l'action onclick.

    Je trouve ça dommage qu'il n'y ai pas une méthode qui permette de valider ou non le choix de l'utilisateur (un peut comme les OnChange et OnChanging d'un PageControl).


    Basteo.

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    un bricolage
    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.CheckBox2Click(Sender: TObject);
    var  b:boolean;
    begin
         b:=CheckBox2.Checked;
         if not b then exit;
         CheckBox2.OnClick:=nil;
         CheckBox2.Checked:=not b;
         if (b) and (Application.MessageBox('Etes-vous sure ?','',MB_OKCANCEL)=IDOK)  then
         begin
            CheckBox2.Checked:=b;
         end;
         CheckBox2.OnClick:=CheckBox2Click;
    end;

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Par défaut
    Une façon peut-être plus élégante de le faire: utiliser l'événement OnMouseDown du contrôle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.CheckBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      if (Application.MessageBox('Etes-vous sur ?','',MB_OKCANCEL)=IDOK) then
       CheckBox1.checked := not CheckBox1.checked;
    end;
    Avantage: ça fonctionne parfaitement

    Inconvénient: si on click sur le label de la checkbon, l'événement est généré. De plus, le contrôle ne réagit plus aux événements du clavier... On peut contourner le problème en gérant également l'événement OnKeyPress, mais ça devient vite le bordel ^^

  7. #7
    Membre éclairé Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Par défaut
    Tu pourrais par exemple, créer un Boolean en globale. Ensuite, dans ton code, tu teste si sa valeur est positive ou négative, et si elle est positive, tu execute ton code (et tu affecte false à ta variable bien sûr !). Ca devrait faire quelque chose de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (MyCheckBox.checked) and (Application.MessageBox('Etes-vous sure ?','',MB_OKCANCEL)=IDOK) and (TaVariable=false) then
    begin
      MyCheckBox.Checked = false;
      TaVariable:=true;
    end;

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/11/2007, 15h18
  2. Peut-on faire une validation conditionnelle ?
    Par chriscoolletoubibe dans le forum Struts 2
    Réponses: 2
    Dernier message: 06/09/2007, 08h22
  3. Checkbox validées par un commandbutton
    Par toma65 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/05/2007, 14h24
  4. [VB.NET] Checkbox : Validation
    Par BenoitM dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/09/2006, 13h16
  5. [HTML][checkbox] valider par défault
    Par hutchuck dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 28/11/2005, 11h44

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