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

Composants VCL Delphi Discussion :

Création de TEdit dynamique


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Par défaut Création de TEdit dynamique
    Salutation a tous.

    Voila, je me remets gentiment a Delphi, après une pause de 3 ans, et d'autres langages entre 2.

    Ma première petite application? Un calculateur de Matrice. Oui, bon, je fais pas dans le plus simple, et ca existe surement, mais c'est pas grave

    Je résume le petit passage qui me pose problème:

    - Je souhaite pouvoir générer un certain nombre de Tedit en fonction du nombre de colonne et de ligne souhaitée.

    Pour cela, j'ai la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      for i:=1 to ValColonne  do
        begin
          for j:=1 to ValLigne do
            begin
                With TEdit.Create(Self) Do
                Begin
                  Parent := Panel2;
                  Left := (30 * i);
                  Name := 'eC' + IntToStr(i) + 'L' + IntToStr(j);
                  Top := (30 * j);
                  Width := 25
                End;
            end;
        end;
    Mes problèmes sont les suivants:

    - Je n'arrive pas a travailler sur les données dans les TEdit créer dynamiquement, pour la simple et bonne raison qu'ils n'existent pas lors de la création du code.
    - Il faudrais que je puisse détruire les TEdits une fois que j'en ai plus besoin, car lorsque je relance la procédure, il me plante car ils existent déja (ce qui est le cas, vu que je viens de les créer).

    Comment puis-je faire ?

    Onet

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    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 944
    Par défaut
    Pour "adresser" un des TEdit, regarde FindComponent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (FindComponent(leNomduTedit) as TEdit).Text:='quelque chose';
    Pour les supprimer, il y a la méthode Free

  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
    Salut
    Evidemment, si tu les crées sans les référencer quelque part, tu auras du mal à y accéder
    Plusieurs soltuions possibles:
    - Utiliser un tableau dynamique ou non de tes TEdit
    - Utiliser un TObjectList (unité "Contnrs") qui contiendra les TEdit
    - Utiliser un TList en transtypant en pointers
    - etc.
    En gors, ton code pourrait donner ça:
    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
     
    var Tab:array[1..ValColonne,1..ValLigne] of TEdit;//note: ici, mettre des valeurs
    begin
    for i:=1 to ValColonne  do
        begin
          for j:=1 to ValLigne do
            begin
                With Tab[i,j].Create(Self) Do
                Begin
                  Parent := Panel2;
                  Left := (30 * i);
                  Name := 'eC' + IntToStr(i) + 'L' + IntToStr(j);
                  Top := (30 * j);
                  Width := 25
                End;
            end;
        end;
    end;
    Pour y accéder, tu fais simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Tab[1,2].Text:='Je suis le TEdit 1,2!'
    Voila...
    Bon dev'
    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
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Ca serait pas plus simple de passer par un StringGrid ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    en reponse a Pedro204
    il n'as pas besoin de les referencer
    il existe une liste de composant dans la form
    lors de la creatiuon d'un composant celui-ci et inserer automatiquement dedans

    sinon y'a aucune raison que cela ne marche pas
    une fois creer tes edit sont modifiable
    pour y acceder utilise FindCompoment() comme te la dit qi130


    @+ Phil

  6. #6
    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 anapurna
    en reponse a Pedro204
    il n'as pas besoin de les referencer
    il existe une liste de composant dans la form
    lors de la creatiuon d'un composant celui-ci et inserer automatiquement dedans
    Oui évidemment Mais bon, c'est pas franchement pratique La méthode par liste ou par tableau est plus simple je pense
    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

  7. #7
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par Pedro204
    La méthode par liste ou par tableau est plus simple je pense
    Même avis : J'utilise très souvent la TObjectList.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

Discussions similaires

  1. [PowerBuilder] Création d'objets dynamiques
    Par Béné123456789 dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 12/06/2006, 00h33
  2. Réponses: 5
    Dernier message: 13/11/2005, 19h10
  3. Introspection et création de code dynamiquement ?
    Par elitost dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 17/10/2005, 22h43
  4. Problème avec création de fenêtre dynamique
    Par FredericB dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/09/2005, 17h21
  5. [FLASH MX2004] Création d'objet dynamiquement
    Par noarno dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2004, 11h00

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