1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 647
    Points : 20 282
    Points
    20 282
    Billets dans le blog
    4

    Par défaut Création de composant 1 : cacher une propriété du parent

    Bonjour,

    tout est dans le titre mais je vais être plus précis.

    Je crée un composant dérivé de TBitmap

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    type
      [ObservableMember('NomFichierImage')]
      TFileNamedImage = class(TImage)
      private
        FNomFichierImage : TFileName;  // ajout de la propriété
        procedure ObserverToggle(const AObserver: IObserver; const Value: Boolean);
      protected
        function CanObserve(const ID: Integer): Boolean; override;
        procedure ObserverAdded(const ID: Integer; const Observer: IObserver); override;
        procedure DrawImage(Value : TFileName);
      published
        property NomFichierImage : TFileName read FNomFichierImage write DrawImage;
      end;
    Jusque là rien de plus simple, seulement au design je ne voudrai pas voir la propriété MultiresBitmap du parent, comment dois-je m'y prendre ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 658
    Points : 1 540
    Points
    1 540
    Billets dans le blog
    4

    Par défaut

    Tu ne peux pas réduire la visibilité d'une propriété.

    La seule solution que j'ai trouvé pour l'instant c'est d'avoir une classe qui contient mon objet et ou je publie uniquement les propriétés que je veux..

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 647
    Points : 20 282
    Points
    20 282
    Billets dans le blog
    4

    Par défaut Solution

    L'utilité de faire une unité Runtime et une autre pour le Design se confirme !
    Dans l'unité de design

    préalable, il faut indiquer que le paquet requiert designide.dcp
    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
     
    unit FMX.Tutoriel;
     
    interface
     
    uses System.SysUtils, System.Classes,
         Data.Bind.Components,
         DesignIntf,                     // pour UnlistPublishedProperty
         FileNamedImage;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('Tutoriel', [TFileNamedImage]);
    end;
     
    initialization
     // cache la propriété 
      UnlistPublishedProperty(TFileNamedImage, 'MultiresBitmap');  
     // affiche dans le concepteur de lien visuel (dommage, une seule propriété possible)
      Data.Bind.Components.RegisterObservableMember(TArray<TClass>.Create(TFileNamedImage), 'NomFichierImage', 'FMX'); 
     
    finalization
     // déréférence 
      Data.Bind.Components.UnregisterObservableMember(TArray<TClass>.Create(TFileNamedImage));
    end.
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

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

Discussions similaires

  1. PropertyGrid : cacher une propriété
    Par lolo5935 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/04/2011, 10h57
  2. Réponses: 2
    Dernier message: 15/08/2007, 16h27
  3. [Composant] publier une propriété avec un type perso
    Par jpc34 dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/10/2004, 09h39
  4. [composant] liste déroulante pour une propriété ?
    Par BoBoToTo dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/05/2004, 17h16
  5. Réponses: 10
    Dernier message: 19/02/2004, 13h58

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