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

MFC Discussion :

Tabulation dynamique (champs fixes et variables) [FAQ]


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut Tabulation dynamique (champs fixes et variables)
    Bonjour,
    Je développe une application MFC, un boite de dialogue contenant plusieurs champs de saisie. Ces éditeurs ont été définis dans les ressources.

    Dans certaines conditions, j'ajoute dynamiquement d'autres éditeurs à ma fenêtre.
    Le problème est comment gérer la tabulation, entre les contrôles fixes et les contrôles dynamiques. pour que la naviguation se fasse correctement, en particulier dans l'ordre.
    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,il faut fixer l'ordre de tabulation ( tab order ) comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pWndSet->SetWindowPos(pWndRef,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
    pWnSet c'est le contrôle à inserer apres pWndRef.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    D'après ce que j'ai compris de la réponse, est de définir un ordre dans l'ajout. Est ce n'est pas compliqué quand il s'agit d'un nombre variable est paramétrable d'éditeur dans ma fenêtre de dialogue. Y a-t-il un moyen que le système gère ça de façon naturelle ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par Jahjouh
    D'après ce que j'ai compris de la réponse, est de définir un ordre dans l'ajout. Est ce n'est pas compliqué quand il s'agit d'un nombre variable est paramétrable d'éditeur dans ma fenêtre de dialogue. Y a-t-il un moyen que le système gère ça de façon naturelle ?
    Désolé rien compris...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    Je voudrais dire, fixer un ordre c'est connaitre à l'avance le nombre de contrôles qui seront affichés dans la fenêtre. Dans mon cas, j'ai un nombre fixe de contrôles plus d'autres qui s'ajoutent dynamiquement dont le nombre est variable selon le paramétrage de l'application.
    Désolé pour m'avoir mal exprimé mon point de vue.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Je ne vois pas le problème, contrôle dynamique implique placement dynamique:
    ils sont dynamiques mais tu sais ou tu dois les créer et a la suite de quel contrôle ils doivent être placés pour l'ordre de tabulation.
    Alors rien ne t'empêche au moment de la création de rajouter la ligne que j'ai indiquée, pWnSet étant ton contrôle dynamique.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    Merci.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    pWndSet->SetWindowPos(pWndRef,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
    Il y a quelque chose que je n'ai pas comprise.
    pWndSet : représente mon écran.
    pWndRef : est ce qu'il représente le controle que je viens d'ajouter ?
    0,0,0,0 ce sont les coordonnées de mon contrôle ?
    le reste je ne le touche pas .

    Merci de me confirmer cette interprétation où me renvoyer vers un endroit offrant plus de détail la dessus.

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    relis mes posts...
    Citation Envoyé par farscape
    Alors rien ne t'empêche au moment de la création de rajouter la ligne que j'ai indiquée, pWnSet étant ton contrôle dynamique.
    pWndRef c'est le contrôle après lequel le contrôle dynamique va être inséré au niveau de l'ordre de tabulation.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    Juste une dernière précision:
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pWnd->SetWindowPos(ControlePrec,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
    est ce qu'il faut modifier les positions 0,0,0,0 à chaque fois qu'on ajoute un nouveau controle ?
    Merci.

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    la réponse est dans SWP_NOMOVE | SWP_NOSIZE.
    on indique clairement que l'on ne touche ni à l'emplacement ni a la taille.
    donc on laisse les coordonnées a 0,0,0,0.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    J'ai essayé avec mais malheureusement ne m'a pas donné le résultat escompté.
    La difficulté vient de la jonction entre les controles fixes définis dans les ressources et dont la tabulation a été réglé par "Cltr + D" et les controles dynamiques ajouté par le code.
    La jonction entre le dernier controle fixe et le premier controle dynamique et le dernier controle dynamique et le premier controle fixe.
    Merci.

  13. #13
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    désolé je ne vois toujours pas le problème ...
    la fonction
    CWnd::GetNextDlgTabItem
    CWnd* GetNextDlgTabItem( CWnd* pWndCtl, BOOL bPrevious = FALSE ) const;
    devrait t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GetNextDlgTabItem(NULL);
    donne le premier contrôle dans l'ordre de tabulation..



  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 105
    Par défaut
    J'avais utilisé cette solution, mais en vain. Du coup je m'étais réfugié dans la facilité :
    créer une liste de ID (statiques + dynamiques) et quand on appelle la tabulation, je demande le focus, j'identifie le contrôle et je passe le focus au suivant en une boucle fermée. Ce n'est pas élégant comme solution, mais ça me sauve.
    Merci infiniment pour toute l'aide.

Discussions similaires

  1. Réponses: 14
    Dernier message: 24/02/2012, 17h04
  2. recuperer champs texte dans variable session via javascript
    Par richton95 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/03/2006, 14h17
  3. [VB.Net] Créer dynamiquement un nom de variable
    Par chuck_m dans le forum ASP.NET
    Réponses: 5
    Dernier message: 20/07/2005, 15h08
  4. Récupération de la valeur d'un champ au nom variable
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2005, 15h13
  5. tabulation sur champs de saisie
    Par xClyde dans le forum Flash
    Réponses: 2
    Dernier message: 25/09/2003, 16h49

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