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 :

pb changement etat avec castage


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut pb changement etat avec castage
    Bonjour,

    voila je bloque sur une la procedure suivante, mon but est de gerer des combobox de type "oui/non", donc si une est coché l'autre doit se decocher automatiquement.
    Pour ca j'ai mis des tags qui se suivent, par exemple 1&2 , 3&4 ... 15&16 etc.. et je verifie si le tag du sender est pair ou impair pour trouver quel est son"voisin".
    Apres je recupere le combobox a modifier grace a son tag, mais je n'arrive pas a modifier sa propriété "checked"
    Je ne vois vraiment pas ou est le pb, merci pour votre aide


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    procedure TFenetreRectoOM.gestion_checkbox(sender:tobject);
    var
    i,j:integer;
    begin
     
      if odd((sender as TCheckBox).Tag)=true then j:=1
          else j:=-1;
     
     
    if (sender as TCheckBox).Checked=true then
     
     for i:=0 to FenetreRectoOM.ComponentCount-1 do
      begin
          if FenetreRectoOM.Components[i].Tag=(sender as TCheckBox).Tag+j then
          begin
     
              (FenetreRectoOM.Components[i] as TCheckbox).Checked:=false;
     
          end;
      end;
     
     
    end;

  2. #2
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Et pourquoi pas TRadioButton ??

  3. #3
    GO
    GO est déconnecté
    Membre régulier Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Que veut dire odd(( ?

    je pense que ton initialisation de la variable j est fausse, après tu tombes sur un mauvais composant peut-être même pas un Tcheckbox.

    waiting... 8)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    le odd() sert a verifier si le tag est pair ou impair, pour trouver son checkbox"voisin".
    sinon je suis sur a 100% de tomber sur le bon objet qui est un tcheckbox, vu que je faisais une verif dans la boucle avec un messagedlg du "(fenetreRectoOM.Components[i] as TCheckbox).name" et c'etait bien le checkbox voisin.

  5. #5
    GO
    GO est déconnecté
    Membre régulier Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    et si tu mettais le de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FenetreRectoOM.Components[i].Tag=(sender as TCheckBox).Tag+j
    du coté gauche.

    8)

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i:=0 to FenetreRectoOM.ComponentCount-1 do
      begin
        if FenetreRectoOM.Components[i] is TCheckBox then
            if (FenetreRectoOM.Components[i] as TCheckBox).Tag = (sender as TCheckBox).Tag+j then
          begin
              (FenetreRectoOM.Components[i] as TCheckbox).Checked:=false;
          end;
      end;
    Essaie comme ca

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    Je tiens a preciser que je n'ai pas de probleme pour recuperer l'objet que je veux modifier, j'ai fait des verifs et je tombe a 100% sur l'objet que je vise, le probleme est que la propriété checked n'est pas modifiée, je n'ai pas d'erreur, il ne se passe rien c'est tout. On dirais qu'en lecture il n'y a pas de probleme mais que je n'arrive pas a ecrire sur les propriétés de cet objet.

  8. #8
    GO
    GO est déconnecté
    Membre régulier Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TCheckbox(FenetreRectoOM.Components[i]).Checked:=false;
    8)

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i:=0 to FenetreRectoOM.Controlcount -1 do
      begin
        if FenetreRectoOM.Controls[i] is TCheckBox then
            if (FenetreRectoOM.Controls[i] as TCheckBox).Tag = (sender as TCheckBox).Tag+j then
          begin
              (FenetreRectoOM.Controls[i] as TCheckbox).Checked:=false;
          end;
      end;
    Essaie avec Controls au lieu de components

  10. #10
    GO
    GO est déconnecté
    Membre régulier Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    attention à ce que tes checkbox ne soient pas sur un panel ou un conteneur de ce genre auquel cas tu devra parcourir les composants contenus avec un second compteur.

    si ma mémoire est bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tcheckbox(Tpanel(form.component[i]).component[j]).checked:=false
    8)

  11. #11
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par Malone
    Je tiens a preciser que je n'ai pas de probleme pour recuperer l'objet que je veux modifier, j'ai fait des verifs et je tombe a 100% sur l'objet que je vise, le probleme est que la propriété checked n'est pas modifiée, je n'ai pas d'erreur, il ne se passe rien c'est tout. On dirais qu'en lecture il n'y a pas de probleme mais que je n'arrive pas a ecrire sur les propriétés de cet objet.
    Alors, ça n'est pas tout simplement un pb de rafraîchissement, à régler avec Update, Paint ou Invalidate ?

  12. #12
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 369
    Points
    11 369
    Billets dans le blog
    6
    Par défaut
    pourquoi ne pas les créer ou les recenser dans un tableau afin d'éviter des itérations de ComponentCount ?

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    bon ben je ne vois vraiment pas d'ou viens le pb, j'ai testé en passant par mon groupbox vu que les items sont dessus mais rien.

  14. #14
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Je réinsiste sur ce qu'a dit DMO : pourquoi ne pas se servir des TRadioButton dont c'est la fonction même de se désélectionner les uns les autres... :

    On a l'impression que tu cherches à réinventer le roue...

    @++

  15. #15
    GO
    GO est déconnecté
    Membre régulier Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    ça ne viendrait pas de ton évènement oncheck ou onclick du checkbox qui rend récurrent ton test et décoche à chaque fois ta checkbox malgré que tu clique dessus.

    ou bien ton test de componentcount est à revoir pense au conteneur, on parcours tous les composants qu'il contient avec un second compteur.

    A+ 8)

  16. #16
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Ou bien, comme le dit rsc plus haut, un problème de refresh... Un Repaint ou un Invalidate devrait peut-être résoudre ce problème...

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/10/2005, 15h49
  2. creation etat avec dernier enregistrement
    Par amocco dans le forum Access
    Réponses: 1
    Dernier message: 26/09/2005, 12h00
  3. Changement extension avec TSaveDialog
    Par Monteil Jérôme dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/09/2005, 15h31
  4. Etat avec un tri
    Par krfa1 dans le forum Access
    Réponses: 3
    Dernier message: 03/09/2005, 20h19
  5. [CR7] liaison sous etat avec etat principal
    Par brahime dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 04/01/2005, 11h58

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