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 :

Simplifier par un tableau l’appel et l’utilisation d’une Surcharge sous BCB 6.


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 Simplifier par un tableau l’appel et l’utilisation d’une Surcharge sous BCB 6.
    Bonjour tout le monde.

    Je voudrais améliorer une fonction que j’ai écrite mais sur lequel il manque deux choses .

    Tout d’abord, je fais appel à une surcharge pour affiché des pages à la demande dans un TPageControl que j’ai surnommé MainPageControl.

    Je me retrouve donc avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1->MainPage1->TabVisible = true;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1->MainPage1->TabVisible = false;
    Or voila je n’ai pas qu’une seule page à affiché ! Au contraire, avec l’évolution du programme, le TPageControl va s’enrichir . Pour m’éviter de retaper à chaque fois toute la surcharge, je voudrais placé ces surcharges dans un tableau et y accéder par un numéro .
    Par la suite, j’appel le numéro qui m’intéresse, mentons 1 qui me conduira sur Form1->MainPage1->TabVisible et je lui affecterias un true.

    Pour être plus explicite, je vous send ma fonction, l’endroit ou je compte mettre mon tableau est en commentaire ainsi que l’endroit ou s’effectue son utilisation.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    /* Fonction qui permetra l'affichage des onglets par configuration de la page demandé. */
       void AffichageOngletsMain(int IntAffichageOnglet)
       {
             //On regarde le nombre d'onglet.
             int NbOngletDispo = Form1->MainPageControl->PageCount;
     
             //On initialise un tableau contenant:
             //1 = Form1->MainPage1->TabVisible
             //2 = Form1->MainPage2->TabVisible
             //3 = Form1->MainPage3->TabVisible
             //4 = Form1->MainPage4->TabVisible
             //5 = Form1->MainPage5->TabVisible
     
     
     
             //On vérifie que la page demander existe...
             if((IntAffichageOnglet > 0) && (IntAffichageOnglet <= NbOngletDispo))
             {
                //La page existe...
                for(int i = 1; i <= NbOngletDispo; i++)
                {
                   //Si on arrive à la page sélectionné...
                   if(i = IntAffichageOnglet)
                   {
                      //On affecte la page à true.
     
                      //Pour ce faire on va chercher dans le tableau ce qui correspond à
                      //IntAffichageOnglet et on lui afecte un true.
                   }
     
                   //Ce n'est pas la page sélectionné, on affecte à false.
     
                   //Pour ce faire on va chercher dans le tableau ce qui correspond à
                   //IntAffichageOnglet et on lui afecte un false.
                }
     
             }
             else
             {
                //La page n'existe pas donc à affectera seulement la page de démarrage à true.
     
                Form1->MainPage1->TabVisible = true;
                Form1->MainPage2->TabVisible = false;
                Form1->MainPage3->TabVisible = false;
                Form1->MainPage4->TabVisible = false;
                Form1->MainPage5->TabVisible = false;
             }
       }
    Il ne me reste plus qu’à vous remercier pour la qualité de vote site (toujours agréable à lire et à chercher des informations fort utile quelque que soit la programmation choisit).
    A bientôt.

  2. #2
    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
    Bonjour,
    A vue de nez, je te proposerais d'utiliser une TList (avec AddObject, etc).

    Bon courage,
    @ +

  3. #3
    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
    Je viens de faire un tour dans l’aide de Borland , et effectivement cela semblerait être la solution. En apparence du moins !

    Effectivement, dans la mesure ou On a MainPage1, MainPage2, MainPage3 … ca peut allé mais dans le cas ou on a MainPage1, MainPageDocument, MainPageFonction etc…
    La il faut que je fabrique un tableau en dur ! Il me semble du moins…

    A bientôt.

  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
    Bonjour,
    Personne n’aurait une petite idée à tout hasard ?
    Par ce que je ne voudrais pas dire mais je piétine sérieusement et cela m’obligerais à passé par une solution bien moins jolie pour réaliser la même chose !

    A bientôt.

  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,

    Comme l'a indiqué Sunchaser, on peut utiliser une TList pour stocker une référence à chaque page déclarée (TTabSheet). Avec cette solution, peu importe le nom donné à chaque page, puisqu'on y accède via un indice (l'indice d'insertion dans la liste).

    L'autre solution est de nommer les pages avec leur indice (par exemple, MainPage1, MainPage2,...). Ceci permet ensuite d'accéder à ces pages via la méthode FindComponent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TTabSheet *MyPage;
     
    for (int i=0 ; i< MAX_PAGES ; ++i)
       {
       MyPage = dynamic_cast <TTabSheet *>   (FindComponent(AnsiString("MainPage")+(i+1)));
       if (MyPage)
            MyPage->TabVisible = (i==intAffichageOnglet); 
       }
    Nicolas

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Dans un TPageControl on trouve les propriétés suivantes :

    ActivePage
    PageCount
    Pages

    Est-ce que ça peut servir ici ?

    A plus !

  7. #7
    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
    Bonjour,

    Je viens de voir vos indications et je vous en remercie pleinement . Elle m’éclaire un petit peu (c’est déjà cela !) .
    J’aimerais en savoir un peux plus sur l’utilisation de la TList, l’aide de Borland étant, à mon goût un peu succincte


    Surtout que je compte faire mon tableau d’un côté (Déclaration, insertion de chaque référence et indexation) et son utilisation de l’autre (Rappel d’une référence depuis son indexation). Sachant que le tout (Tableau -> Traitement -> Affectation) se trouve dans la fonction elle-même .

    A bientôt.

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

Discussions similaires

  1. [Tableaux] Liste renseignée par un tableau
    Par teen6517 dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2007, 11h25
  2. Réponses: 20
    Dernier message: 05/07/2006, 20h03
  3. Réponses: 7
    Dernier message: 26/04/2006, 16h16
  4. [Tableaux] Remplacer les Frame par un tableau?
    Par Malau dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2006, 16h43
  5. Menu déroulant par dessus tableau
    Par M1000 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/12/2005, 15h14

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