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

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    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 éprouvé
    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
    Points : 1 007
    Points
    1 007
    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 à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    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 éprouvé
    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
    Points : 1 007
    Points
    1 007
    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 chevronné
    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
    Points : 2 189
    Points
    2 189
    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.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

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