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 :

Petite question sur les TPageControl [BCB6]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut Petite question sur les TPageControl [BCB6]
    Bonjour,
    J’aurais besoin d’une petite indication.
    Actuellement j’utilise un composant nommé TPageControl. Je n’utilise qu’une seule page à la fois et cela m’oblige à passé par une suite de Form1->MainPage1->TabVisible = true, Form1->MainPage2->TabVisible = false etc.
    Existe-t-il une solution, dans le composant lui-même, qui ferais que l’on appelle la page à afficher par un Form1->MainPage1->TabVisible = true et qui mettrais automatiquement les autres pages à false ?

    Sinon je m’en remettrais à une fonction auquel cas je ferais passé chaque page par un tableau.

    Je vous remercie pour les indications que vous me porterais.
    A bientôt.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Je t'avoue ne pas trop comprendre l'interet de n'avoir qu'un seul onglet visible a la fois (dans la "liste" des onglets).

    Ce genre de traitement n'est pas automatique, a toi de te faire une petite fonction. En travaillant sur l'indice du tab a afficher ca se fait tres bien.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void TForm1::AfficheOnglet(TPageControl *page, int volet)
    {
      if (volet<0 || volet>=page->PageCount) return;
      for (int i=0;i<page->PageCount;i++) page->Pages[i]->TabVisible = false;
      page->Pages[volet]->TabVisible = true;
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Oui josse95, j’avais trouvé le même principe (heureusement sinon je n’aurais pas posté). Le souci c’est que je n’ai pas les mêmes noms de pages. Du coup cela m’obligerait à stocker ces noms dans un tableau puis à y faire appel a partir de la fonction. Soit directement depuis la fonction elle-même soit à partir de pointeurs, voir les deux… Et la je ne sait plus trop . Si il faut que je re-code toutes mes pages, ce qui est aussi une solution, cela peut remettre en cause ce qui a été nommé pour plus de clarté .

    Enfin je reste à l’écoute si d’autres solutions s’offrent ici .

    A bientôt.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Désolé, je ne comprends pas. Où interviennent les noms de page dans l'exemple que j'ai donné ? On accède aux pages par un index et non par leur nom ...

    Et quand tu dis que tu n'as pas les mêmes noms de page, qu'entends tu par là ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    En fait c’est simple .
    • Onglet1 : PageVisualisation1
    • Onglet2 : PageLog1
    • Onglet3 : PageCreation1
    • Onglet4 : PageErreur1
    Etc.
    Donc à la pace de ‘Form1->PageControl1->TabVisible’ j’ai ‘Form1->PageVisualisation1->TableVisible’ donc cela ne correspond plus. Du coup il faudrais que 1 corresponde à PageVisualisation1 puis 2 à pageLog1 etc.

    C’est pour cela que je pensais à passer dans un tableau. On le déclare, on place la correspondance dedans puis avec des pointeurs on appel le numéro et on affecte au résultat du numéro un true ou un false
    Bref c’est le principe que j’avais retenue mais sans succès .


    Est-ce faisable ?

    Il me reste plus qu’à avancer un peu et voir si je peux contourné ce problème.

    A bientôt.

  7. #7
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    J'ai besoin d'une grosse précision, cher Draner, au sujet de tes onglets (Onglets1, Onglets2, etc ...):

    On parle bien de TTabSheet la ?, des onglets d'un TPageControl quoi ... (?)

    Si oui, pourquoi insistes tu pour 'appeler' tes onglets a partir de la TForm, alors que tu peut le faire a partir de leur Index dans le TPageControl ?
    (comme indiqué précédemment)

    Quels que soient les noms de tes onglets, tu peut utiliser le code posté par Josse95, que je reprends ici (je me permets) puisque j'ai essayé avec tes noms d'onglets :
    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
     
    //dans le .h:
    void AfficheOnglet(TPageControl *page, int volet);
    //dans le .cpp:
    void TForm3::AfficheOnglet(TPageControl *page, int volet)
    {
      if ( volet < 0 || volet >= page->PageCount ) return;
     
      for ( int i = 0; i < page->PageCount; i ++ )
      {
    	page->Pages[i]->TabVisible = false;
      }
      page->Pages[volet]->TabVisible = true;
    }
    //appel avec un TButton:
    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
         AfficheOnglet(PControl, 1);
    }
    Et vraimment, comme le motre josse, on a pas besoin du nom des TTabSheets

    En espérant t'aider,
    @+

  8. #8
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Maintenant,
    Si tu as vraiment besoin de te repérer au Name des TTabSheets, tu peut envisager qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TTabSheet *tab = dynamic_cast < TTabSheet * > (Form3->FindComponent("PageLog1"));
    AfficheOnglet(PControl, tab->TabIndex);
    @ +


    //EDIT:
    Sinon, en parlant d'onglets, moi ... je les aime cuits 'a point', avec une petite tombée d'échalottes, très classique quoi ... et vous ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut



    En fait si j’ai bien compris, on n’a pas besoin de savoir le nom de la page, mais seulement son numéro de position dans le TPageControl. Si tel est le cas, effectivement le code de josse95 est la solution .

    Quand au fait d’appelé depuis la TForm, c’est ainsi que j’ai appris et jusque là, ca n’a jamais vraiment déranger mon code. Sauf dans le cas ou on cherche une automatisation, ce que fait la fonction de josse95 .

    Il me semble que j’ai du raté quelque chose au départ quand je me suis mis au c++…


    Merci beaucoup pour toute ces précision.

    A bientôt.

  10. #10
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    ?

Discussions similaires

  1. Petite question sur les conventions de nommage en Java
    Par implosion dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2006, 15h54
  2. Petites question sur les onglets...
    Par jarod_bx dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 18h45
  3. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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