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 :

TPersitent et évenement


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut TPersitent et évenement
    Salut tout le monde,

    Je voudrais savoir comment on fait pour qu'un évenement qui est présent dans une classe TPersistent soit accessible depuis la classe qui l'implemente

    J'ai fait ce petit bou de code mais cela ne fonctionne pas.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    type
      TPlugIn=class(TPersistent)
      private
        FOnEtat: TNotifyEvent;
      protected
        procedure AssignTo(Dest: TPersistent); override;
      published
        property OnEtat:TNotifyEvent read FOnEtat write FOnEtat;
      end;
     
      TEssai=class(TComponent)
      private
        FPlugIn:TPlugIn;
        procedure SetPlugIn(const Value: TPlugIn);
      public
        Constructor Create(AOwner: TComponent); override;
        Destructor Destroy; override;
      published
        property PlugIn:TPlugIn read FPlugIn write SetPlugIn;
      end;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('HCIM', [TEssai]);
    end;
     
    { TEssai }
     
    constructor TEssai.Create(AOwner: TComponent);
    begin
      inherited;
      FPlugIn:=TPlugIn.Create;
    end;
     
    destructor TEssai.Destroy;
    begin
      FPlugIn.Free;
      inherited;
    end;
     
    procedure TEssai.SetPlugIn(const Value: TPlugIn);
    begin
      FPlugIn.Assign(value);
    end;
     
    { TPlugIn }
     
    procedure TPlugIn.AssignTo(Dest: TPersistent);
    begin
      if Dest is TPlugIn then
      begin
        TPlugIn(Dest).OnEtat:=OnEtat;
      end
      else
        inherited AssignTo(Dest);
    end;
     
    end.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Un Evènement ce n'est qu'une propriété vers une procédure rien de plus !
    Pas de différence avec d'autre propriété

    Ensuite, Quel est le problème ?
    ça compile, il ne se trompe pas (vu qu'il n'y a pas de paramètre, il ne fait pas la confusion appel et affectation), as-tu un message d'erreur ?
    Comment appelle tu cela ?

    n'aurais-tu pas oublier le override sur le AssignTo ?
    Car je suppose que tu appelle en fait Assign, et que celui-ci n'appele par le bon AssignTo ...
    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 averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Désolé j ai oublié de donner une précision.

    En fait vu que mon TPersitent va apparaitre dans l'inspecteur d'objet, je pensais que son évenement allait, lui aussi apparaitre dedans or, ce n'est pas le cas.

    Donc je me pose la question de comment il faut faire pour arriver à ça.

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    J'ai trouvé ça , mais je vois pas trop comment cela fonctionne.

    http://dn.codegear.com/article/32956

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Ah, dans, l'IDE, oh c'est la plaie !
    Regarde dans ADOReg.pas, comme ils utilisent RegisterPropertyEditor, ça devrait t'aider à comprendre l'article de codegear ...
    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

  6. #6
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    C'est bon j ai réussi, mais bon quand il y a deux Tpersistents dans la le Tcomponent, ça marche pas super bien ...

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Si tu pouvais partager ton code, pour les futures demandes similaires, ...
    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

  8. #8
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    En fait il y a un source dans le lien que j ai mis plus haut.
    J'ai rien inventé, il suffit de reprendre la meme chose.

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2005, 22h19
  2. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  3. Réponses: 6
    Dernier message: 02/05/2005, 14h00
  4. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  5. Réponses: 4
    Dernier message: 21/05/2004, 11h24

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