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 :

Appel d'une seconde fiche [Débutant]


Sujet :

C++Builder

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Par défaut Appel d'une seconde fiche
    bonjour,

    Dans le cadre des mes études, je viens de me lancer dans le C++, et plus particulièrement avec Borland C++ Builder. Mais je dois avouer que ce n'est pas sans difficulté !

    Je viens donc vous exposer mon probleme :

    Pour m'entrainer, je fais des programmes qui n'ont pas d'autres utilités que de manier les objets, etc ...

    Donc, sous C++ Builder, j'ai créé une fiche appelé Form1 dans laquelle j'ai créé un menu " calcul de base" et un sous menu "addition".

    Voila le code complet :

    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
    18
    19
    20
    21
    22
    23
    24
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
     
    void __fastcall TForm1::Addition1Click(TObject *Sender)
    {
        LockWindowUpdate(ClientHandle);
        if(Form2==NULL) Form2 = new TForm2(this);
        Form2->WindowState = wsMaximized;
        LockWindowUpdate(NULL);
    }
    Comme vous pouvez le voir, lorsque je clique sur Addition, je souhaiterai que ma seconde fiche s'ouvre ( Form2 )

    Or, avec le code que je vous ai fournit, Form2 refuse de s'ouvrir lorsque je clique sur addition, je précise que tout c'est déroulé normalement lors de la compilation.

    S'il manque le code de Form2, je peux le copier, mais je doute que celui ci ne soit très utile.

    Cordialement

    Coxycross

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Salut
    Il te manque un Form2->ShowModal() ou Form2->Show();
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    c'est l'une des questions les plus posées par mes étudiants, alors je leur ai fait 3 petits tutoriels là dessus.

    Tu les retrouveras ici:

    http://guytprog.blogspot.ca/p/test-new-page.html

    Applications Muliti Fenêtres, Part I, II et III.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Par défaut
    Merci c'est top ! ça marche, je ne connaissais pas cette fonction. J'aurais surement encore besoin de votre aide, mais je préfère cogiter dessus avant

    Edit: Merci pour les cours, je m'en vais les lire tout de suite !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Par défaut
    En effet, nouveau probleme que je n'avais pas hier, j'ai bien rajouté le Form2->Show(); mais le soucis c'est que lorsque je lance le programme, il n'attend pas l'appui sur le button pour ouvrir la fiche2, il ouvre les deux directement.

    Voila la partie du code qui dois poser soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
        LockWindowUpdate(ClientHandle);
        Form2->Show();
        if(Form2==NULL) Form2=new TForm2(this);
        Form2->WindowState=wsMaximized;
        LockWindowUpdate(NULL);
    }
    Ou alors ceci vient d'une quelconque propriété de Form2 ?
    Là je sèche

    Edit: Je viens d'essayer d'aller dans les options du projet, puis onglet "fiche" et passer fiche2 dans la colonne de droite, mais dans ce cas là, le programme plante lors du clique censé appelé Form2

    Merci d'avance

    Coxycross

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Tu as donc retirer la fiche Form2 créée automatiquement !
    Très bien ! C'est la première chose à faire !

    en plus, en toute logique Show ne peut pas être fait avant le new !
    Tu ne semble pas comprendre ce que fait le new et le rôle important de l'instanciation des objets !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      if ( ! Form2)
        Form2 = new TForm2(this);
     
      Form2->Show();
      Form2->WindowState = wsMaximized;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Par défaut
    En effet, le Show était mal placé, merci.

    Y a-t-il une différence entre Show() et ShowMedal() ?

  8. #8
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Hello
    Show() Montre uniquement la fiche, en fonction de l'application elle peut être affichée devant ou derrière la fiche appelante
    ShowModal() affiche la fenêtre de manière modale c.a.d qui'il faut faire une action sur la fiche affichée pe fermeture pour revenir à la fiche appelante
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Par défaut
    Merci pour les précisions.
    N'ayant pas de prof pour m'apprendre les rudiments, mais un seul cours que j'ai trouvé sur le net, je continue mes question.

    Celle ci ne devrait pas poser de soucis, j'ai créé deux fiche (form1 et form2) la première étant parent et la seconde enfant. Petit bemol, form2 s'ouvre dans form1 avec les propriétés d'une fenêtre Windows, c a d qu'on retrouve les 3 boutons en haut à droite ( réduire, minimize, et close ). J'ai réglé en parti cela en ouvrant form2 en wsMaximized, mais c'est pas encore tout à fait ça.

    En résumé form2 ne doit pas s'ouvrir avec ces 3 boutons, et seul le bouton "retour' que j'ai intégré a form2 doit fermer la page, et bien la fermer et pas la réduire, parce que pour le moment, le Close(); relier a mon bouton ne fait que réduire.

    En espérant avoir été assez précis

    Merci d'avance

    Coxycross

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Par défaut
    bonjour,

    juste pour dire qu'il un exemple dans le rep "exemple" de BCB

    voir "two Form"

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Par défaut
    Merci pour le conseil, mais j'avais déjà été voir cet exemple, mais il ne me convient pas.
    Parce que dans cet exemple, Form1 et Form2 sont en fsNormal et non pas en parent / enfant. De plus, cet exemple ne m'aide pas non plus sur le fait d'enlever les 3 boutons windows en haut a droite de la fenêtre.

    Edit: Je viens de trouver, c'est avec biSystemMneu = false

    Cordialement

    Coxycross

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de winform appeler une seconde fois.
    Par eldrad95 dans le forum C#
    Réponses: 6
    Dernier message: 08/11/2009, 09h46
  2. Appel d'une procedure toute les S secondes
    Par thierrybatlle dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/02/2006, 13h46
  3. Ouvrir une seconde fiche "dialog"
    Par firejocker dans le forum MFC
    Réponses: 8
    Dernier message: 16/11/2005, 22h33
  4. Réponses: 3
    Dernier message: 08/08/2005, 02h40
  5. Appel d'une "fiche disponible"
    Par Kentin dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/03/2005, 22h57

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