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 :

Création de composant (protected, published)


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Création de composant (protected, published)
    Bonjour,

    J'ai besoin d'un petit coup de pouce, je souhaiterai travailler de manière profesionnelle comme expliqué ci-dessous :
    Une attitude plus professionnelle aurait été de créer une classe TCustomDropImage dont les nouvelles propriétés seraient déclarées protected, puis d'en dériver une classe TDropImage où l'on redéfinirait ces propriétés comme published. Cela permettrait de créer un autre composant améliorant encore le TDropImage mais ne souhaitant pas que certaines de ses propriétés soient publiques. Nous laisserons ce point de côté pour des raisons de facilité.
    Je cherche un exemple tout simple de cette utilisation.
    Je ne sais pas trop comment déclarer mes deux classes via si j'ai bien compris les instructions protected et published.

    Merci,
    ZiP

  2. #2
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    TCustomDropImage = class(TAncetre)
    private
      fBool: Boolean;
    protected
      property Bool: Boolean read fBool write fBool;
    end;
     
    TDromImage = class(TCustomDropImage)
    published
      property Bool;
    end;
    Akim Merabet

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    en effet c'est pas plus compliqué.
    Juste un petit mot sur le principe : sous delphi on ne peux pas reduire la portee des propriétés, c'est a dire qu'une proprietee rendue publique ne peut etre rendue privee plus tard.

    donc pour eviter de devoir tout reecrire pour supprimer une proprietee ou de se la trainer dans les classes filles, on intercale entre la classe mere et la classe fille une classe "Custom".

    Cette classe "Custom" implemente TOUTES les Property de la classe fille, mais avec une portee "protected" (du moins pour celle qui le requierent).

    La classe Fille ne fait que rendre publique les property de la classe Custom.

    De cette maniere utiliser la classe "Custom" reviendrais a manipuler une instance de la classe fille au travers d'une variable de la classe mere.

    Donc si on desire supprimer une property, on derive de la classe custom, pour beneficier de toutes les fonctionnalitées de la classe fille, tout en ne rendant publique que les property que l'on desire (rendant ainsi "privee" celles que l'on voulais supprimer de la classe fille).

    Sinon la difference entre Protected/Published c'est juste une question de portee et d'exploitation des property.
    Protected n'est visible qu'au sein d'une classe et de ses sous classes (une sorte de private elargie aux sous classes).
    Published est equivalent a Public mais implemente aussi une serie de fonctionnalitées apellée RTTI, qui permet a l'ide Delphi de les manipuler via l'inspecteur d'objet. Just utile pour creer des composants que l'on instalera dasn L'ide.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Merci, je vais essayer tout ça de ce pas

    ZiP

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

Discussions similaires

  1. [Création de composant] Surcharge de OnMouseMove
    Par yoghisan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/02/2004, 22h34
  2. [Création de composant] Composant exclu de ComponentCount
    Par yoghisan dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/02/2004, 12h45
  3. [Création de composant] Focus
    Par Pedro dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/02/2004, 13h57
  4. Ordre de création de composant
    Par bobby-b dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/09/2003, 19h05
  5. [Kylix] Création de composant
    Par glub dans le forum EDI
    Réponses: 2
    Dernier message: 08/01/2003, 16h58

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