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 :

Problème d'affichage de Propriété dans l'inspecteur d'objet


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut Problème d'affichage de Propriété dans l'inspecteur d'objet
    Bonjour ..
    J'ai le probleme suivant .
    j'ai creer a titre d'exemple deux (2) classes
    la deuxieme contient une instance de la premiere ..
    je vous donne 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
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    unit Saidus;
     
    interface
     
    uses
      SysUtils, Classes, DesignEditors, DesignIntf;
     
    type
      TSaidusEditor = class(TPropertyEditor)
        function GetAttributes: TPropertyAttributes; override;
        function GetValue:string;Override;
      end;
    type
      TMyOne = class(TCOmponent)
      private
        FOneMsg: string;
        FxOne: Integer;
        FyOne: Integer;
      published
        property OneMsg: string read FOneMsg write FOneMsg;
        property xOne: Integer read FxOne write FxOne;
        property yOne: Integer read FyOne write FyOne;
      end;
    type
      TSaidus = class(TComponent)
      private
        FAskError: Boolean;
        FleMessage: string;
        FmyOne: TMyOne;
        { Private declarations }
      protected
        { Protected declarations }
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
        { Public declarations }
      published
        property AskError: Boolean read FAskError write FAskError;
        property leMessage: string read FleMessage write FleMessage;
        property myOne: TMyOne read FmyOne write FmyOne;
        { Published declarations }
      end;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('gCom_Saidus', [TSaidus]);
      RegisterPropertyEditor( TypeInfo( TMyOne ),TSaidus, 'myOne', TSaidusEditor );
    end;
     
    constructor TSaidus.Create(AOwner: TComponent);
    begin
      inherited;
      FmyOne := TMyOne.Create(Self);
      // TODO -cMM: TSaidus.Create default body inserted
    end;
     
    destructor TSaidus.Destroy;
    begin
      FreeAndNil(FmyOne);
      inherited;
      // TODO -cMM: TSaidus.Destroy default body inserted
    end;
     
    { TSaidusEditor }
     
    function TSaidusEditor.GetAttributes: TPropertyAttributes;
    begin
      Result := [paDialog];
    end;
     
    function TSaidusEditor.GetValue: string;
    begin
      Result := Format( '(%s)', [ GetPropType^.Name ] );
    end;
     
    end.
    mon probleme est que je veux que la propriete "myOne" de TSaidus apparait en gris {sorte de ReadOnly } avec un Boutton + pour acceder a ses propriete
    un peux comme Font Dans TForm ou Constrainte Dans TForm
    je ne sais quelle valeur donner dans l'editeur de propriete
    Merci Pour votre aide

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    PaSubProperties convient peut-être pour ton utilisation (paDialog signifie que tu vas faire apparaître une fenêtre de dialogue pour la saisie). Néanmoins et si tu ne définit pas de PropertyEditor pour ton composant tout simplement ? L'EDI va se charger de lui-même de faire l'affichage comme tu le souhaites, penses.

  3. #3
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut
    Merci pour la reponse ..
    mais le resultat que je faire apparaitre est comme celui sur l'image 2 que j'ai attache
    la valeur : paSubProperties ne matche pas { pas le resultat esperer}
    merci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Et en associant pas de PropertyEditor à ton composant justement ? En gros en laissant Delphi utiliser l'apparence par défaut ?

  5. #5
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut
    si on assosie pas de PropertyEditor a la properiete alors le contenus de la propreite sera editable
    je ne seais pas si tu a remarque la properiete Constraints de TForm
    c'est le meme resultat que je veux obtenir
    un (+) devant la proprite et le type de la propriete ne sera pas modifiable

    merci encore

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Ok, je crois que je vois mieux maintenant ce que tu veux faire. Et si tu fais hériter ton éditeur de propriété depuis TComponentProperty et que tu ne surcharges que la méthode GetAttributes avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type
      TSaidusEditor = class(TComponentProperty)
        function GetAttributes: TPropertyAttributes; override;
      end;
     
    implementation
     
    function GetAttributes: TPropertyAttributes;
    begin
      result := include( inherited GetAttributes, paReadOnly );
    end;

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/11/2009, 18h03
  2. Réponses: 19
    Dernier message: 29/05/2007, 16h21
  3. [MySQL] Problème d'affichage d'enregistrement dans un champs
    Par mosca_coroneja dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/04/2006, 11h19
  4. [VB.Net] Problème d'affichage de text dans une MessageBox
    Par eultartuffe dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/04/2006, 20h56
  5. Réponses: 1
    Dernier message: 06/03/2003, 11h57

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