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

C++Builder Discussion :

Forms "dynamiques" [Non suivi]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Par d�faut Forms "dynamiques"
    Bonjour,
    Je vais tenter de faire bref et clair pour vous exposer mon probl�me :

    J'ai pour objectif de creer une application qui a besoin d'un nombre de Forms non d�finis.

    Quelle methode me conseillez-vous donc d'utiliser ?

    Pour illustrer mon probleme, voici un exmple concret :

    Lorsque l'on utilise un logiciel de messagerie instantan�e, il est possible d'ouvrir autant de fenetre que l'on a de contacts.
    Comment faire pour generer ces fen�tres (qui seront toutes identiques) dynamiquement ?

    En vous remerciant !

  2. #2
    Membre averti
    Inscrit en
    F�vrier 2004
    Messages
    43
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 43
    Par d�faut
    il faudrait que tu d�clenches un new sur un �v�nement comme par exemple le clic sur un contact.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Par d�faut
    euh, l'histoire de la messagerie instantan�e c'est juste un exemple.
    Mais bon on peut l'utiliser pour "imager" nos propos

    Bon, sinon, le new me parait dans tous les cas indispensable mais en fait ce que j'aimerais savoir c'est comment "dupliquer" la fenetre de reference afin d'obtenir d'autre fenetres identiques mais compl�tements ind�pendantes.

    Je suis pas s�r d'�tre clair ...

    Pour info, j'ai bien vu l'article de la FAQ qui parle de la cr�ation dynamique de composant mais je ne vois pas comment faire la m�me chose sur toute une fiche.

    Merci.

  4. #4
    Membre averti
    Inscrit en
    F�vrier 2004
    Messages
    43
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 43
    Par d�faut
    pour dupliquer, ne peux tu pas utiliser la surcharge de l'op�rateur = qui te permet d'affecter une Form � une autre?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Form2->operator = (Form1)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Par d�faut
    Peux-�tre, je n'ai pas essay�.
    Le probl�me que je vois dans ce cas c'est que si j'ai 3 fen�tres � creer dynamiquement, il faudra que je d�clare
    Form2, Form3, Form4
    mais peux �tre que j'en aurais 5
    Form2, Form3, Form4, Form5, Form6
    ou peut �tre 100 ...

    Le nombre de forms n'est pas d�fini.

    Sinon quelqu'un � d�j� tent� la surchage = comme le d�crit leycho ci-dessus ?

    Merci !

  6. #6
    say
    say est d�connect�
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    1 176
    D�tails du profil
    Informations personnelles :
    �ge : 47
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 1 176
    Par d�faut
    bonjour,
    tu es dans une application MDI?

    quoi qu'il en soit, j'ai pas du piger le probl�me...
    si tu fais plusieurs new � la suite avec une seule Form1 (par ex), tu auras plusieurs forms d'afficher.

    En revanche, si tu veux pouvoir les manipuler, il faudrait les mettre dans un vecteur (par ex.)

    A+

  7. #7
    Membre chevronn�

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par d�faut
    Comme ce sont des fen�tres identiques, tu cr�es une seule classe (p.ex. TMyForm) mais plusieurs instances. Pour chaque instance, tu as un pointeur que tu devras sauver dans un conteneur (TList, vector<>, etc. selon tes besoins) si tu as besoin d'y acc�der depuis la fen�tre principale.

    Un exemple (non test�)
    Dans le .h de ta fen�tre principale
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #include "TMyForm.h"
    ...
    TList *myForms;
    En r�action d'un �v�nement (p.ex. le click sur un bouton) dans le .cpp de ta fen�tre principale:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     TMyForm* newForm=new TMyForm(this);
     newForm->Top=...
     newForm->Left=...
     ...
     myForms->Add(newForm);
     newForm->Show();
     ...

  8. #8
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Hello

    Pas besoin de conna�tre le nombre max de fen�tres � cr�er

    Mettons que tu aies une fiche TForm_monform
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    TForm_monform* monObjet = new TForm_monform(NULL);
    liste->Add((void *)monObjet);
    monObjet->Show();
    Quand tu auras besoin d'une des fen�tres, l'exemple de la faq avec les TLabel s'utilise tout pareil avec les TForm.

    Apr�s, quand tu veux d�truire une des fen�tres (la num�ro i par exemple):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    delete (TForm_monform*)liste->Items[i];  // Destruction de la fenêtre
    liste->Delete(i);     // Suppression de la référence de la fenêtre
    A++

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [xsl]simuler le mecanisme OO de "liaison dynamique"
    Par philemon_siclone dans le forum XSL/XSLT/XPATH
    R�ponses: 10
    Dernier message: 19/12/2003, 11h34

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