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

Langage Delphi Discussion :

variable objet. [FAQ]


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut variable objet.
    Bonjour à tous.
    Je suis débutant en Delphi2005 et voila ma question.
    J'ai 100 objets Tedit appelés C1,C2,...C100;
    Je voudrais modifier leur propriété .text dans une boucle for:
    For i:=1 to 100 do
    'C'+i.text:='texte...'//ca ne fonctionne pas
    end

    Je sais que
    c1.text:=...
    c2.text:=...
    fonctionne mais quelle galere !
    En windev {"C"+i}="blabla" fonctionne( construction dynamique)
    Un coup de pouce ?
    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Par défaut
    Voilà pour toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i:=1 to 100 do
    (FindComponent('c'+IntToStr(i)) as TEdit).text:='...'
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Le FindComponent marche très bien, mais est lent, car il recherche séquentiellement ton composant dans tous les composants existants (du même composant propriétaire tout du moins). Avec 100 TEdit, cela est dommage de perdre du temps à rechercher tes TEdit.

    Ce qui serait interressant dans ton cas, c'est de regrouper tous tes TEdits dans un même panel 'MonPanel' et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 0 to MonPanel.ControlCount - 1 
      do TEdit( MonPanel.controls[ i ] ).Text := 'ton texte';
    Le rajout ou la suppression de TEdit dans ton panel sera pris en compte automatiquement aussi de cette manière.

    Si tu a d'autres composants dans ton panel (normalement non puisque tu l'as créé pour cette tache), intercale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if ( MonPanel.Controls[ i ] is TEdit  )  then ...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut
    HOUA.
    Première question...
    Et réponse dans la seconde...
    Je vous remercie tous.
    Ce forum et surtout ses participants sont fantastiques !
    MERCI

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    si tu as 100 TEdit, je suppose qu'ils ont été créés dynamiquement.
    il aurait été judicieux de les créer dans un tableau de TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var 
     TabEdit: array[1..100] of TEdit;
     i: Byte; 
    begin
     for i:=1 to 100 do begin
      TabEdit[i]:=TEdit.Create;
      with TabEdit[i] do begin
       Name:='C'+IntToStr(i);
       Text:='salut le n° '+IntToStr(i);
       Top:=150+i*20;
      end;
     end;
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/06/2006, 00h27
  2. Réponses: 13
    Dernier message: 01/06/2006, 17h20
  3. [VBA-E]erreur 91: variable objet ou variable de bloc With...
    Par cdk dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2006, 14h19
  4. Variables/objets dynamiques, quelques questions
    Par Crisanar dans le forum C++
    Réponses: 7
    Dernier message: 16/10/2005, 13h23
  5. Réponses: 5
    Dernier message: 12/09/2005, 14h18

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