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

 Delphi Discussion :

Overrider un event d'un composant spécifique


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Overrider un event d'un composant spécifique
    Bonjour, j'ai une centaine de spinEdit dans mon programme de test et j'aimerai que tous les events onChange appellent la même procédure.

    J'ai commencé par surcharger le composant mais je pense que ma syntaxe n'est pas bonne :

    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
    type
      TSpinEditPiece = class(TSpinEdit)
      public
        constructor Create(AOwner: TComponent); override;
        procedure Change; override;
      end;
     
    constructor TSpinEditPiece.Create(AOwner: TComponent);
    begin
      inherited;
    end;
     
    procedure TSpinEditPiece.Change;
    begin
      inherited;
      ShowMessage('coucou');
    end;
    Pouvez-vous m'éclairer ?

    Merci.
    Le temps est le pire enemi de l'homme

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut
    Bonjour,

    si tu fais, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Var
      Sp1 :  TSpinEditPiece ;
    ...
    procedure TForm1.FormShow(Sender: TObject);
    begin
      Sp1:= TSpinEditPiece.Create(Self) ;
      Sp1.Parent := Self ;
      ...
    end;
    Ton code fonctionne bien (Ah que Coucou ! )

    A+
    Charly

    PS : je pense que tu peux enlever ton Create qui ne sert pas ?

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    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 858
    Points : 11 300
    Points
    11 300
    Billets dans le blog
    6
    Par défaut
    Pourquoi ne pas parcourir la propriété Components de leur Owner (s'il y en a un), et attribuer une procédure commune à leur événement OnChange ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i:=0 to Form1.ComponentsCount-1 do
    if Form1.Components[i] is TSpinEdit
    then TSpinEdit(Form1.Components[i]).OnChange:=MySpinEditOnChange;
    Mais ce n'est pê pas aussi simple ?
    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 !

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Si ils sont tous dans la meme unité, tu peux simplement redéfinir la classe TSpinEdit (petite astuce de sioux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TSpinEdit = class(Spin.TSpinEdit)
      public
        procedure Change; override;
      end;
    Sinon, le plus simple est encore de créer ton propre composant, de l'ajouter à la palette, et de remplacer les spinEdits par le tien (GExperts permet de le faire simplement)

Discussions similaires

  1. Créer des composants spécifiques en utilisant l'interface graphique native
    Par mgoudet dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 24/01/2011, 11h29
  2. asp.net mvc et composant spécifique
    Par postb99 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 02/03/2009, 16h09
  3. Custom Event entre deux composants
    Par Will66 dans le forum MXML
    Réponses: 1
    Dernier message: 03/01/2008, 13h20
  4. Composant spécifique ou image (pour notation via la souris)
    Par Leesox dans le forum Composants VCL
    Réponses: 5
    Dernier message: 13/10/2007, 10h04
  5. Ajout Event sur composant déclaré dinamiquement
    Par matrix_ceg dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/04/2007, 19h33

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