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

MFC Discussion :

[MFC] Taitement du bouton OK d'une page de propriétés


Sujet :

MFC

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut [MFC] Taitement du bouton OK d'une page de propriétés
    Bonjour,
    J'ai fait une feuille de propriétés et je voudrais que le bouton ok ne ferme la fenêtre et n'enregistre les données que si tous les champs sont remplis. Pour cela j'ai appelé la fonction OnOK de ma page de propriétés, je teste si tous les champs sont remplis, si c'est le cas, j'appelle CPropertyPage::OnOk(), sinon je fais afficher un message d'erreur par MessageBox. Mais le pb, c'est qu'il m'affiche le message d'erreur et me ferme la fenêtre avec la feuille de propriétés. Que dois je faire pour conserver la feuille de propriétés à l'écran?

  2. #2
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Un CDialog ne se ferme que quand CDialog::OnOK(); est appelée. CPropertyPage dérivant de CDialog ta fonction CPropertyPage::OnOk() doit donc ressembler à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CPropertyPage::OnOk()
    {
       if(test = ok)
       {
          CDialog::OnOK();
       }
       else
       {
          AfxMessageBox("Test non ok!!!");
       }
     
    }
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    oui c'est ça, j'ai bien mon message qui apparait mais après avoir cliqué sur Ok de la MessageBox, ma feuille de propriétés se ferme.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    void CDonneesGeneralesPage::OnOK() 
    {
    	CPropertySheet* pSheet = STATIC_DOWNCAST(CPropertySheet, GetParent());
     
    	CGeneralPs* pGeneralSheet = DYNAMIC_DOWNCAST(CGeneralPs, pSheet);
    	if (pGeneralSheet != NULL)
    	{
    		UpdateData();
     
    		if (pGeneralSheet->m_typesimulationpage.m_NomProjet != "" && m_DureeSimul != 0 && m_ParcTotal != 0)
    		{
    			CPreventifPs preventifsheet(_T("Simulation / Préventif"));
    			CCorrectifPs correctifsheet(_T("Simulation / Correctif"));
    			switch (pGeneralSheet->m_typesimulationpage.m_TypeSimulation)
    			{
    			case 0:
    				preventifsheet.DoModal();
    				break;
    			case 1:
    				correctifsheet.DoModal();
    				break;
    			default:MessageBox("Erreur de programmation");
    			}
    			CPropertyPage::OnOK();
    		}
    		else 
    		{
    			AfxMessageBox("Vous n'avez pas rempli tous les champs nécessaires");
    			return;
    		}
    	}	
    }

  4. #4
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    T'as essayé de mettre un point d'arret au niveau de
    pour voir si il ne s'exécuterait pas une raison obscure?

    Ca serait la seule raison pour que ca se ferme...[/code]
    Il y a seulement 10 sortes de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Pour info: j'ai résolu le pb en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CPropertyPage::OnApply();
    au lieu de

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

Discussions similaires

  1. Gerer bouton pour décrémenter une page dans une MFC
    Par wolverine1987 dans le forum MFC
    Réponses: 8
    Dernier message: 22/04/2009, 09h08
  2. bouton pour afficher une page dans la frame droite
    Par mouss4rs dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/04/2008, 15h30
  3. [MySQL] bouton d'accès à une page web
    Par mohamed2006 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/02/2008, 17h44
  4. Désactiver le bouton actualiser pour une page web
    Par bellemlih dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/12/2007, 09h12
  5. Un 3ème bouton pour ouvrir une page
    Par philippef dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/11/2006, 15h36

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