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 :

Surcharge de fonction d'un edit dynamique


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [Resolu]Surcharge de fonction d'un edit dynamique
    Bonjour a tous,

    je voudrais définir une nouvelle fonction pour un element qui est crée dynamiquement mais je ne vois absolument pas comment faire.

    Voici ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class TTraitement 
    { 
    private: 
            TCheckBox * util; 
            TEdit * libelle; 
            TEdit * montant; 
    public: 
            TTraitement(int,bool,AnsiString,int,int,int,TWinControl *); 
    };

    Donc je crée un objet TTraitement mais je voudrais surcharger l'evenement OnkeyUp de l'edit montant pour que le checkBox associé à l'edit ce mette a true si il y a des valeurs dans le montant ou a faux si il n'y a rien.
    avec ce çi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if(!montant->Text.IsEmpty()&& montant->Text != '0') 
             { 
                  util->Checked = true; 
             } 
            else 
                    util->Checked = false; 
     
            calculMontant();
    merçi pour vos précision ki pourrais etre tres précieuse

    Tartar

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Donc je crée un objet TTraitement mais je voudrais surcharger l'evenement OnkeyUp de l'edit montant pour que le checkBox associé à l'edit ce mette a true si il y a des valeurs dans le montant ou a faux si il n'y a rien.
    Bonjour,

    c'est un petit peu compliqué comme problème :

    essayer dans la mesure du possible de respecter l'ergonomie du système d'exploitation , des contrôles et fenêtres.
    Je dis cela car les utilisateurs sont habitués à une certaine ergonomie...
    Pour traiter le contenu d'une zone de texte , on gère plutôt l'événement qui est déclenché lorsque le contenu change ( OnChange ).
    Donc gérer plutôt cet événement là.

    Concernant la déclaration de la classe cela me "titille" un peu car en POO en général on crée des classes génériques INDEPENDANTES de l'interface utilisateur et des contrôles contenus par les fenêtres , à moins de vouloir par exemple créer des Active X spécifiques.

    sinon une possibilité est de faire hériter TEdit avec une nouvelle classe qui apporte des nouvelles fonctionnalités

  3. #3
    mat.M
    Invité(e)
    Par défaut
    je voudrais définir une nouvelle fonction pour un element qui est crée dynamiquement mais je ne vois absolument pas comment faire
    Euuhh moi pas trop comprendre .
    Veux-tu faire une collection d'objets ? ( TList )

  4. #4
    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
    Bonsoir,

    j'avoue que c'est également un peu bizarre pour moi, mais je vais proposer un élément de réponse qui peut éventuellement t'intéresser s'il est adapté à tes besoins.

    A savoir l'utilisation d'un composant :
    ta classe TTraitement pourrait en fait être un nouveau composant constitué d'une Checkbox et de 2 Edit.

    A partir de là, tu peux gérer les évenements internes aux composants et l'utilisateur extérieur n'y aura pas accès directement.

    Voila donc un code exemple écrit à la volée à peu près adapté à ta classe (hormis constructeur). En gros tu obtiens un composant graphique composé d'une Checkbox et de 2 Edit et selon la valeur de l'Edit montant la Checkbox change d'état.

    Traitement.cpp :

    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
    #include <vcl.h>
     
    #pragma hdrstop
     
    #include "Traitement.h"
    #pragma package(smart_init)
    //---------------------------------------------------------------------------
    //  ValidCtrCheck est utilisé pour vérifier que les composants créés n'ont
    // aucune fonction virtuelle pure.
    //
     
    static inline void ValidCtrCheck(TTraitement *)
    {
            new TTraitement(NULL);
    }
    //---------------------------------------------------------------------------
    __fastcall TTraitement::TTraitement(TComponent* Owner)
            : TCustomControl(Owner)
    {
    // déclaration de la taille et de la couleur du composant
      Width=400;
      Height=200;
      Color=(TColor) 0x00F8E4D8;
     
      util = new TCheckBox(this);
      util->Parent = this;
      util->Top = 10;
     
      libelle = new TEdit(this);
      libelle->Parent = this;
      libelle->Top = 60;
     
      montant = new TEdit(this);
      montant->Parent = this;
      montant->OnKeyUp = TraitementOnKeyUp;
      montant->Top = 110;
    }
    //---------------------------------------------------------------------------
    namespace Traitement
    {
      void __fastcall PACKAGE Register()
      {
        TComponentClass classes[1] = {__classid(TTraitement)};
        RegisterComponents("Exemples", classes, 0);
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall TTraitement::TraitementOnKeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
            if(!montant->Text.IsEmpty()&& montant->Text != '0') 
             { 
                  util->Checked = true; 
             } 
            else 
                    util->Checked = false; 
     
            //calculMontant();
    }
    Traitement.h :

    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
    #ifndef TraitementH
    #define TraitementH
    //---------------------------------------------------------------------------
    #include <SysUtils.hpp>
    #include <Classes.hpp>
    #include <Controls.hpp>
    //---------------------------------------------------------------------------
    class PACKAGE TTraitement : public TCustomControl
    {
    private:
            TCheckBox * util;
            TEdit * libelle;
            TEdit * montant;
     
            void __fastcall TraitementOnKeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift);
     
    protected:
    public:
            __fastcall TTraitement(TComponent* Owner);
     
    __published:
    };
    //---------------------------------------------------------------------------
    #endif
    Bien entendu, si cette solution peut s'adapter à ton besoin, il te faudra passer par la création d'un composant et ajouter du code pour positionner tes contrôles et gérer tes fonctions.
    Tu trouveras des ressources sur Developpez pour la création de composants sous C++ Builder.

    Bon courage !

    Eric

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    merçi Ricky81, c'etait de ça que j'avais besoin, crée un nouveau composant qui regroupe 1 checkBox et 2 Edit.
    Je retiens ta solution et encore merci tu m'as mis sur la bonne voie.

    Tartar

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

Discussions similaires

  1. [POO] Fonction à nombre de paramètres dynamique
    Par Digimag dans le forum Langage
    Réponses: 13
    Dernier message: 14/02/2008, 22h32
  2. API HOOK, Dump dll, Surcharge de Fonction
    Par MicroAlexx dans le forum Windows
    Réponses: 2
    Dernier message: 30/12/2005, 10h39
  3. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  4. singleton, polymorphisme, et surcharge de fonction
    Par legend666 dans le forum C++
    Réponses: 11
    Dernier message: 14/11/2005, 09h27
  5. Réponses: 14
    Dernier message: 13/07/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