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

WinDev Discussion :

Comment énumérer les champs d'une fenêtre Fille MDI [WD16]


Sujet :

WinDev

  1. #1
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut Comment énumérer les champs d'une fenêtre Fille MDI
    Bonjour,

    Je cherche à énumérer les champs d'une fenêtre fille MDI.
    Pour ce faire, je tente d'utiliser la fonction EnumèreSousEléments().

    Cette fonction attend le nom de la fenêtre dont il faut énumérer les champs.
    Or cela ne fonctionne ni si je lui donne le nom la fenêtre, laquelle peut-être instanciée plusieurs fois, ni si je lui donne l'alias de la fenêtre qui permet de distinguer les différentes instanciations.

    Quelqu'un aurait-il une idée ?

    Par exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sAliasFenêtreActive = MDIActive()
    sNomChamp = EnumèreSousElément(sAliasFenêtreActive, enumPremier)
    renvoie une chaîne vide !

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour

    Si c'est une fenêtre ouverte tu peux utiliser EnumèreChamp

  3. #3
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Bonjour

    Si c'est une fenêtre ouverte tu peux utiliser EnumèreChamp
    Ça marche au poil ! Merci.
    Comme mes fenêtres sont effectivement ouvertes, tout va bien.

    Ceci dit, je suis un peu frustré qu'EnumèreSousElément ne fonctionne pas, d'autant que cette fonction paraissait plus complète, mais bon.

    Quoi qu'il en soit, encore merci.

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Je viens d'essayer avec EnumèreSousElément, ça marche aussi

    Exemple pris de l'aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sFenetre est une chaîne = "FEN_Fenêtre1"
    sNomChamp est une chaîne = EnumèreSousElément(sFenetre,enumPremier)
    TANTQUE sNomChamp <> ""
    	Trace(sNomChamp)
    	sNomChamp = EnumèreSousElément(sFenetre)
    FIN
    J'ai testé sous WD17 et WD16, et FEN_Fenêtre1 n'est pas ouverte

  5. #5
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Je viens d'essayer avec EnumèreSousElément, ça marche aussi

    Exemple pris de l'aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sFenetre est une chaîne = "FEN_Fenêtre1"
    sNomChamp est une chaîne = EnumèreSousElément(sFenetre,enumPremier)
    TANTQUE sNomChamp <> ""
        Trace(sNomChamp)
        sNomChamp = EnumèreSousElément(sFenetre)
    FIN
    J'ai testé sous WD17 et WD16, et FEN_Fenêtre1 n'est pas ouverte
    Oui, mais tu "attaques" par le nom de la fenêtre alors que j'ai besoin de passer par l'alias (pour identifier l'instance).

    J'ai essayé en passant le nom de la fenêtre MDI fille et cela fonctionne jusqu'à ce que Windev tente apparemment d'énumérer la fenêtre instanciée, en plus de la fenêtre modèle, et qu'il n'y arrive pas.
    J'ai essayé en passant l'alias de la fenêtre instanciée et cela ne fonctionne pas.

    Pour info, mon code est placé dans la fenêtre MDI mère.

    J'ai aussi essayé en incorporant le code à la fenêtre MDI fille, puis en l'appelant par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExécuteTraitement(sAliasFenêtreActive+".ListerStructure", trtProcédure)
    , avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sNomChamp = EnumèreSousElément(MoiMême,enumPremier)
    dans ListerStructure.
    Cela fonctionne dans la mesure où la fenêtre traitée est bien l'instance et non pas la fenêtre modèle (MoiMême est déterminé correctement), mais les champs ne sont cependant pas trouvés et sNomChamp demeure une chaîne vide !

    Il me reste donc ta solution de départ par EnumèreChamp.

    Je vais peut-être poster ce sujet sur le forum de PCSoft, pour voir si une autre idée émerge, même si j'en doute.

    Merci de tes réponses,
    David

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    ... alors que j'ai besoin de passer par l'alias (pour identifier l'instance).
    C'est donc normal, un alias de la fenêtre n'est pas un objet du projet.

    EnumèreElément / EnumèreSousElément servent à lister les objets du projet

  7. #7
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Citation Envoyé par hpascal Voir le message
    C'est donc normal, un alias de la fenêtre n'est pas un objet du projet.

    EnumèreElément / EnumèreSousElément servent à lister les objets du projet
    Je crois comprendre. Merci pour cette précision pas si triviale.

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

Discussions similaires

  1. [WD14] Rendre opaque tous les champs d'une fenêtre
    Par nanox dans le forum WinDev
    Réponses: 2
    Dernier message: 19/08/2010, 10h45
  2. Réponses: 6
    Dernier message: 15/04/2010, 10h22
  3. Réponses: 1
    Dernier message: 09/10/2008, 19h04
  4. comment parcourrir les champs d'une colonne
    Par vacknov dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 12/11/2007, 20h02
  5. Comment remplir les champs d'une autre application ?
    Par rico32fr dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/06/2006, 08h54

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