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 :

evenement ne se declenche pas


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut evenement ne se declenche pas
    salut je genere des radiobuttons auxquels je associe des evenement onclick dynamiquement dans un radiogroup.
    j'aimerais au lancement du formulaire que un des bouttons soit coché et genere l'evenement correspondant, pour le dernier radioboutton generé j'associe un radiobutton.itemindex=1, donc au lancement du formulaire le dernier radiobutton est coché mais l'evenement n'est pas declenché. je sais pas pourquoi?
    voici un extrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while(grido.DataSource.DataSet.FindNext)do
    begin
    radiogroup1.Items.Add(grido.Fields[7].AsString);
    tcodeindi[i]:=grido.Fields[6].AsString; //pas interessant
    tnomindi[i]:=grido.Fields[7].AsString;  //pas interessant
    radiogroup1.Buttons[i].OnClick:= RadioGroup1.OnClick;
    i:=i+1;
    end;
     radiogroup1.ItemIndex:=1;

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par moustaf_26 Voir le message
    j'aimerais au lancement du formulaire que un des bouttons soit coché et genere l'evenement correspondant, pour le dernier radioboutton generé j'associe un radiobutton.itemindex=1, donc au lancement du formulaire le dernier radiobutton est coché mais l'evenement n'est pas declenché. je sais pas pourquoi?
    Moi je sais ! vous pointez systématiquement sur le radio button n° 2 (s'il existe) avec l'instruction que vous avez donnée...
    J'écrirais plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RadioGroup1.Buttons[RadioGroup1.Items.Count - 1].OnClick := RadioGroup1.OnClick;
    //...
    RadioGroup1.ItemIndex := RadioGroup1.Items.Count - 1;
    Petit rappel, les listes de Buttons ou Items sont indexées de 0 à n-1 pour n éléments...

    Autre chose, j'espère que l'événement RadioGroup1.OnClick n'est pas à nil et que lors de la conception une procédure lui a été affecté, par exemple RadioGroup1Click(Sender: TObject);
    --
    Philippe.

  3. #3
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Bonjour,

    Il faut associer votre méthode au OnClick, pas un autre OnClick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    radiogroup1.Buttons[i].OnClick:= MaFonctionQuiGereLeClick;

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Je dirais volontiers que c'est fait exprès : on peut ne vouloir déclencher que lors d'un changement de l'utilisateur, et pas à l'initialisation...

    Donc tu dois le déclencher manuellement en lui passant le bon Sender (si nécessaire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RadioGroup1.OnClick(radiogroup1.Buttons[radiogroup1.ItemIndex]);
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Je dirais volontiers que c'est fait exprès : on peut ne vouloir déclencher que lors d'un changement de l'utilisateur, et pas à l'initialisation...

    Donc tu dois le déclencher manuellement en lui passant le bon Sender (si nécessaire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RadioGroup1.OnClick(radiogroup1.Buttons[radiogroup1.ItemIndex]);
    ok, je vais essayer une fois au service, mais je vois pas toujours dire que ça pointe sur le 2e button, pour ce qui de radiogroup1.onclick est lié à une procedure donc il n'ya pas de probleme ici.
    Je dirais volontiers que c'est fait exprès : on peut ne vouloir déclencher que lors d'un changement de l'utilisateur, et pas à l'initialisation...

    Donc tu dois le déclencher manuellement en lui passant le bon Sender (si nécessaire) :
    l'evenement est declenché suite au clik de l'utilisateur.en fait je genere un graphique et j'aimerais qu'à l'ouverture du form qu'il il propose un graphiphe et donc un radiobutton coché et declenche l'evenement correspondant.Merci

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Ph. B. a raison :
    Autre chose, j'espère que l'événement RadioGroup1.OnClick n'est pas à nil et que lors de la conception une procédure lui a été affecté, par exemple RadioGroup1Click(Sender: TObject);
    ainsi que SLE

    Si le OnClick du RadioGroup est bien affecté, il est cependant possible que l'événement intervienne avant que l'ItemIndex ne soit changé => mieux vaut dans ce cas utiliser le OnKeyUp (vague souvenir de problèmes similaires).

    Mais pour déclencher manuellement, il suffit d'appeler la procédure RadioGroup1Click ou celle qui a été affectée à RadioGroup1.OnClick, en lui passant le Sender adéquat : nil si ne sert à rien, RadioGroup1, ou RadioGroup.Buttons[radiogroup1.ItemIndex].
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Ph. B. a raison :
    ainsi que SLE

    Si le OnClick du RadioGroup est bien affecté, il est cependant possible que l'événement intervienne avant que l'ItemIndex ne soit changé => mieux vaut dans ce cas utiliser le OnKeyUp (vague souvenir de problèmes similaires).

    Mais pour déclencher manuellement, il suffit d'appeler la procédure RadioGroup1Click ou celle qui a été affectée à RadioGroup1.OnClick, en lui passant le Sender adéquat : nil si ne sert à rien, RadioGroup1, ou RadioGroup.Buttons[radiogroup1.ItemIndex].
    radiogroup1.Buttons[i].OnKeyUp:=rdclik; signale erreur types incompatible liste des parametres different

  8. #8
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Bien sûr, un OnKeyUp n'attends pas les mêmes infos qu'un OnClick !
    Il vous faut une méthodes avec les paramètres attendu par le OnKeyUp...

Discussions similaires

  1. Evenement onrowcommand ne se declenche pas
    Par Msysteme dans le forum C#
    Réponses: 0
    Dernier message: 20/01/2015, 20h41
  2. [debutant]Evenement qui ne se declenche pas
    Par neperien dans le forum Débuter
    Réponses: 3
    Dernier message: 07/05/2013, 15h19
  3. L'evenement onchange de ma combo ne se declenche pas
    Par ndsaerith dans le forum Delphi
    Réponses: 7
    Dernier message: 22/12/2006, 11h55
  4. Evénement clicked ne se déclenche pas
    Par fmolko dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 09/08/2006, 11h53
  5. [TForm.Deactivate] Ne se declenche pas !
    Par kase74 dans le forum Débuter
    Réponses: 15
    Dernier message: 23/06/2005, 16h03

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