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 :

création de plusieurs TEdit par programmation


Sujet :

C++Builder

  1. #1
    Débutant(e)
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Points : 64
    Points
    64
    Par défaut création de plusieurs TEdit par programmation
    voila l'objectif est de réussir a programmer un programme linéaire, je m'éxplique je veux que ma petite application m'affiche ce résultat:

    ax1+bx2+cx3+........
    a1x1+b2x2+c2x3....
    .
    .
    .
    .
    etc
    or le nombre de colonnes et de lignes sont connu en donnant le soin a l'utilisateur de les mentionner. jusque la pas de pb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    le code suivant me permet d'afficher un TEdit par programmation:
     
    TEdit*b;
    b=new TEdit (this);
    ce que je veux c'est réussir a créer plusieur commeca en les disposant l'un a coté de l'autre comme le programme linéaire ci dessus.

    mes TEdit seront les a,b,c

    avec une simple boucle et en gardant le même code ca ne donne rien c'est normal puisque j'ai créer qu'un seul TEdit et non pas plusieurs.

    comment faire?
    merci

  2. #2
    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
    B'soir,

    Un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int TopB = 1;
    TButton *pBT[11];
    for (int i = 1; i < 11; i ++)
    {
    pBT[i] = new TButton(Form1);
    pBT[i]->Parent = Form1;
    pBT[i]->Caption = AnsiString("ZeBouton") + i;
    pBT[i]->Top = TopB;
    pBT[i]->Name = AnsiString("ZB") + i;
    pBT[i]->OnClick = EffacerLabel;
    TopB = pBT[i]->Top + pBT[i]->Height + 5;
    }
    pour la création de boutons ?
    Excuses mais je suis pas sur d'avoir tout pigé...
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Tout dépend de ce qu'il y a à faire et surtout de la manière dont on souhaite développer !

    Dans un premier temps, il existe TStringGrid, en lieu et place de la matrice de TEdit,
    et c'est l'option la plus simple !

    Si cette matrice de TEdit est imposée, on peut par exemple développer une class dédiée
    à la construction et à la gestion de cette matrice, dotée d'une liste principale pour
    les lignes et de n listes pour les colonnes. Au plus simple, on peut dériver de TComponent
    mais aussi de TPanel... selon ce que l'on a envie de faire !

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class jObjet : public TComponent
    {
    public :
    TList *Rows;
        __fastcall jObjet(TComponent *Owner, TPoint N, TRect Bnds);
        __fastcall ~jObjet();
        TEdit* __fastcall CreateEdit(TComponent *Owner, TRect Bnds);
        void __fastcall WhenKeyPress(TObject *Sender, char &Key);
    };
    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
    __fastcall jObjet::jObjet(TComponent *Owner, TPoint N, TRect Bnds)
        : TComponent(Owner)
    {
    int x;
    int y;
    TList *Col;
    Rows = new TList;
    for(int row = 0; row < N.y; row++)
        {
        y = Bnds.Top + (Bnds.Bottom * row);
        Col = new TList;
        for(int col = 0; col < N.x; col++)
            {
            x = Bnds.Left + (Bnds.Right * col);
            //Bnds.Right-2 pour l'effet visuel
            Col->Add(CreateEdit(Owner, Rect(x, y, Bnds.Right-2, Bnds.Bottom)));
            }
        Rows->Add(Col);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TEdit* __fastcall jObjet::CreateEdit(TComponent *Owner, TRect Bnds)
    {
    TEdit *Edit = new TEdit(Owner);
    if(Owner->InheritsFrom(__classid(TWinControl))) Edit->Parent = (TWinControl*)Owner;
    Edit->SetBounds(Bnds.Left, Bnds.Top, Bnds.Right, Bnds.Bottom);
    Edit->OnKeyPress = WhenKeyPress; //Au cas où...
    return Edit;
    }
    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
    void __fastcall jObjet::WhenKeyPress(TObject *Sender, char &Key)
    {
    if(Key == VK_BACK) return;
    if((Key < '0') || (Key > '9')) Key = 0;
    }
     
    __fastcall jObjet::~jObjet()
    {
    TList *Row;
    for(int row = 0; row < Rows->Count; row++)
        {
        Row = (TList*)Rows->Items[row];
        Row->Clear();
        delete Row;
        }
    Rows->Clear();
    delete Rows;
    }
    Dans l'unité qui va utiliser cet objet :

    Et le moment venu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet = new jObjet(this, Point(4,4), Rect(40,40,80,25));
    Ce n'est qu'un simple exemple de base !

    Je n'ai pas très bien compris s'il faut effectivement calculer la somme de ce qui serait
    contenu dans les différents Edits. Si c'est le cas, cette opération peut être confiée à la
    classe... sous forme de méthode !

    A plus !

  4. #4
    Débutant(e)
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Points : 64
    Points
    64
    Par défaut
    je rejoint un petit peu l'idée de cantrelle. ce n'est pas vraiment ça mais ça m'as enormémént aider a m'inspier dessus.

    voila ce que je veux réussir à faire:
    :

    edit[11] X1 + edit[12 ]X2 + edit[13] X3 + ........ edit[1n] Xn ******** (1)
    edit[21] X1 +edit [22] X2 +edit [23] X4 +..........edit[24] Xn
    .
    .
    .
    edit[m1] X1 +edit [m2] X2 +edit [m3] X4 +..........edit[mn] Xn


    ceci est un programme linéaire
    les m et les n sont données par l'utilisateurs
    jusque la j'ai réussi a programmer une seule ligne c'est à dire (1)
    voici 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
     
     
      int m=StrToInt(Edit2->Text);
                  int n=StrToInt(Edit1->Text);
                  TEdit*Edit[200];
                  TLabel*Label[200];
                  TLabel*Label1[200];
     
                  int left=16;
           //  for (j=1;j<=m;j++){
                 for (int i=1;i<=n;i++)
                 {
                     Edit[i]=new TEdit(this);
                     Label[i]=new TLabel(this);
                     Label1[i]=new TLabel(this);
                     Edit[i]->Width=20;
                     Label1[i]->Width=25;
                     Label[i]->Width=25;
                     Edit[i]->Top=17;
                     Label[i]->Top=19;
                     Label1[i]->Top=19;
                     Edit[i]->Left=left;
                     Label[i]->Left=left+Edit[i]->Width+5;
                     Label1[i]->Left=left+ Edit[i]->Width+Label[i]->Width;
                     Label[i]->Caption = AnsiString("X")+IntToStr(i);
                     Label1[i]->Caption = AnsiString("+");
                     Edit[i]->Parent=this;
                     Label[i]->Parent=this;
                     Label1[i]->Parent=this;
                     left=left+ Edit[i]->Width+Label[i]->Width+25;
                   if (i==n){ Label1[i]->Visible=False;
                              Label2=new TLabel(this);
                              Edit2=new TEdit(this);   //rajout de la colonne B
                              Edit2->Top=19;
                              Label2->Top=19;
                              Label2->Caption=AnsiString("=");
                              Label2->Left=(n*50)+(n*10);
                              Edit2->Left=Label2->Left+17;
                              Edit2->Width=30;
                              Label2->Parent=this;
                              Edit2->Parent=this; }
                                       //  }
                  }
    }
    ensuite ce code je le mets dans une autre boucle vous avez sans du remarquer le //
    le résultats que ca me donne est bon juste qu'ilne me donne pas les lignes superposées l'une sur l'autre. j'ai tte mes varaiables sur la même ligne or ce n'est pas le but rechercher.


    merci bcp de bien vouloir me lire ainsi pourquoi pas réussir à me donner une petite indication.

  5. #5
    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,

    A vrai dire - et j'en suis désolé - je n'ai pas bien compris quel genre d'alignement tu cherches a faire mais je me suis amusé a faire un petit test, en espérant que cela te serve :
    dans le .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
     
    int PosLeft, PosTop;
    PosLeft = 0;
    PosTop = 0;
    struct EssembleC pEC[10];
    for (int i = 0; i < 10; i ++)
    {
    pEC[i].pLabel = new TLabel(Form1);
    pEC[i].pLabel->Parent = Form1;
    pEC[i].pLabel->AutoSize = false;
    pEC[i].pLabel->Caption = AnsiString("Label ") + i;
    pEC[i].pLabel->Height = 30;
    pEC[i].pLabel->Width = 40;
    pEC[i].pLabel->Top = PosTop + 5;
    pEC[i].pLabel->Left = 5;
    PosLeft = pEC[i].pLabel->Left + pEC[i].pLabel->Width;
    //
    pEC[i].pEdit = new TEdit(Form1);
    pEC[i].pEdit->Parent = Form1;
    pEC[i].pEdit->AutoSize = false;
    pEC[i].pEdit->Text = AnsiString("Edit ") + i;
    pEC[i].pEdit->Height = 30;
    pEC[i].pEdit->Width = 40;
    pEC[i].pEdit->Left = PosLeft + 5;
    pEC[i].pEdit->Top = PosTop;
    //
    PosTop = pEC[i].pLabel->Top + pEC[i].pLabel->Height;
    }
    avec dans le .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
     
    struct EssembleC
    {
            TLabel* pLabel;
            TEdit* pEdit;
    };
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TCppWebBrowser *CppWebBrowser1;
            TButton *Button1;
            TButton *Button2;
            void __fastcall Button1Click(TObject *Sender);
            void __fastcall CppWebBrowser1NavigateComplete2(TObject *Sender,
              LPDISPATCH pDisp, Variant *URL);
            void __fastcall Button2Click(TObject *Sender);
    private:	// Déclarations de l'utilisateur
            bool reussi;
            EssembleC pEC;
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
    };
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

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

Discussions similaires

  1. Création de mesh complexes par programmation
    Par kami58 dans le forum Moteurs 3D
    Réponses: 20
    Dernier message: 08/03/2011, 17h16
  2. [WD-2003] Agrafer un document de plusieurs pages par programmation ?
    Par [ZiP] dans le forum VBA Word
    Réponses: 7
    Dernier message: 07/05/2010, 16h04
  3. [WD14] Création de base MySQL par programmation et accès natif
    Par rafar dans le forum WinDev
    Réponses: 4
    Dernier message: 20/04/2010, 14h22
  4. [WS 2003] création de plusieurs usagers par un script général
    Par etoile-bleu dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 09/11/2009, 13h45
  5. Comment créer plusieurs TEdit par programmation?
    Par rebelor dans le forum Delphi
    Réponses: 2
    Dernier message: 02/06/2007, 17h30

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