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 :

Questionnaire géant BCB2006


Sujet :

C++Builder

  1. #1
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut Questionnaire géant BCB2006
    bonsoir tout le monde
    je dois fair un questionnaire informatisé et j'ai pensé utiliser BCB2006
    jusque la rien de compliqué...
    le problème est que mon questionnaire doit comporter 89 questions avec chacune 2 ou 3 possibilités.
    et pour couronner le tout il faudrait qu'on ne puisse répondre aux questions que dans l'ordre.

    je ne sais plus du tout comment m'y prendre et suis ouvert à toutes les suggestions

    amicalement Mangacker

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    Tu peux utiliser des GroupBox par questions, contenant un TLabel (ta question) et des RadioButtons (pour tes réponses avec 1 seule réponse possible) ou des CheckBox (pour tes réponses avec plusieurs réponses possibles).

    Ensuite tu construis tes 89 GroupBox contenant les 89 questions et tu les rends visibles les uns après les autres. Tu peux construires 2 boutons pour passer ou revenir aux questions suivantes et précédentes.

    C'est une idée...

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    A la lecture de ton texte, trois questions se posent à moi:
    1) Est-ce que tu veux afficher toutes les questions en même temps ou est-ce que tu peux faire un système de page: je réponds à une questions puis clique un bouton pour passer à la suivante ?
    2) Est-que tes questions vont changer plus tard ou est-ce un formulaire qui n'évoluera jamais ?
    3) Que dois-tu faire du résultat?

  4. #4
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    1) si possible j'aimerai afficher qu'une seule question à la fois et les faire défiler (que dans un seul sens)

    2) c'est un formulaire qui n'évoluera jamais

    3) en fonction de la réponse choisie un montant sera additionné à une variable pour dresser un portrait à la fin du questionnaire

  5. #5
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    je suis en train d'essayer de faire le programme avec des groupBox mais si quelqu'un a une idée plus rapide qu'il me le dise svp

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Désolé, j'étais en déplacement pendant deux jours sans internet.

    Plutôt que de te taper 89 pages avec chacune son GroupBox, je te conseillerais de faire un "générateur" de question à partir d'un fichier qui contient les questions et les réponses possibles (en XML par exemple ou aller directement les lire dans ta base de donnée Access).

    1) Lire le fichier XML avec les questions
    2) Créer UNE page avec le format nécessaire (un memo pour afficher la question, un groupbox pour les réponses possibles et un bouton "suivant")
    3) Pour chaque question, afficher la question dans le memo et générer dynamiquement le bon nombre de radiobuttons (avec un label pour afficher la réponse correspondante) et les lier aux groupbox
    4) Quand on passe à la question suivante:
    4.a) Enregistrer la réponse sélectionnée (dans un tableau ou directement dans le fichier XML en mémoire ou dans la base de données Access)
    4.b) delete de tous les radiobuttons et les labels qui avaient été créés dynamiquement
    4.c) passer à la question suivante et recommencer au point 3

    Est-ce que ça te semble clair ou aurais-tu besoin de code comme exemple (là je vais me coucher...)

  7. #7
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    ça me parait être une meilleure idée donc je veux bien essayer et comme tu le propose si gentillement je ne suis pas contre un exemple
    merci

  8. #8
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    Petit exemple avec 1 seul GroupBox:
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    int Q=0;
     
    #define NBQUESTIONS 3
     
    AnsiString Questions[] = {"Question 1: ...",
                              "Question 2: ...",
                              "Question 3: ..."};
     
    AnsiString  Reponse1[] = {"Q1,R1","Q1,R2","Q1,R3"};
    AnsiString  Reponse2[] = {"Q2,R1","Q2,R2",""};
    AnsiString  Reponse3[] = {"Q3,R1","Q3,R2","Q3,R3"};
    AnsiString *Reponses[] = {Reponse1, Reponse2, Reponse3};
     
    TCheckBox *CheckBox[3];
     
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
        Button1->Caption = "Précédent";
        Button2->Caption = "Suivant";
     
        Button1->Visible = false;
     
        CheckBox[0] = Form1->CheckBox1;
        CheckBox[1] = Form1->CheckBox2;
        CheckBox[2] = Form1->CheckBox3;
     
        GroupBox1->Caption = "Question " + IntToStr(Q+1) + "/" + IntToStr(NBQUESTIONS);
        Label1->Caption = Questions[Q];
        for(int i=0;i<3;i++)
        {
            CheckBox[i]->Visible = true;
            if(Reponses[Q][i] != "")  CheckBox[i]->Caption = Reponses[Q][i];
            else                      CheckBox[i]->Visible = false;
        }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
        Button1->Visible = true;
     
        Q++;
        Label1->Caption = Questions[Q];
        GroupBox1->Caption = "Question " + IntToStr(Q+1) + "/" + IntToStr(NBQUESTIONS);
        for(int i=0;i<3;i++)
        {
            CheckBox[i]->Visible = true;
            if(Reponses[Q][i] != "")  CheckBox[i]->Caption = Reponses[Q][i];
            else                      CheckBox[i]->Visible = false;
        }
     
        if(Q == NBQUESTIONS-1)        Button2->Visible = false;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        Button2->Visible = true;
     
        Q--;
        Label1->Caption = Questions[Q];
        GroupBox1->Caption = "Question " + IntToStr(Q+1) + "/" + IntToStr(NBQUESTIONS);
        for(int i=0;i<3;i++)
        {
            CheckBox[i]->Visible = true;
            if(Reponses[Q][i] != "")  CheckBox[i]->Caption = Reponses[Q][i];
            else                      CheckBox[i]->Visible = false;
        }
     
        if(Q == 0)        Button1->Visible = false;
    }
    //---------------------------------------------------------------------------
    Tu déclares tes Questions et Réponses dans les chaînes prévues et tu mets à jours le nombre de question.

  9. #9
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    merci ça m'ira comme ça

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

Discussions similaires

  1. Calculer et afficher le résultat d'un questionnaire
    Par lipao17 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/02/2020, 20h03
  2. Réponses: 9
    Dernier message: 03/09/2005, 20h51
  3. Questionnaire en XML
    Par samipate dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/07/2005, 15h38
  4. Questionnaire à réaliser avec XSL et XML
    Par olive.m dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 19/11/2003, 16h37

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