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

Langage Delphi Discussion :

Question sur TNotifyEvent


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    866
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 866
    Par défaut Question sur TNotifyEvent
    Bonjour,

    Il y 12 ans que j'ai codé ce truc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm90.FormShow(Sender: TObject);
    var TmpEvt : TNotifyEvent;
    begin
     
    tmpevt := AdvOfficeRadioGroup1.Onclick;
    AdvOfficeRadioGroup1.Onclick:= nil;
    AdvOfficeRadioGroup1.ItemIndex:=2;
    AdvOfficeRadioGroup1.Onclick:=TmpEvt ;
     
    suite du traitement ....
     
    end;

    A quoi sert cette variable TNotifyEvent !!
    J'ai du faire ça pour initialiser le radioGroup, mais aujourd'hui je ne comprends plus ce que j'ai fait ?


    Cordialement

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    C'est surement pour éviter que le OnClick se produise lors du ItemIndex

    Regarde ce sujet sur les Helper avec un SilentItemIndex pouvant rendre le code plus compréhensible si tu migres sur un Delphi supérieur à XE2 ...
    Si AdvOfficeRadioGroup1 hérite d'un TRadioGroup, tu peux d'ailleurs directement utiliser TRadioGroupSliteHelper (suffit de faire un uses), ton code sera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm90.FormShow(Sender: TObject);
    begin
      AdvOfficeRadioGroup1.SilentItemIndex:=2;
     
    suite du traitement ....
     
    end;
    Si AdvOfficeRadioGroup1 hérite d'un TCustomRadioGroup faut juste adpater le Helper class helper for TRadioGroup.
    Si AdvOfficeRadioGroup1 hérite d'un composant autre, c'est TMS, il aime tout réinventé, class helper for TAdvOfficeRadioGroup.


    Même principe pour un SilentChecked
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 469
    Par défaut
    Tu n’es pas le seul à te poser ce genre de question après avoir relu un vieux bout de code

    TmpEvt est une variable temporaire qui sert à stocker le gestionnaire d’événement OnClick du composant AdvOfficeRadioGroup1.
    L’idée derrière cette manipulation est d’empêcher l’exécution de l’événement OnClick pendant que tu modifies ItemIndex, pour éviter que l’action ne déclenche une logique involontaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm90.FormShow(Sender: TObject);
    var TmpEvt : TNotifyEvent;
    begin
     
    tmpevt := AdvOfficeRadioGroup1.Onclick;
    AdvOfficeRadioGroup1.Onclick:= nil;
    AdvOfficeRadioGroup1.ItemIndex:=2;
    AdvOfficeRadioGroup1.Onclick:=TmpEvt ;
     
    suite du traitement ....
     
    end;
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée.

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