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 :

Form1 + visible


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut Form1 + visible
    bonjour
    je n 'arrive pas a rendre invisble la Form1 de mon application au demarage .
    je voudrais que seul la Form3 soit visible .
    est ce impossible ?

    merci

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    il faut que tu modifie la form principale de ton projet.
    En effet, la Form1 doit être définit comme form principal de ton projet et donc celle qui s'ouvre en premier, si tu veut modifier cela, tu doit aller dans les options du projet et dans l'onglet Fiche tu à un comboBox pour sélectionner ta Form principale
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    oki merci mais cela fait planter mon prog , je m'explique :
    il y a des variables globales qui sont calculés dans le Form 1 et utiliser dans le Form3 , or je voudrais que ce traitement n apparaisse pas au démarrage ( Form1 caché ) . mais que les résultats soit visible au démarrage dans le Form3 .
    C est possible ?

  4. #4
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    C'est possible de rendre invisible la Form1, mais cela prendra effet que si tu le fait après le Show du démarrage du programme, donc la Form1 va forcement s'afficher un petit moment
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    oki tant pis je prendre ta solution . comment faire ?

  6. #6
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Ce n'est surement pas la solution la plus propre, mais en voici une :
    Ajouter un TTimer à la Form1 avec pour propriété Interval 1 et Enabled false
    Dans l'évènement OnCreate de la Form1 modifier la propriété Enabled du timer et la mettre à true, et dans l'évènement OnTimer, mettre la propriété Visible de la Form1 à false et le Enabled du timer à false également.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par pottiez Voir le message
    Ce n'est surement pas la solution la plus propre, mais en voici une :
    Ajouter un TTimer à la Form1 avec pour propriété Interval 1 et Enabled false
    Dans l'évènement OnCreate de la Form1 modifier la propriété Enabled du timer et la mettre à true, et dans l'évènement OnTimer, mettre la propriété Visible de la Form1 à false et le Enabled du timer à false également.
    merci ca marche bien au demarrage , mais j ai oublie de préciser qu il fallait que la Form1 soit accessible par la suite , grâce a un bouton de la Form3. Or la forcement la forme1 n 'apparait que pendant 1s. J 'avais penser mettre un booleen en condition sur le enable du timer . mais je ne vois pas ou l'initialiser?

  8. #8
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Normalement dans le bouton de ta Form3, tu as juste mis Form1->Show() et ça devrait fonctionner normalement
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    ben non ca ne marche pas .
    j 'ai peut etre commis une erreur:
    c est bien la qu il fallait mettre le timer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    _fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    { 
     
    Timer1 -> Enabled = true ;
     
    }
    ok je pense que je n'ai pas bien compris , comment fait ton pour entrer des les lignes de codes dans le evenement OnCreate et Ontimer , desoler je debute ?

  10. #10
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 905
    Points : 2 129
    Points
    2 129
    Par défaut
    et avec :
    ShowMainForm = false ;
    dans le constructeur de la fenêtre principale ça donne quoi ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    niveau code c est ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    ShowMainForm = false ;
     
    }
    ShowMainForm non definit ?

  12. #12
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Met plutôt ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Application->ShowMainForm = false ;
     
    }
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  13. #13
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 905
    Points : 2 129
    Points
    2 129
    Par défaut
    Citation Envoyé par manworms2 Voir le message
    niveau code c est ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    ShowMainForm = false ;
     
    }
    ShowMainForm non definit ?
    euh oui :
    Application->ShowMainForm

    c'est une propriété de l'objet global Application qui permet, au démarrage, de ne pas afficher la fenêtre principale (cf. aide de c++ builder pour le détail)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par pottiez Voir le message
    Met plutôt ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Application->ShowMainForm = false ;
     
    }
    non desoler ca s affiche qd meme , ton idée de timer était pas mal , mais je n 'ai pas compris comment mettre les éléments dans les évènements . Peut tu m expliquer stp ?
    merci

  15. #15
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Avec BCB3 Pro il y a une astuce donc vérifier ce qu'il en sera avec votre version.

    Il s'agit de construire Form3 dans le constructeur de Form1 et donc d'en supprimer la construction depuis la WinMain en modifiant le Source du projet.

    Ca donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
        try
        {
            Application->Initialize();
            Application->CreateForm(__classid(TForm1), &Form1);
            Application->CreateForm(__classid(TForm2), &Form2);
    //        Application->CreateForm(__classid(TForm3), &Form3);
            Application->Run();
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
        return 0;
    }

    Dans le constructeur de Form1 (qui est normalement la principale) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    //Initialiser ...
    //...
    //... pour que Form3 exploite ce qui a lieu d'être
    //puis :
     
    Form3 = new TForm3(Owner);
    Form3->ShowModal();
    }
    Il n'y aura rien d'autre à faire, en hors d'initialiser ce qui doit l'être dans Form1 avant la création de Form3 pour qu'elle puisse l'utiliser.
    Le fait de solliciter Form3 en Modal n'a pas d'incidence sur ce qu'elle est (sauf MDIChild bien sûr !!!)!

    A plus !

  16. #16
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Lorsque tu as un objet sélectionné (Form, TTimer,...) tu as l'inspecteur d'objet correspondant à cet objet (généralement en bas à gauche de l'écran).
    Dans l'inspecteur d'objet, tu as un onglet évènement, dans cette onglet tu as la liste des évènements disponible pour cet objet, tu peut alors double cliqué sur l'évènement voulu, ce qui te permettra de mettre le code dans l'évènement.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  17. #17
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 905
    Points : 2 129
    Points
    2 129
    Par défaut
    faut pas que form 1 soit parent ou owner de form3 sinon effectivement, elle s'affichera qd meme. donc ..=new TForm3(NULL) et tu feras son delete dans le destructeur de TForm1
    et mettre ShowMainForm ne suffit pas, il faut aussi mettre visible à false (il faut les 2).
    Je dis tout ça de théorie, mais ici on utilise toujours showmainform sans soucis pour faire ça, donc ça doit marcher

  18. #18
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Et ma solution ?
    Vous l'avez testée pour savoir si ça fonctionne avec les versions ultérieures à BCB3 Pro ?

    A plus !

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par pottiez Voir le message
    Lorsque tu as un objet sélectionné (Form, TTimer,...) tu as l'inspecteur d'objet correspondant à cet objet (généralement en bas à gauche de l'écran).
    Dans l'inspecteur d'objet, tu as un onglet évènement, dans cette onglet tu as la liste des évènements disponible pour cet objet, tu peut alors double cliqué sur l'évènement voulu, ce qui te permettra de mettre le code dans l'évènement.
    c est bon j ai réussit . la solution était la suivante :
    - mettre un timer dans la form1
    - dans formcreate : enabled timer = true
    - dans le timer visible = false
    et ensuite pour que ça marche dans mon bouton de la form3
    - enabled timer = false
    - visible = true
    merci à tous désoler je n'ai pas tester l'autre solution , qui me paraissait bien complique pour mon niveau.

  20. #20
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Désolé, henderson, je n'avais pas vu ton post , mais je confirme que cette solution, plus propre que la mienne, fonctionne sur toutes les versions
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Kylix] contour visible d'un TextRect?
    Par skoupay dans le forum EDI
    Réponses: 1
    Dernier message: 12/03/2003, 12h00
  2. Réponses: 4
    Dernier message: 07/12/2002, 15h24
  3. Fenêtre visible au démarrage !?
    Par Lung dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2002, 14h55
  4. determiner les ligne visible ds un RichEdit
    Par hhfr dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2002, 18h15
  5. Form principale non visible au demarrage!!!!
    Par toufou dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/07/2002, 21h49

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