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 :

déclaration de procedure


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Points : 49
    Points
    49
    Par défaut déclaration de procedure
    je veux faire une procédure qui accepte des objets de types differents
    exemple : maprocedure(objet:TObjet1);
    maprocedure(objet:TObjet2);
    etc...
    ces objets ont une propriété commune que j'utilise dans la procedure et je peux pas faire overload pour tout les types parceque je ne connais pas le nombre d'objets et le transtypage ne marche pas.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 832
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 832
    Points : 13 582
    Points
    13 582
    Par défaut
    Cette propriété devrait être déclarée dans une classe ancêtre et tes autres objets dériver de cette classe.

    L'objet passé à ta procédure sera du type classe ancêtre.

  3. #3
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    tout à fait.

    tout comme les propriétés Width, Height, Caption, Color que possède la pluparts des composants VCL et qui sont toutes héritées de TControl.


    exemple par le code :

    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
    type
      TBaseObject = class(TObject)
      private
        fBP : integer;
      published
        property BaseProp : integer read fBP write fBP default 0;
      end;
     
      TObjectA = class(TBaseObject)
      published
        property BaseProp default 1;
      end;
     
      TObjectB = class(TBaseObject)
      published
        property BaseProp default 2;
      end;
     
    function IsBaseObject(aObj : TObject): boolean;
    begin
      result := aObj is TBaseObject;
    end;
     
    function IsObjectA(aObj : TBaseObject): boolean;
    begin
      result := aObj is TObjectA;
    end;
     
    function IsObjectB(aObj : TbaseObject): boolean;
    begin
      result := aObj is TObjectB;
    end;

  4. #4
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut,

    une autre solution serait l'utilisation d'une interface contenant la propriété commune. les différents objets doivent evidemment la supporter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure MaProcedure(const AIntf: IInterfaceAvecPropCommune);

Discussions similaires

  1. déclaration d'une Procedure
    Par stfanny31 dans le forum Langage
    Réponses: 7
    Dernier message: 29/01/2012, 21h38
  2. Déclaration de fonction/procedure static
    Par joce21 dans le forum Débuter
    Réponses: 4
    Dernier message: 25/01/2012, 19h21
  3. Réponses: 3
    Dernier message: 11/01/2008, 23h15
  4. Réponses: 2
    Dernier message: 27/05/2002, 20h46
  5. Réponses: 8
    Dernier message: 17/05/2002, 10h08

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