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 :

Pagecontrol et Tabsheet


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut Pagecontrol et Tabsheet
    Bonjour !

    J'ai un petit souci....
    J'ai dans ma Form un control PageControl avec plusieurs TabSheets, disons TabSheet1 et TabSheet2
    J'aimerais qu'en cliquant sur TabSheet2, si une certaine condition est remplie, que celle-ci ne s'affiche pas mais qu'on reste putôt sur TabSheet1.

    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void __fastcall TForm1::TabSheet2Enter(TObject *Sender)
    {
        if(condition) {
          PageControl1->ActivePage = TabSheet1;
          TabSheet1->Show();
          MessageBox(Handle,"marche pas","Avertissement",MB_OKCANCEL|MB_ICONSTOP ) ;
          return;
        }
        else {
    .....
    Le message s'affiche bien lorsque la condition est remplie, mais malheureusement, je reste sur la TabSheet2. J'arrive pas à revenir sur la TabSheet1...

    Des idées ?? Merci beaucoup !

  2. #2
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Juste pour préciser les choses...

    ce n'est pas en fait la fonction "TabSheet2Enter" mais la fonction "TabSheet2Show" que j'utilise. Désolé pour l'erreur.
    J'ai essayé de faire la même chose cependant avec "TabSheet2Enter" et là c'est pire, je n'entre même pas dans ma routine ?!

  3. #3
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Normalement le fait d'assigner ton TabSheet1 à la propriété ActivePage est suffisant, pas besoin de faire le Show en plus.

  4. #4
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Pottiez....
    c'est bien ce que je pensais, mais malheureusement ça ne marche pas !

    Du coup j'ai essayé de mettre un bouton sur ma Form avec la même commande que j'ai écrite... et ça marche Je comprends plus rien.

    La question que je me pose : étant donné que à la propriété ActivePage est appelée lorsque je clique sur une tab, donc quand l'évènement OnShow est détecté, je me demande si l'affichage de la tab n'est pas forcé ??

    Par ailleurs, j'ai tenté ça aussi :

    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
     
    void __fastcall TForm1::TabSheet2Enter(TObject *Sender)
    {
        if() {
          PageControl1->ActivePage = TabSheet1;
          TabSheet2->Hide();
          TabSheet1->Show();
          PageControl1->Repaint();
          MessageBox(Handle,"La table est vide !","Avertissement",MB_OKCANCEL|MB_ICONSTOP ) ;
          PageControl1->ActivePage = TabSheet1;
          TabSheet2->Hide();
          TabSheet1->Show();
          PageControl1->Repaint();
          return;
        }
        else {
    ...
    histoire d'être bien sur qu'on affiche pas la TabSheet2 et qu'on ne montre que la TabSheet1...
    Résultat : La TabSheet2 n'apparaît pas, la 1 reste apparente, la boite de message s'affiche, mais là, une fois que la boite de message disparaît, la TabSheet2 est activée ! J'y comprends plus rien.

  5. #5
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Ca doit être parce qu'il active les page après les évènements, certain évènement se produisent avant l'action et d'autre après, c'est spécifié dans l'aide normalement.

  6. #6
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Bon ben je crois que j'ai trouvé ma solution, merci le forum JBuilder

    Alors plutôt que de mettre ma condition dans l'appel du TabSheetShow(), j'ai utilisé les évènements de la PageControl :

    PageControl->OnChanging et PageControl->OnChange

    Mais là encore il a fallu que je multiplie les conditions, c'est-à-dire que je mette ma condition dans le OnChanging et le OnChange, et comme ça suffisait pas, il a fallu aussi que je mette la condition dans le TabSheet->OnShow() puisque je me suis aperçu que celle-ci était lancée même si la table n'était pas active !

    Bref ça fait un peu lourd, c'est surement juste du patchage, mais ça marche. J'avoue c'est pas ce qu'il y a de plus élégant, mais j'ai vraiment pas trouvé d'autre solution....

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

Discussions similaires

  1. Colorer pagecontrole et tabsheet
    Par bekomolla dans le forum Débuter
    Réponses: 1
    Dernier message: 27/01/2014, 09h19
  2. pagecontrol avec tabsheet dynamique
    Par numeror dans le forum Débuter
    Réponses: 2
    Dernier message: 04/06/2009, 11h37
  3. Font color d'une PageControl ou d'un TabSheet
    Par SpIrIt505050 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/11/2008, 21h22
  4. Redessiner un tabsheet d'un pagecontrol
    Par rvzip64 dans le forum Delphi
    Réponses: 1
    Dernier message: 07/09/2006, 21h10
  5. Réponses: 3
    Dernier message: 17/08/2006, 12h03

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