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

Bibliothèques Discussion :

NCURSES/UTILISATION DE PLUSIEUR FORMS DANS PLUSIEUR PANEL


Sujet :

Bibliothèques

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut NCURSES/UTILISATION DE PLUSIEUR FORMS DANS PLUSIEUR PANEL
    bonjour,
    Je début en C/Ncurses et je souhaite créer un programme.
    Dans ce programme, il y a deux panels : chaque panel est lié à une fenêtre qui est liée à une form.
    my_panel[0] lié à la fenêtre my_form_win liée à my_form
    my_panel[1] lié à la fenêtre my_form_win1 liée à my_form1
    Pour naviguer entre les champs d'une form, j'utilise la fonction getch comme ceci est montré dans les exemples sur le net.
    Néanmoins je n'arrive pas à naviguer d'une fenêtre à l'autre.
    En fait mon problème est que mon cursor se met sur l'autre fenêtre mais la fonction getch (ou wgetch) ne remplit pas son role (c'est comme si elle restait active sur la première fenêtre)

    Voici le bout de code ou il y a intéraction entre l'utilisateur et le programme :
    while((ch = wgetch(my_form_win)) != KEY_F(1))
    { switch(ch)
    { case KEY_DOWN:
    form_driver(my_form, REQ_NEXT_FIELD);
    form_driver(my_form, REQ_END_LINE);
    break;
    case KEY_UP:
    form_driver(my_form, REQ_PREV_FIELD);
    form_driver(my_form, REQ_END_LINE);
    break;
    case KEY_F(5):
    top_panel(my_panel[1]);
    update_panels();
    doupdate();
    while((ch1 = wgetch(my_form_win1)) != KEY_F(5))
    { switch(ch1)
    { case KEY_DOWN:
    form_driver(my_form1, REQ_NEXT_FIELD);
    form_driver(my_form1, REQ_END_LINE);
    break;
    case KEY_UP:
    form_driver(my_form1, REQ_PREV_FIELD);
    form_driver(my_form1, REQ_END_LINE);
    break;
    case KEY_F(5):
    top_panel(my_panel[0]);
    update_panels();
    doupdate();
    break;
    default:
    form_driver(my_form1, ch1);
    break;
    }
    }
    break;
    default:
    form_driver(my_form, ch);
    break;
    }
    }
    Je me suis inspiré des exemples que j'ai trouvé sur le net sur l'association d'une form et d'une fenêtre et j'y ai intégré des panels.
    Je pense que mon erreur vient des instructions :
    case KEY_F(5):
    top_panel(my_panel[1]);
    update_panels();
    doupdate();
    while((ch1 = wgetch(my_form_win1)) != KEY_F(5));
    { switch(ch1)...


    En passant en debug, je m'aperçois que le wgetch ne fonctionne pas sur ce panel my_panel[1] et donc sur la fenêtre my_form_win1 mais sur la première fenêtre my_panel et donc sur la fenêtre my_form_win alors que le cursor est quand même positionné sur la fenêtre my_form_win1

    Si quelqu'un pouvait m'éclaircir sur le sujet je le lui en serai très reconnaissant.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut Solution trouvé
    Bonjour,
    Ne cherchez plus, j'ai trouvé ma solution (tout seul comme un grand! )
    Pour info :
    Ma fonction wgetch fonctionne très bien.
    Le problème vient de l'instruction Keypad à laquelle je n'ai pas prêté d'intention (c'est ça de recopier des exemples tout fait sur le net ).
    En effet sur l'exemple cité ci dessus : parmis les lignes de codes que je n'ai pas montré j'avais l'instruction
    keypad(stdscr, TRUE) qui permet l'utilisation des touches de fonctions pour l'écran standard, (je suppose donc pour ma première fenêtre). Mais elle n'était pas définie pour la deuxième.
    De ce fait je me retrouvais avec le caractère [5~ sur le premier champs de la deuxième fenêtre au lieu de revenir à la fenêtre précédente.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2015, 18h38
  2. [Lazarus] Utiliser la même variable dans plusieurs FORM
    Par Yoanben dans le forum Lazarus
    Réponses: 2
    Dernier message: 25/05/2010, 15h26
  3. Variable global utilisable dans plusieurs Forms
    Par nams2590 dans le forum Visual C++
    Réponses: 13
    Dernier message: 11/12/2007, 11h34
  4. [CR XI] Mettre en forme dans plusieurs colonnes dans section pied de groupe
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 05/11/2007, 09h27
  5. Réponses: 11
    Dernier message: 07/08/2007, 17h11

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