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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    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 confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    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

  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
    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 confirmé
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    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 émérite
    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
    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

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    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 : 40

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    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

    @++

  8. #8
    Membre émérite
    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
    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

+ 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