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 faire le changement de "Tabs" dans un TJvgTabControl ?


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut Comment faire le changement de "Tabs" dans un TJvgTabControl ?
    Bonjour,

    je voudrai savoir comment effectuer le changement de "Tabs" (onglets) en fonction d'un numéro de série : au début de l'application aucun tabs, je reçois un numéro de série sur une trame et je le mets dans une tabs, je reçois le même numéro de série je reste dans cette tabs, si le numéro de série est différent je change de tabs (incrémentation) et je l'inscrit ...

    Alors voilà, j'ai fait comme ceci :
    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
     
    for (int n =0; n <= FormClient->JvgTabControlFlotteurs->Tabs->Count ; n++) 
    {
     
     
    AnsiString chaine = FormClient->JvgTabControlFlotteurs->Tabs->GetText();
     
    if (chaine != NumSerie )
    {
    FormClient->JvgTabControlFlotteurs->TabIndex+1;
    FormClient->JvgTabControlFlotteurs->Tabs->Text = NumSerie;
    }
    if ((chaine == NumSerie) )
    {
    FormClient->JvgTabControlFlotteurs->Tabs->Text = NumSerie;
    }
     
    }
    Mon code doit effectivement comporter des erreurs mais le problème est qu'à chaque fois ça réécrit sur le même tabs !!!!!


  2. #2
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut, l'erreur vient de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormClient->JvgTabControlFlotteurs->TabIndex+1;
    En effet, ici tu prend la valeur de TabIndex et tu y ajoute 1, mais tu n'enregistre cette nouvelle valeur nul part, il faut donc que tu fasse ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormClient->JvgTabControlFlotteurs->TabIndex = FormClient->JvgTabControlFlotteurs->TabIndex+1;
    ou pour gager en espace de code tu peut mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormClient->JvgTabControlFlotteurs->TabIndex++;
    Edit : Une remarque en plus, la tu ne modifie que l'index de l'onglet courant, mais cette onglet n'est peut-etre pas créé automatiquement, à toi de voir, je ne connait pas le JvgTabControl
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Edit : Une remarque en plus, la tu ne modifie que l'index de l'onglet courant, mais cette onglet n'est peut-etre pas créé automatiquement, à toi de voir, je ne connait pas le JvgTabControl
    Comment ça !!!

    Comment le créer automatiquement alors ?

  4. #4
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    et bien par exemple sur le TTabControl, il faut ajouter le titre du nouvel onglet à créer dans la propriété Tabs de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTabControl->Tabs->Add("Titre de l'onglet");
    Sur ton composant il doit y avoir surement un système similaire, cela peut peut-être juste en incrémentant le TabIndex, mais cela m'étonnerai, ne connaissant pas plus que ca le composant je ne vais pas pouvoir t'aider beaucoup plus malheureusement pour toi
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Cela ne marche toujours pas !

    Les onglets s'incrémentent bien mais il y a tout de même un problème : avec un premier numéro de série j'ai un premier onglet, un deuxième numéro de série donc un deuxième onglet, puis le premier numéro de série réapparait et là ça me créé un troisième onglet au lieu d'en rester là car il a déjà été créé en premier !!!!!

    J'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int n =0; n <= FormClient->JvgTabControlFlotteurs->Tabs->Count ; n++) 
    {                          
     
    AnsiString chaine = FormClient->JvgTabControlFlotteurs->Tabs->GetText();
     
    if (chaine != NumSerie )
    {
    FormClient->JvgTabControlFlotteurs->Tabs->Add(NumSerie);
    break;
    }
     
    }

  6. #6
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Effectivement, ton test n'est pas bon, la tu va créer un tab à chaque fois qu'un tab précédent n'est pas le même numero de série, il faut que tu verifie tout les tab et ensuite, en dehors de la boucle, tu créé le nouveau tab ou tu affiche un déjà créé, par exemple :

    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
     
    int index = -1;
    for (int n =0; n <= FormClient->JvgTabControlFlotteurs->Tabs->Count ; n++) 
    {                          
      AnsiString chaine = FormClient->JvgTabControlFlotteurs->Tabs->GetText();
     
       if (chaine == NumSerie )
      {
        index = n;
        break;
      }
     
    }
     
    if(index == -1)
    {
      FormClient->JvgTabControlFlotteurs->Tabs->Add(NumSerie);
    }
    else
    {
      //Afficher le tab numéro index
    }
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Merci Pottiez !

    //Afficher le tab numéro index
    Comment ça ???

    C'est mettre : FormClient->JvgTabControlFlotteurs->TabIndex = index;



  8. #8
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui c'est ça, je ne connaissait pas la syntaxe exacte, donc j'ai mis en commentaire
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Ça marche pas !

    <== blasé !

  10. #10
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui mais qu'est-ce qui ne marche pas?
    Quel est le fonctionnement actuelle ?
    Tu as des message d'erreur ?
    Ça ne fait pas ce que tu attend ?
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  11. #11
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Si ce composant est en tous points similaire à TTabControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString UnCode;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int n = Compo->Tabs->IndexOf(UnCode);
    if(n < 0)
        {
        Compo->Tabs->Add(UnCode);
        //...
        }
    else
        {
        Compo->TabIndex = n;
        //...
        }
    A plus !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Cela fait toujours la même chose : rajouter une tabs avec numéro de série déjà existant !

    Aucune erreur de compilation !

  13. #13
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Alors c'est que l'une des deux chaines ne doit pas être correct, un truc du genre un espace à la fin ou quelque chose comme ca qui fait qu'il ne retrouve pas un tab existant
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  14. #14
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    De fait, les espaces sont pris en compte : "A" " A" "A " " A " sont autant de chaînes distinctes !
    Donc pour supprimer les espaces inutiles à gauche et à droite :
    - soit prendre un peu plus de soin pour extraire la chaîne
    - soit appliquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString UnCode;
    //...
    UnCode = UnCode.Trim();
    Et ensuite appliquer le raisonnement avec IndexOf !

    A plus !

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Et bien ce que je voulai faire à l'air de fonctionner !

    Par contre, j'ai une autre question : dans mes tabs, j'ai des graphes et je voudrai que l'info arrivant de tel ou tel numéro de série s'applique à la tabs associée car pour l'instant l'info s'applique à toutes les tabs créées !

    Donc, comment dois je m'y prendre svp ?


  16. #16
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    il faut que tu enregistre en mémoire les données arrivant en fonction du numéro de serie, et qu'ensuite lorsque tu change de tab, tu vide ton graphique et que tu remette uniquement les données correspondant à ton tab.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Moèp ! =>

  18. #18
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Tu utilise quoi pour faire ton graphique ?
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    J'utilise des TChart (FastLine) !

    Avec la fonction "AddXY()" !

  20. #20
    Responsable Magazine

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Tous va bien alors, rien de difficile
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/08/2006, 17h56
  2. Comment faire référence à un champ d'un etat dans une requete?
    Par polianita dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/06/2006, 16h26
  3. Comment faire référence à un champ d'un etat dans une requete?
    Par polianita dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 16/06/2006, 18h46

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