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 :

"Externe" et Fenêtre interne [WD17]


Sujet :

WinDev

  1. #1
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut "Externe" et Fenêtre interne
    Bonjour,

    J'ai 2 fenetres :
    - Fen1
    - Fen2 que j'appelle depuis Fen1

    Dans Fen1 j'ai une variable globale Var1
    Dans le code des déclarations globales de Fen2 je fais un Externe Var1 pour récupérer la variable Var1 de Fen1.

    Jusque là tout marche bien.

    J'ai décidé de passer Fen2 en fenêtre interne pour l'ouvrir dans Fen1.
    Du coup dans le code de Fen2 j'ai Var1 qui remonte en erreur
    Identificateur 'Var1' inconnu ou inaccessible
    L'externe semble sans effet dans ma fenêtre interne..
    Savez-vous si EXTERNE est utilisable dans les fenêtres internes ?

    Merci

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Une variable globale au projet ne ferait pas l'affaire ?

    Sinon, tu crées un champ saisie caché) dans fen1 et tu affectes Var1 à sai_var1.
    Dans fen2, tu peux l'obtenir par :
    Ca marche aussi avec les tableaux.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Bonjour French,

    Merci de ta réponse!
    Le problème c'est que je suis en train de migrer un fenêtre qui contient beaucoup de code..
    J'avais bien envisagé cette possibilité mais je voudrais si possible éviter de préfixer tous les appels aux variables par 'Fen1.'
    Parce qu'en plus je n'ai pas qu'un seul EXTERNE mais une 10aine
    [Je sais c'est moche mais j'y peux rien]


    Quelque chose de curieux : j'ai testé une petit peu et il s'avère que l'EXTERNE dans une fenêtre interne marche seulement dans le code de la fenetre et des champs qui la composent.
    je peux donc acceder a Var1 dans le code de la fenêtre et des champs.

    Par contre lorsque je créé un procédure dans ma fenêtre interne, je ne peux pas accéder à Var1.
    Déja lorsque je créé ma procédure Windev me la déclare automatiquement en PRIVEE (icone rouge). Même en la passant en PUBLIQUE, Var1 est toujours inaccessible..

    Il doit y avoir une subtilité avec le fenêtres internes mais je n'ai rien trouvé dans l'aide.

    Peut-être quelqu'un a-t'il déjà été confronté au problème ??

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,


    Dans l'aide sur Traitements associés aux fenêtres internes :

    Déclarations globales Déclaration des variables globales à la fenêtre.

    C'est le premier code exécuté lors de l'ouverture de la fenêtre.
    Ce code est exécuté avant le code de déclaration des globales de la fenêtre hôte (fenêtre dans laquelle la fenêtre interne est intégrée).
    Il est par exemple possible d'appeler une procédure de la fenêtre interne depuis le code de déclaration des globales de la fenêtre hôte.
    Donc, si je comprends correctement, quand vous initialisez votre fenêtre interne, Var1 n'a pas encore été initialisée.


    Par ailleurs,

    Dans l'aide sur Champ fenêtre interne :
    Pour créer une fenêtre interne à partir de champs existants

    1. Sélectionnez les champs devant être présents dans la fenêtre interne.
    2. Affichez le menu contextuel de la sélection et choisissez l'option "Refactoring .. Créer une fenêtre interne avec la sélection".
    Dans l'aide sur Manipuler un champ Fenêtre Interne par programmation :

    Passer des paramètres à une fenêtre interne

    Pour passer des paramètres à une fenêtre interne, il est conseillé de :
    1. Créer une procédure d'initialisation dans la fenêtre interne.

    2. Appeler cette procédure dans la fenêtre qui intègre le champ "Fenêtre interne".
    En espérant que cela peut vous aider.

    Hemgé

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    pour paraphraser Hemgé, tu devrais faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ouvre(fen2,var1,var2,var3,...)
    et dans le code d'init de fen2, faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE _Fen2(var1,var2,var3,...)
    Je sais, ça ne fait pas trop propre d'utiliser les mêmes noms de variables dans l'appel et dans l'entête de procédure, mais ça évite de remodifier le code.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Oui j'ai fait comme ca.. pas le choix.

    Par contre je trouve cette histoire d'EXTERNE non accessible dans les procédures d'une fenêtre interne étrange.

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

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