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 :

Comment rendre une fenetre prioritaire ?


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 216
    Par défaut Comment rendre une fenetre prioritaire ?
    Bonjour,

    Comment rendre une fenetre prioritaire, c'est-à-dire qui ne permet pas au programme de continuer tant qu'elle n'est pas fermée (validée)?

    Merci d'avance.

  2. #2
    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
    Tu lèves un flag à l'ouverture de la fenêtre (OnFormShow) et tu le baisses à la fermeture de la fenêtre (OnFormClose). Tu n'as qu'a te servir du flag dans le reste de ton programme pour gérer la priorité des actions.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par défaut
    Salut pasqual,

    tu peux aussi mettre le style de ta fenêtre à bsDialog.
    Ainsi tant que celle-ci n'est pas fermé, rien ne se passe dans ton programme !

    @+

    Xav

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 216
    Par défaut
    Merci pour vos réponses.
    J'ai essayer ta proposition Xav++, mais cela ne semble pas marcher.
    J'ai oublier de préciser que je travaille sur une application MDI, peut etre est-ce pour cela que ça ne marche pas?

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Par défaut
    Bonjour,

    Il faut utiliser ShowModal pour afficher la fiche :

    Affiche une fiche sous forme de boîte de dialogue modale.

    virtual int __fastcall ShowModal(void);

    Description

    Utilisez la méthode ShowModal pour afficher une fiche comme fiche modale. Dans une fiche modale, l'application ne peut pas continuer à s'exécuter jusqu'à ce que la fiche soit fermée. Par conséquent, ShowModal ne renvoie rien avant la fermeture de la fiche. Lorsque la fiche se ferme, elle renvoie la valeur de la propriété ModalResult.

    Pour fermer une fiche modale, affectez une valeur non nulle à sa propriété ModalResult.

    Remarque : Si la fiche contient des boutons dont la propriété ModalResult a une valeur autre que mrNone, elle se ferme automatiquement lorsque l'utilisateur clique sur l'un de ces boutons et renvoie la valeur de ModalResult comme valeur de renvoi de ShowModal.

    Vous pouvez comparer la valeur renvoyée aux valeurs habituellement renvoyées en utilisant la fonction IsAbortResult, IsAnAllResult, IsNegativeResult ou IsPositiveResult globale.
    Exemple tiré de l'aide :
    Les méthodes suivantes sont utilisées pour les boutons dans une fiche utilisée comme une boîte de dialogue modale. Les méthodes provoquent la fin de la boîte de dialogue lorsque l'utilisateur clique sur OK ou Annuler, renvoyant respectivement mrOk ou mrCancel de ShowModal. Vous pourriez aussi initialiser la valeur ModalResult à mrOk pour le bouton OK, et mrCancel pour le bouton Annuler afin d'accomplir la même chose. Lorsque l'utilisateur clique sur l'un des deux boutons, la boîte de dialogue se ferme.

    void __fastcall TOKRightDlg::OKBtnClick(TObject *Sender)

    {
    ModalResult = mrOk;
    }
    void __fastcall TOKRightDlg::CancelBtnClick(TObject *Sender)
    {
    ModalResult = mrCancel;

    }

    Ce code fait apparaître la boîte de dialogue modale à partir de Form1 lorsque l'utilisateur clique sur un bouton. Cela provoque un message sonore s'il s'agit du bouton OK.

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {
    if (OKRightDlg->ShowModal() == mrOk)
    MessageBeep(0);
    }
    Nicolas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par défaut
    En effet comme l'a dit Nicolas tu dois utiliser ShowModal()

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form2 = new TForm(); 
    Form2->ShowModal();
    et cela fonctionne parfaitement avec les fenêtres MDI.

    @+

    Xav

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

Discussions similaires

  1. comment rendre une fenetre modal
    Par inter_amine dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 14h06
  2. comment rendre une fenetre modale ?
    Par inter_amine dans le forum Interfaces Graphiques en Java
    Réponses: 12
    Dernier message: 23/03/2007, 11h04
  3. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17
  4. [ADO.NET] Comment rendre une certaine colonne "AutoIncrement" ?
    Par maitrebn dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/03/2005, 22h12
  5. Comment effacer une fenêtre DOS ?
    Par Myogtha dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 15/06/2004, 15h03

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