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 :

différencier plusieur même form


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut différencier plusieur même form
    Bonjour, je me heurte aujourd'hui à un nouveau problême.

    Explication du sujet:

    Mon locigiciel écrit en c++ sous borland builder c++ doit détecter les défauts d'une machine et demander à l'opérateur la raison de ces défauts.

    Pour ce faire, dès qu'un défaut est détecté, j'ouvre une nouvelle form et j'attend que l'opérateur saisi les donnée.

    Problème:

    Si plusieurs défauts apparaisssent, plusieurs mêmes fenêtres apparaissent, ce qui est très bien. Le problême est: comment différencier ces fenêtres? car lorsque j'appuie sur mon bouton "valider", c'est l'algorithme du bouton "valider" de toutes les forms qui se met en route. De plus toute les variables déclaré dans cette fiche communique les unes avec les autres, c'est à dire que si je modifie une variable dans une form, elle prend effet dans toutes les autres.

    Vous avez une idée pour m'en sortir??

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Tu peux utiliser la propriété Tag dans la Form pour les différencier. Met un compteur ou un ID quelconque et fais un traitement lors de la fermeture de la fenêtre.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    ok, je vais faire quelques recherches sur ce "tag"

    merci

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Tag appartiens à la classe TComponent et tu peux y mettre ce que tu veux. C'est pratique quand tu a besoin d'identifier un composant quelconque.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Crayon
    Tag appartiens à la classe TComponent et tu peux y mettre ce que tu veux.
    Je dirai que l'on met ce que l'on veut tant que ça reste un entier

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut
    Ouep ou tu as aussi une autre solution :

    Je penses que tu alloues dynamiquement tes forms, donc lors de l'allocation tu les stocks dans une List ainsi tu pourras accéder facilement et indépendament à toutes tes Form.


    A+

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Galip
    Ouep ou tu as aussi une autre solution :

    Je penses que tu alloues dynamiquement tes forms, donc lors de l'allocation tu les stocks dans une List ainsi tu pourras accéder facilement et indépendament à toutes tes Form.


    A+
    As tu un exemple? je n'ai pas tout saisi.
    J'appelle mes forms de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (defaut_j_PMJ2 == true)
           {
           defaut_j_PMJ2_temp = true;
           Form2 = new TForm2(this);
           Form2->Label6->Caption = "2B";
           Form2->Label2->Caption = "orange";
           }

  8. #8
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    tu utiliste une TList

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       TList *ListeForm = new TList();
    Ensuite quand tu crées ta form dynamiquement tu fait 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
     
    if (defaut_j_PMJ2 == true)
    {
           defaut_j_PMJ2_temp = true;
           TForm *Form = new TForm(this);
           Form->Label6->Caption = "2B";
           Form->Label2->Caption = "orange";
     
           // Comme te l'a suggéré Crayon, tu utilise le Tag pour identifier ta form
           // Tu peux par exemple la numéroté en fonction du nombre de form que
           // Tu as déjà ajouté 
           Form->Tag = ListeForm->Count;
     
          // Tu ajoute la form à la liste des form
          ListeForm->Add(Form);
    }
    Ensuite, il te suffit pour accéder à ta form de connaitre son Tag et tu peux te créer une fonction de recherche de ta form

    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
     
    TForm * __fastcall TMaForm::LaForm(int Tag)
    {
       for(int i = 0; i < ListeForm->Count; i++)
       {
          // On extrait la form à l'indice i
          TForm *Form = (TForm *)(ListeForm->Items[i]);
     
          // Si le Tag de la form correspond
          if(Form->Tag == Tag)
          {
                // On a trouvé la bonne form
                return Form;
          }
       }
    }

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Je me lance, je vous tien au courant

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Pour l'instant tout à l'air de fonctionner à la perfection, mais je n'ai pas encore tout testé.

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Bon.... , je pense qu'il est l'heure de déclarer ce problème comme

    Un grand merci à vous tous!

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Il me reste quand même encore un petit probleme,
    lorsque j'attribut une valeur à une variable, le changement est pris en compte dans toutes mes Forms
    j'ai déclaré mes variables de cette façon:

    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
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit_acquit_defauts.h"
    #include "Variables.h"
    #include "Unit_thread_dialogue.h"
    #include "Principal.h"
    #include "Unit_fonction.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    long unsigned GetTckCount_test;
    String def;
    String couleur;
    String cellule;
    String debut;
    String fin = "";
    int num_ss_defaut;
     
     
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
            : TForm(Owner)
    {
    }

    Il faut les déclarer autrement?

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Autant pour moi, je crois que j'ai dis n'importe quoi pour les variable

    Merci encore, @+

  14. #14
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Ben non, mon problême de variable est toujours présent

    Vous avez une idée pour ça:

    Il me reste quand même encore un petit probleme,
    lorsque j'attribut une valeur à une variable, le changement est pris en compte dans toutes mes Forms
    j'ai déclaré mes variables de cette façon:


    Code :
    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit_acquit_defauts.h"
    #include "Variables.h"
    #include "Unit_thread_dialogue.h"
    #include "Principal.h"
    #include "Unit_fonction.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    long unsigned GetTckCount_test;
    String def;
    String couleur;
    String cellule;
    String debut;
    String fin = "";
    int num_ss_defaut;


    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
    {
    }

    Il faut les déclarer autrement?

    Le tag de la form n'englobe pas les variables?

  15. #15
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    pourquoi tu les mets pas en données membres? une raison particulière?
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  16. #16
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    il faut les déclarer dans ta classe Form les variables si tu veux qu'elles soient différentes pour chacune de tes Form.

    En les déclarant comme ca, c'est une déclaration globale il me semble donc elles ont la même valeur dans toutes les instances de ta classe.

  17. #17
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    +1, d'où ma question
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  18. #18
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Au risque de passer pou un comment on fait?

  19. #19
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut

    bah, dans le point H (.h) tu dois avoir des rubriques Private : Public
    tu les mets là
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  20. #20
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Je savais, c'était juste pour voir si vous maitrisez le sujet (je rigole)

    un grand à vous tous, mon problême est

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

Discussions similaires

  1. Lire plusieurs vidéos sur une même form en même temps
    Par kurul1 dans le forum C++Builder
    Réponses: 33
    Dernier message: 21/04/2008, 09h04
  2. problèmes avec plusieurs TQuery sur un même Form
    Par tomguiss dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/01/2008, 12h22
  3. [C#] [débutant] plusieurs panels dans la même form
    Par fsutter dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/05/2007, 17h24
  4. Affichage de plusieurs graphiques sur une même form
    Par redpulse dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/02/2007, 08h41
  5. Problème pour différencier plusieurs select avec le même nom
    Par vallica dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/04/2006, 11h35

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