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

C++Builder Discussion :

[Composant] publier une propriété avec un type perso [FAQ]


Sujet :

C++Builder

  1. #1
    Membre du Club

    Inscrit en
    Août 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 36
    Points : 54
    Points
    54
    Par défaut [Composant] publier une propriété avec un type perso
    bonjour,

    je crée un type _tstring basé sur une WideString
    je crée de nouveaux des composants avec des property en published

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    __property _tString NameCart = read=GetNameCart,write=SetNameCart};
    mais à la compilation ça me donne l'erreur
    [C++ Erreur] Counter1.h(145): E2109 Ce n'est pas un type autorisé
    si je compile avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    __property WideString NameCart = read=GetNameCart,write=SetNameCart};
    pas d'erreur.

    J'ai pas d'idée.

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Bonjour,

    Cela ne viendrait-il pas d'un problème d'éditeur de propriété inconnu pour ce type ?

    As-tu essayé de passer de __property à private ou ce genre de chose ?

    Cordialement,

    Arnaud

  3. #3
    Membre du Club

    Inscrit en
    Août 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 36
    Points : 54
    Points
    54
    Par défaut
    elle fait partie du

  4. #4
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 049
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 049
    Points : 8 272
    Points
    8 272
    Par défaut
    Citation Envoyé par Aide BCB
    Toutes les propriétés doivent fournir une représentation de type
    chaîne de leurs valeurs en vue de leur affichage dans l'inspecteur
    d'objets. Dans le cas de la plupart des propriétés, le développeur
    pourra saisir une nouvelle valeur lors de la conception.

  5. #5
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonjour,
    je pense que tu utilise ma les Property
    ta classe fonctionne parfaitement avec les property
    demonstration

    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
     
    class _tString
    {
            private :
     
            WideString Data ;
     
            public :
     
            __fastcall _tString() { Data = WideString("") ; }
            __fastcall _tString(const char* src) { Data = WideString(src) ; }
            __fastcall _tString(const WideString& src) { Data = WideString(src) ; }
            __fastcall _tString(const AnsiString& src) { Data = WideString(src) ; }
            __fastcall _tString(const wchar_t* src, int len) { Data = WideString(src,len) ; }
            __fastcall _tString(const wchar_t* src) { Data = WideString(src) ; }
            __fastcall _tString(const wchar_t  src) { Data = WideString(src) ; }
     
            wchar_t* __fastcall Copy() const { return Data.Copy() ; }
            bool __fastcall IsEmpty() const { return Data.IsEmpty() ; }
            int __fastcall Length() const { return Data.Length() ; }
     
    };
     
     
     
     
     
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TButton *Button1;
            TEdit *Edit1;
            void __fastcall Button1Click(TObject *Sender);
    private:
            _tString FspecString;
            void __fastcall SetNameCart(_tString value);
            _tString __fastcall GetNameCart();	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
            __property _tString NameCart = { read = GetNameCart, write = SetNameCart };
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
     
    et le .cpp
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
     
    void __fastcall TForm1::SetNameCart(_tString value)
    {
            FspecString = value;
    }
     
    _tString __fastcall TForm1::GetNameCart()
    {
            return FspecString;
    }
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       NameCart="Salut Ma poule";
       Edit1->Text=NameCart.Copy();
     
    }
    Cordialement

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    J'étais également parti dans cette direction, mais en fait il s'avère que jpc34 semble vouloir définir une telle propriété dans un nouveau composant, ce qui pose problème pour l'édition de celle-ci dans l'inspecteur d'objet.
    Cf. la remarque de CGi.

  7. #7
    Membre du Club

    Inscrit en
    Août 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 36
    Points : 54
    Points
    54
    Par défaut
    Ricky81 a bon, cette class fait partie de plusieurs composant.
    je pense avoir trouvé la solution, comme ma classe utilise les WideString, les property seront defini par ce type , et dans les fonction set et get , je ferais la correspondance

    merci , a tous !


    @+

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

Discussions similaires

  1. Publier une fonction avec QuickTest Pro
    Par christotoffe dans le forum Test
    Réponses: 5
    Dernier message: 27/05/2008, 12h48
  2. champ d'une table avec comme type un fichier xml
    Par gnagnus dans le forum Oracle
    Réponses: 2
    Dernier message: 05/03/2007, 10h16
  3. declarer une ArrayList avec un type precis
    Par solawe dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 30/12/2006, 20h28
  4. [PHP-JS] Publier une page avec easyphp
    Par Diss dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2006, 13h53
  5. Quels composants pour une synchro avec palm ?
    Par tipiweb dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/11/2005, 15h06

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