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 :

Probleme avec TEdit


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Par d�faut Probleme avec TEdit
    Bonjour,

    Voila, j ai defini sur ma fiche 21 composants TEdit (Edit1, ... Edit21).
    A l interieur de chacun de ces composants je veux afficher une valeur (qui elle vient d un tableau a une dimension de taille 255).
    Je veux pouvoir faire defiler mon tableau a l interieur de ces 21 composants (J espere que je suis clair).

    Pour cela, j aimerais utiliser une boucle "for" et remplir la valeur du TEdit correspondant.

    Le probleme c est que je ne veux pas taper dans mon source Edit1->Text =
    puis Edit2->

    ...
    jusqu a Edit21->Text =

    Comment est il possible d automatiser tout ca, car si je fais une AnsiString qui contient le nom du genre: editName = "edit"+position
    et que je l utilise de lq mqniere suivante:
    Form1->editName->Text

    le compilateur me donne une erreur car il ne connait pas ca (ce qui parait logique apres reflexion)

    Mais comment faire ???

    Passer par des macros qui remplace tout ca lors de la precompilation

    Ou faire pointer mes 21 Edit->Text sur des pointeurs d entier

    ...

    Je sais plus moi

    Merci d avance

  2. #2
    Membre exp�riment�
    Avatar de Djob
    Inscrit en
    Ao�t 2002
    Messages
    215
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 215
    Par d�faut
    tu peux par exemple employer la fonction
    FindComponent qui te retoune le pointeur vers le composant gr�ce � son nom :

    exemple avec 10 TEdits:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            int tab[10]={2,23,45,65,78,89,100,23,34,4};
            for(int i=1;i<=10;i++){
               TEdit * Edit=NULL;
               Edit =(TEdit*) FindComponent("Edit"+IntToStr(i));
               if(Edit!=NULL){
                     Edit->Text=IntToStr(tab[i-1]);
               }
            }
    }

  3. #3
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Si tes 21 TEdit sont sur le m�me parent et si l'algo pour les placer n'est pas trop
    compliqu�, alors le plus simple est encore de faire une class d�riv�e de TComponent
    qui va cr�er tes 21 TEdit dynamiquement. Ensuite, il suffit de d�velopper une m�thode
    qui va traiter ses propres "Components" c'est � dire les 21 TEdit.
    Quelque chose dans ce genre l� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    class jEdits : public TComponent
    {
    public :
        __fastcall jEdits(TComponent *Owner);
        __fastcall ~jEdits();
        void __fastcall Afficher(int *Tableau, int N, int Max);
    };

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    __fastcall jEdits::jEdits(TComponent *Owner) : TComponent(Owner)
    {
    TEdit *E;
    for(int j = 0; j < 21; j++)
        {
        E = new TEdit(this); //E est détenu par l'objet jEdits
        E->Parent = (TWinControl*)Owner;  //Owner dérivé de TWinControl (TForm, TPanel..)
        E->SetBounds(., ., ., .);
        }
    }
    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
    void __fastcall jEdits::Afficher(int *Tableau, int N, int Max)
    {
    int n;
    for(int j = 0; j < 21; j++)
        {
        n = N + j;
        if(n < Max) 
            {
            ((TEdit*)Components[j])->Text = IntToStr(Tableau[n]);
            }
        else
            { 
            ((TEdit*)Components[j])->Text = "Overflow";
            }
        }
    }
    Sauf erreur de ma part...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    TScrollBar *Scrollbar1;
    jEdits *Edits;
    int Tableau[255];
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Edits = new jEdits(this); //dans le constructeur de la form
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Edits->Afficher(Tableau, ScrollBar1->Position, 255);
    NB : La destruction des objets d�riv�s de TComponent est automatique.

    A plus !

  4. #4
    Membre exp�riment�
    Avatar de Djob
    Inscrit en
    Ao�t 2002
    Messages
    215
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 215
    Par d�faut
    voui c 'est �videmment beaucoup plus �l�gant
    ..et plus �volu�...pour afficher un tableau d'entier.

    personellement j'aurais plut�t choisi une StringGrid ...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    R�ponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum R�seau
    R�ponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    R�ponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    R�ponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    R�ponses: 4
    Dernier message: 08/06/2002, 23h06

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