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 :

Construction dynamique


Sujet :

Langage Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut Construction dynamique
    Dans mon application je dispose de plusieur frame qui ont toutes la proprité name de type "Frame_1 ","Frame_2","Frame_3,"Frame_4".

    Je voudrais pouvoir creer dynamiquement ma frame selon une valeur.
    Actuellement je fais de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    case variable1 of
       1:  tab[loop]:=Tframe_1.create(self);
       2:  tab[loop]:=Tframe_2.create(self);
       3:  tab[loop]:=Tframe_3.create(self);
       4:  tab[loop]:=Tframe_4.create(self);
    end;
    tab étant un tableau d'objet.

    Est ce qu il n'existerait pas un moyen plus simple du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        tab[loop]:=Tframe_'+variable1+'.create(self);
    Merci a tous.

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
     ClassTypes : TClassList; // Uses Contnrs;
     ClasseInstance : TObject;
    begin
     ClassTypes := TClassList.Create;
     ClassTypes.Add(TEdit);
     ClassTypes.Add(TMemo);
     ClasseInstance := ClassTypes[1].Create;
     ClassTypes.Free;
     ClasseInstance.Free;
    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 !

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    ok pas mal comme solution
    et si maintenant je veux chercher dans ma liste ou ce situe une certaine classe comment dois je faire ?


    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       classtypes.IndexOf(Tframe_'+variable_1').

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    le problème est que tu ne peux pas chercher directement par le nom du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 1 to  ClassTypes.Count
     do if ClassTypes[i-1].ClassName = 'Tframe_' + IntToStr(variable_1)
      then ShowMessage('c''est lui !');
    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 !

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    cela dit, pour ton 1° exemple, il suffit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[loop] := ClassTypes[variable1-1].Create;
    (si tu as le bon goût d'ajouter les items dans le bon ordre)
    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 !

  6. #6
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    parfait .
    Il me reste encore une question.

    Avant pour accéder a un paramètre de ma frame je faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      (tab[loop] as T_frame_1).color:=clred;
    Mais comment dois je faire maintenant ?

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     with tab[loop] do color := clRed;
    suffit si tu es sûr d'avoir dans le tableau un objet avec une propriété color
    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 !

  8. #8
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    j ai fait un essai mais cela ne fonction qu avec les propriétés hérité du composant Tframe. Si je veux accéder a un label sur la frame cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    with tab[loop] do label1.caption:='salut'

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    est-ce que ça n'interfère pas avec un label1 de ta fiche principale ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with tab[loop] do label1.caption:='salut';
    si tu as bcp d'init à faire sur le même objet, autant faire une fonction qui va créer l'objet (selon le type désiré), passer une référence typée (pas de pb de cast) à une procédure qui va faire les initialisations, et renvoyer la référence à l'objet créé

    éventuellement, mets les paramètres à initialiser dans le Create()
    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 !

  10. #10
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    non le label n interfere pas avec un label de la fiche principale. Tu aurais un tutoriel pour que je puisse comprendre les références typées ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/01/2007, 17h25
  2. [XUL] Construction dynamique d'un template
    Par Christophe Charron dans le forum Autres langages pour le Web
    Réponses: 9
    Dernier message: 05/09/2006, 21h42
  3. [MySQL] Construction dynamique d'un "list treeview"
    Par kilanepa dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/03/2006, 17h09
  4. [Thread] Construction dynamique
    Par Rayek dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/09/2005, 09h06
  5. [JTree] Construction dynamique
    Par raj dans le forum Composants
    Réponses: 7
    Dernier message: 09/12/2004, 17h03

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