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

Delphi Discussion :

TEdit dynamique


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 13
    Points
    13
    Par défaut TEdit dynamique
    voici le code:begin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    s:=edit1.text;
    editn := Tedit.create(self); // création du Tedit comme composant de la fiche. c'est elle qui s'occupera de la destruction
    editn.width :=203;
    editn.height := 29;
    editn.top := (X * (editn.top + 30)) + 100;// crée à partir de 100 pixels du haut de la fiche, un Tedit tous les 10 pixels
    editn.left :=1;
    editn.text := s;//SaisieEdit.text;
    editn.parent := self;
    inc(X); // pour la gestion de X, un increment sur une variable privée de la fiche à chaque création de tedit
    edit1.text:='';
     end;
    end.
    je voudrais pouvoir reperer chaque editn afin de le detruire,le modifier(graphiquement) et sauver ses donnes dans un ficheir text .pas besoin de db pour ces information.

    faut il mieux que j'abandonne cette piste?et que je passe par un tableau ou equivalent?


    FRANK

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Pour accéder à ces Tedit crées dynamiquement, il faut utiliser FindComponent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i:=1 to 4 do
      Tedit(findComponent('Edit'+IntToStr(i)).Text:='ma valeur';
    permet de écrire la propriété Text des Tedit1 à 4
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par qi130
    Pour accéder à ces Tedit crées dynamiquement, il faut utiliser FindComponent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i:=1 to 4 do
      Tedit(findComponent('Edit'+IntToStr(i)).Text:='ma valeur';
    permet de écrire la propriété Text des Tedit1 à 4
    Le problème c'est qu'avec le code qu'il a donné, il ne nomme pas les composants... Ce qui devrait donner une erreur d'ailleurs...
    Pour utiliser cette méthode, il faut nommer les composants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      editn.Name:='Edit'+IntToStr(X);//Si X est bien le compteur que tu utilises
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  4. #4
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Je débute vraiment en delphi et là je suis un peu dans la même situation sauf qu'en utilisant FindComponent, j'ai le message, identifisateur non déclaré. Que faut-il inclure ?

  5. #5
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Voici un exemple, avec 2 boutons sur ta form :

    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
     
    var
      cptEdit : integer; // pour compter les TEdit créés
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      // Création d'un TEdit
      with TEdit.Create(self) do
      begin
        Top := (cptEdit * (Height + 8)) + 8;
        Left := 8;
        inc(cptEdit);
        Name := 'myedit' + intToStr(cptEdit);
        Parent := self;
      end;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      // Affichage du dernier TEdit créé
      if (cptEdit > 0) then
        showMessage(TEdit(findComponent('myedit' + intToStr(cptEdit))).Text);
    end;
    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Ok, je suis d'accord, mais je ne sais pas quoi mettre dans les uses. Lorsque je compile FindComponent est surligné et j'ai identificateur non déclaré.

  7. #7
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Bonjour,

    Le plus simple reste de déclarer un tableau de TEdit. Pourquoi passer par la RTTI dans ce cas là ?

    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
    const
      CFieldCount = 4;
     
    type
      TForm1 = class(TForm)
        ...
        Fields: array[1..CFieldCount] of TEdit;
        procedure CreateFields;
        procedure DestroyFields;
        ...
      end;
     
    ...
    procedure TForm1.CreateFields;
    var
      i: Integer;
    begin
      try
        for i := 1 to Length(Fields) do
          with Fields[i] do
          begin
            Create(Self);
            Parent := Self;
            ...
          end;
      except
        // Erreur à la création
      end;
    end;
     
    procedure TForm1.DestroyFields;
    var
      i: Integer;
    begin
      try
        for i := 1 to Length(Fields) do
          if Fields[i] <> nil then FreeAndNil(Fields[i]);
      except
        // Erreur à la destruction
      end;
    end;
    Tout simplement

    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  8. #8
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Citation Envoyé par rasta girl
    Ok, je suis d'accord, mais je ne sais pas quoi mettre dans les uses. Lorsque je compile FindComponent est surligné et j'ai identificateur non déclaré.
    FindComponent est une méthode de TComponent qui permet de rechercher un composant parmi les composants d'un autre.

    Si tu as un message d'erreur, c'est que tu n'es pas dans un composant. Quel est ton code ?

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  9. #9
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Exactement, voilà j'ai trouvé mon erreur : il falait en fait mettre TComponent.FindComponent ... Merci bien pour toutes ces réponses.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    moi j'aurais une requete en plus.
    SI on veut ensuite avoir des procedures sur ces TEdit???
    Par exemple pour les déplacer...Il faudrait affecter à chaque TEdit crée les procedure de MouseMove et Mouse Down.... comment faire???

  11. #11
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Citation Envoyé par forzaxelah
    moi j'aurais une requete en plus.
    SI on veut ensuite avoir des procedures sur ces TEdit???
    Par exemple pour les déplacer...Il faudrait affecter à chaque TEdit crée les procedure de MouseMove et Mouse Down.... comment faire???


    http://delphi.developpez.com/faq/?pa...ajoutevenement

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  12. #12
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Voici une démo de création dynamique de composant (TButton) et d'utilisation d'un évènement :
    http://sub0.developpez.com/delphi/mahjongg.zip
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. TEdit dynamique - Width automatique
    Par BBouille dans le forum Langage
    Réponses: 7
    Dernier message: 24/11/2013, 19h01
  2. Ajout OnDragOver dans Tedit Dynamique
    Par segnac dans le forum Web & réseau
    Réponses: 3
    Dernier message: 09/01/2010, 13h59
  3. Ajouter un composant (TEdit) dynamiquement
    Par Freud44 dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/02/2009, 16h41
  4. Erreur lors de création dynamique de TEdit
    Par Xavier dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/05/2008, 10h26
  5. Création de TEdit dynamique
    Par onet dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/01/2006, 13h46

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