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 :

Cr�ation d'une Form dans un thread (form dynamique)


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    26
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par d�faut Cr�ation d'une Form dans un thread (form dynamique)
    Bonjour messieurs et peut �tre aussi mesdammes

    Je vous lance un appel � l'aide car je ne sais plus comment m'ensortir

    Description du probleme:

    j'ai une fonction thread qui tourne en boucle et je voudrais que cette fonction m'ouvre autant de fenetre Form2 que de condition accept�.
    je m'explique, si la contition est valid� 10 fois il faut que 10 fenetres Form2 s'affiche � l'�cran.

    voici un bout de mon thread:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     void __fastcall TLumiere::Execute()
    {
    deb:
    if (defaut_PMJ1 == true && defaut_PMJ1_temp == false)
            {
            defaut_PMJ1_temp = true;
            Form2 = new TForm2(this);
            Form2->Show();
            }
    goto deb;
    }
    le probl�me est que cette fonction ne fonctionne pas, et je n'ai aucune id�e pour la faire fonctionner.
    Bizzarement, lorsque je mets cette fonction dans un bouton de ma form1 tous ce passe tres bien, une nouvelle fenetre s'ouvre � chaque fois que je clique sur le bouton (si je supprime le if).
    Je pr�cise que le thread fonctionne tres bien car si je mets en commentaire Form2 = new TForm2(this); et Form2->Show(); tout fonctionne

    Vous avez une id�e?? je patoge... je patoge...



    une pr�cision, je suis sous C++ Builder 6

  2. #2
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Salut,
    je ne sais pas si ca va fonctionner mais j'ai cr�� une fonction externe pour essayer de "simuler" le fait que le thread ne cr�er pas ta fen�tre.
    J'ai le code suivant et ca tourne:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     CreerFenetre();
    }
    //---------------------------------------------------------------------------
    void CreerFenetre(void)
    {
    TForm1 *Form;
    Form = new TForm1(Application);
    Form->Show();
    Form->Caption = "Form créé";
    }
    A voir si ca te d�panne

    PS: utilise les balises [ CODE ], c'est le # au dessus de la fen�tre de saisie du texte. Ca permet de mettre en forme le post. merci

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    26
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par d�faut
    Je te remercie bandit boy, ton code m'a dej� permit de ne plus avoir d'erreur de compilation.
    Mais mon probleme n'est pas encore r�solu,
    lorsque je met: dans ma boucle goto du thread
    la fenetre s'ouvre, reste fig� et tout les �l�ments ne sont pas dedans(Label etc) ceci me fait penser � un plantage et lorque j'enleve le goto pour que le programme ne tourne plus en boucle ma page s'ouvre puis se ferme imm�diatement

    Une id�e?

  4. #4
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Il fautdrait que tu place dans ta boucle des :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Application->ProcessMessages();
    Ce qui permettra au thread de rendre la main � l'application pour l'affichage comme il faut.

    Ensuite pour le fait que la fen�tre s'ouvre, puis se referme il se peut que ta Form soit d�clar�e dans le Thread, et le fait que le thread se termine, cela tue la fen�tre (et donc la ferme) mais ca reste une supposition.

    Au pire, si tu peux mettre un bout de code, si les processmessages ne fonctionne pas.

  5. #5
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Salut, j'ai un probl�me similaire: http://www.developpez.net/forums/sho...d.php?t=279822

    J'esp�re que tu auras plus de chance que moi. J'avais laisser tomber ce comportement, mais je crois qu'avec l'ouverture de ce post que je vais tenter ma chance une seconde fois.

Discussions similaires

  1. pb de Cr�ation d'une vu dans une Form
    Par hamza.rezgui dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 07/03/2013, 11h38
  2. choisir un prix en fonction d'une date dans un sous form
    Par St�ph utilisateur d'acces dans le forum VBA Access
    R�ponses: 6
    Dernier message: 21/04/2008, 20h20
  3. probleme avec un Form dans un Thread
    Par cyrille37 dans le forum Windows Forms
    R�ponses: 7
    Dernier message: 09/02/2008, 11h45
  4. [VB6]Passer une varible dans un autre form
    Par mike292 dans le forum VB 6 et ant�rieur
    R�ponses: 4
    Dernier message: 25/04/2006, 16h12

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