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 :

Tel ou tel TEdit selon une variable


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Tel ou tel TEdit selon une variable
    Bonjour à tous,

    Voilà, j'ai une appli avec plusieurs TEdit qui forment des lignes. Les calculs entre les TEdit ne s'effectuent qu'entre ceux d'une même ligne.

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    valeur1 = Edit1ligne1 ->Text;
    valeur2 = Edit2ligne1 ->Text;
    valeur3 = valeur2 + valeur3;
    Edit3ligne1->Text = valeur3;
     
    valeur1 = Edit1ligne2 ->Text;
    valeur2 = Edit2ligne2 ->Text;
    valeur3 = valeur2 + valeur3;
    Edit3ligne2->Text = valeur3;
    Pour simplifier mon code, je souhaite faire une boucle For mais je n'arrive pas à integrer la variable incrémentée dans Edit1ligneX->Text à la place du X

    Quelqu'un a t-il la solution ?

    merci d'avance,

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Scan tous les composants et s'il s'agit d'un Tedit fait quelque chose. Tu peux te servir de la propriété Tag des TEdit pour faire le traitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int i=0; i < ComponentCount; i++)
    {
        if(dynamic_cast<TEdit*>(Components[i])
        {
            TEdit *MonEdit = dynamic_cast<TEdit*>(Components[i]);
            if(MonEdit->Tag == 1) { // Utilises la propriété Tag pour faire le traitement
                valeur1 = MonEdit->Text;
            }
            else if(MonEdit->Tag == 2) {
                valeur2 = MonEdit->Text;
            }
        }
    }
    Une fois tout tes valeurs trouvées tu peux faire l'addition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeur3 = valeur2 + valeur3;
    Edit3ligne1->Text = valeur3;
    PS: Le code n'a pas été testé

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Sinon, en fonction des besoins de ton appli, on pourrait imaginer travailler sur des évènements de tes TEdits, tels que OnExit.
    L'idée serait que ta variable 'valeur1' change a chaque fois qu'une valeur est saisie dans un TEdit de la ligne 1, et que le focus passe a un autre controle, etc, etc, etc ... pour les toutes les lignes.

    En espérant t'aider,
    @ +

    PS: comme le dis Crayon
    PS: Le code n'a pas été testé
    ... ah, merde, c'est vrai ... moi j'ai pas posté de code (trop fainéant)

  4. #4
    Membre habitué
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 133
    Points
    133
    Par défaut
    Bonjour,

    On peut utiliser la méthode "FindComponent" (Cf dernier message El-Diablo).

    + Cf http://www.developpez.net/forums/sho...=findcomponent

    Nicolas

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    A première vue ça me parait un peu poussif (au niveau exécution) !

    Si on a effectivement deux lignes de trois TEdit qui sont systématiquement mis en lice de cette manière, ont peut mettre en place un tableau en global qui sera initialisé au moment de la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TEdit *Edits[2][3] = {{Form1->Edit11, Form1->Edit12, Form1->Edit13},
                          {Form1->Edit21, Form1->Edit22, Form1->Edit23}};
    Pour le calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int j = 0; j < 2; j++)
        {
        /* Quel type de calcul ?
        Val1 = Edits[j][0]->Text
        Val2 = Edits[j][1]->Text;
        Val3 = Val1 + Val2;
        Edits[j][2]->Text = Val3;
        */
        }
    C'est le truc le plus simple !

    On peut aussi objétiser mais c'est plus long à rédiger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     class jLine : public TComponent
    {
    public :
    TEdit *Edit1;
    TEdit *Edit2;
    TEdit *Edit3;
        __fastcall jLine(TComponent Owner, TEdit *E1, TEdit *E2, TEdit *E3);
        __fastcall ~jLine();
        void __fastcall Fct();
    };

    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
    __fastcall jLine::jLine(TComponent Owner, TEdit *E1, TEdit *E2, TEdit *E3)
        : TComponent(Owner)
    {
    Edit1 = E1;
    Edit2 = E2;
    Edit3 = E3;
    }
    __fastcall jLine::~jLine()
    {
    }
    void __fastcall jLine::Fct()
    {
    /* Quel type d'opération ?
    Edit3->Text = Edit1->Text + Edit2->Text; 
    */
    }
    On sait ici que l'on aura

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jLine *L1;
    jLine *L2;
    Dans le constructeur de la form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L1 = new jLine(this, Edit11, Edit12, Edit13);
    L2 = new jLine(this, Edit21, Edit22, Edit23);
    Au moment du calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L1->Fct();
    L2->Fct();
    C'est juste pour montrer !

    On peut faire encore mieux en se basant sur la classe jLine, pour faire en sorte par exemple que toute saisie dans Edit1 ou Edit2 soit répercutée immédiatement dans Edit3.

    A plus !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses,

    J'ai opté pour le code de henderson, ca marche nickel.

    Pour l'explication plus complète de je que je veux faire : J'aurais environ 30 lignes de 5 Edit et pour chaque ligne, je dois formater le contenu de chaque Edit selon son contenu, ajouter le nbr de jours ouvrés contenu dans le Edit2 a la date du Edit1 (résultat dans le Edit3) puis caluler le nbr de jours ouvrés entre le Edit3 et le Edit4 (date définie) dans le Edit5 pour schématiser une avance ou un retard.

    Je n'est pas tout a fait fini mais presque

    Merci a tous,

  7. #7
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    N'oublie pas de cliquer sur si tout fonctionne comme tu le souhaites.

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

Discussions similaires

  1. Masquer une partie du code HTML selon une variable ?
    Par ghohm dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/09/2008, 17h51
  2. Trier selon une variable?
    Par flear dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2007, 10h00
  3. Réponses: 7
    Dernier message: 10/11/2006, 09h03
  4. JTree, icone d'un noeud selon une variable
    Par remayy dans le forum Composants
    Réponses: 3
    Dernier message: 17/10/2006, 09h26
  5. [POO] Déclaration de classe selon une variable
    Par Michaël dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2006, 18h33

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