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 :

Problème avec évènement ..


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut Problème avec évènement ..
    J'ai un problème avec les évènement d'un composant que je crée qui est sous composant de TEdit.

    L'évènement onchange est bien detecté , il affiche donc dans ma Listbox qu'il y a un changement qui s'effectue dans mon composant mais par contre quand je fait un entrée ou un escape il ne m'affiche rien alors qu'il devrait

    Voila la partie du code de l'unité du composant qui traite ces 3 évenements:

    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
    25
    26
    27
     
    ...
    published
     property Options: TPslEditOptions read FOptions write FOptions;
     property OnValidate : TNotifyEvent read FOnValidate write FOnValidate;
     property OnEscape : TNotifyEvent read FOnEscape write FOnEscape;
     
    end; // end des declarations
     
    implementation
     
    procedure TPslEditEx.KeyPressed (var Key: Char);
    begin
       { A completer }
        if Key=#13 then doOnValidate
        else if Key=#27 then doOnEscape;
    end;
     
    procedure TPslEditEx.doOnValidate;
    begin
         FOnValidate(self);
    end;
     
    procedure TPslEditEx.doOnEscape;
    begin
       FOnEscape(self);
    end;
    Et voici la partie du code qui traite ces évenements dans la Mainfenetre

    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
     
    procedure TMainFenetre.FormCreate(Sender: TObject);
    begin
       keditTP:=TPslEditEx.create(self);
       keditTP.Parent:=self;
       keditTP.Left:=50;
       keditTP.Top:=50;
       keditTP.Align:=alTop;
       keditTP.Name:='Test';
       //Name:='Test';
       //Align:=alTop;
       with keditTP do
       begin
      //Options:=[eoValidateOnReturn, eoRestoreOnEscape]
       keditTP.KeyPressed(key);
       keditTP.OnChange := EditChange;
       keditTP.OnValidate := EditValidate;
       keditTP.OnEscape := EditEscape;
       end;
    end;
    Il est évident que j'ai du encore écrire 2, 3 bêtises qui font que ca déconne

    Je pense que c'est a cause du key car je ne met rien dedans je voulais faire un readkey mais il faut utiliser ctr or ma version ne semble pas connaitre quand je le met dans uses, alors je veus passer outre pour connaitre la key mais comme je trouve pas

  2. #2
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonsoir,


    pour commencer, on va retirer de procedure "TMainFenetre.FormCreate(Sender: TObject);" l'instruction "keditTP.KeyPressed(key);"

    Elle ne sert à rien.

    une petite chose en plus, dans le code que tu donnes, le with keditTP ne sert plus.
    c'est tout pour la mainfenetre.

    maintenant, on va s'intéresser au composant.

    1ère chose : on va récupérer les évènements clavier de ton Edit. ceux ci sont récupérés par une procédure appelée KeyPressed déclarée dans le TwinControl, un ancêtre de Tedit.
    elle est protected et dynamic :
    protected signifie que les descendants du composant peuvent l'appeler
    dynamic donne la possibilité de la surcharger.

    on va donc écrire ceci

    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
    Type TmyEdit = Class(Tedit)
    Private
    .
    .
    protected
      procedure KeyPress(var Key: Char); override;
    Public
     
    procedure TmyEdit.KeyPress(var Key: Char);
    Begin
      if Key=#13 then DoOnValidate
        else if Key=#27 then DoOnEscape
      else
      inherited;
    End;
    ensuite une petite correction : il faut vérifier que ta propriété est assignée (relier à une procédure) pour l'appeler. sinon, tu auras une erreur lorsqu'elle ne sera pas assignée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TPslEditEx.doOnValidate; 
    begin 
      If assigned(FOnValidate) then FOnValidate(self); 
    end; 
     
    procedure TPslEditEx.doOnEscape; 
    begin 
      If assigned(FOnEscape) then FOnEscape(self); 
    end;
    bonne continuation

  3. #3
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    Merci ca marche !

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

Discussions similaires

  1. Problème avec événement OnClick de DbGrid
    Par melles dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/10/2008, 17h26
  2. problème de variable avec événement
    Par seb-oulba dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2006, 17h16
  3. problème avec l'événement onBlur
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2006, 11h48
  4. [wxpython] problème avec les événements souris
    Par kalimero dans le forum wxPython
    Réponses: 2
    Dernier message: 13/11/2005, 15h42
  5. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07

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