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 :

Gestion des fenêtres d'une application [WD20]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut Gestion des fenêtres d'une application
    Bonjour,

    J'ai développé une application en windev 20, et j'ai un petit soucis avec mes fenêtres.
    L'application a environ 5 fenêtres, une principale et 4 filles.

    A chaque clic sur un bouton de la fenêtre principale, j'utilise la fonction Ouvre(), et de la fenêtre fille,
    j'utilise la fonction Ouvre() pour rappeler la mère, seulement l'application m'ouvre une autre fenêtre principale
    et la première fenêtre prinpale déjà ouverte reste ouverte.

    Du coup je me retrouve avec plusieurs mêmes fenêtres ouvertes.
    Pourriez vous me conseiller les modifications à faire par rapport à la gestion des fenêtres filles mère ?

    Merci.

  2. #2
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 525
    Points
    2 525
    Par défaut
    Pour ouvrir une fenêtre fille c'est ouvrefille, non ?

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    faut-il que les fenêtres filles restent ouvertes ? Si oui, il faut alors chercher si une fenêtre est déjà ouverte avant d'en ouvrir une autre : voir FenEtat => http://doc.pcsoft.fr/fr-FR/?3038030&...netat_fonction

    bon courage,

    Nicolas

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par serendib Voir le message
    Pour ouvrir une fenêtre fille c'est ouvrefille, non ?
    Merci de votre réponse.
    J'ai essayé Ouvrefille mais le problème persiste.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Nicolas_Jeanneau Voir le message
    Bonjour,

    faut-il que les fenêtres filles restent ouvertes ? Si oui, il faut alors chercher si une fenêtre est déjà ouverte avant d'en ouvrir une autre : voir FenEtat => http://doc.pcsoft.fr/fr-FR/?3038030&...netat_fonction

    bon courage,

    Nicolas
    Bonjour,

    Au fait le problème est que quand je ferme la fenêtre fille en ouvrant la mère, elle ouvre une nouvelle même mère.
    L'objectif est qu'elle se ferme en rendant la main à la mère déjà ouverte mais pas ouvrir une nouvelle mère.

    Merci

  6. #6
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut
    Si la mère est déjà ouverte derrière la fille, en fermant la fille, il n'est pas nécessaire de rouvrir la mère.

    Il suffit donc le ouvre(<mere>) pour que le problème soit réglé.

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Citation Envoyé par Narwe Voir le message
    Si la mère est déjà ouverte derrière la fille, en fermant la fille, il n'est pas nécessaire de rouvrir la mère.

    Il suffit donc le ouvre(<mere>) pour que le problème soit réglé.
    Non. Ou alors j'ai mal compris ce que tu expliques.

    Pour fermer la fenetre fille, il suffit de faire ferme()
    Ca va redonner la main à la fenêtre mère ... et pas ouvrir une nouvelle session de fenêtre mère.



    Et cherche le mot MDI dans l'aide, parce que c'est peut-être ça que tu essayes de faire.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut Citation inutile
    J'ai oublié le mot "enlever".
    "Il suffit donc d'enlever le ouvre(<mere>) pour que le problème soit réglé."

    Pour ce qui du fait de faire une application MDI, l'auteur ne le dit pas explicitement (même s'il parle de fenêtre fille).

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Bonjour tout le monde,

    Au fait mon application n'utilise pas des fenêtres MDI ( je ne sais pas si c'est nécessaire par rapport à ce problème), donc mes fenêtres sont libres (non MDI).
    Alors je vous explique pourquoi j'ai besoin d'utiliser la fonction Ouvre() depuis la fenêtre fille pour revenir à la mère( avec pour objectif qu'elle n'ouvre pas une autre mère).

    Dans le code(Déclaration globales) de la fenêtre mère qui est également la principale de mon application,
    j'ai une procédure avec 8 paramètres dont 2 (RepertoireFTP, RepertoireLocal) sont des paramètre se saisie, et quand l'application se lance
    elle charge d'abord les paramètres par défaut (les 8).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PROCEDURE FEN_FENETRE_PRINCIPAL( AdresseFTP="sftp://monadresse.fr", NomUtilisateur="user",MotDePasse="password",Numport=21,ConnexionPassive=Faux,DelaiConnexion=10,LOCAL RepertoireFTP="/ftp_directory",LOCAL RepertoireLocal="D:\local_directory")
    Et il y a un bouton sur cette fenêtre qui permet d'accéder aux paramètres avancées, ce bouton ouvre donc la fameuse fenêtre fille pour que l'utilisateur saisisse (RepertoireFTP, RepertoireLocal)
    J'utilise pour ce clic la fontion Ouvre() ou Ouvrefille() ( j'ai essayé les 2 mais pareil).

    Après que l'utilisateur eut saisi (RepertoireFTP, RepertoireLoca), je voudrais retransmettre ces 2 paramètre à la mère déja ouverte comme ceci.
    Depuis la fenêtre fille. Avec un Clic sur le bouton "Enregistrer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ouvre(FEN_FENETRE_PRINCIPAL,gpsAdresseFTP,gpsNomUtilisateur,gpsMotDePasse,gpeNumPort,gpbConnexionPassive,gpeDelaiConnexion,SAI_RépertoireFTP,SAI_RépertoireLocal)
    Les autres variables sont globales.

    Je pense que expliquer comme cela, vous comprendrez mieux, après la saisie j'ai besoin de retransmettre les paramètres à la mère, pour qu'elle
    utilise les nouveaux paramètres et non ceux par défaut chargés au lancement de l'application.

    Merci!

  10. #10
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut
    Il faut dans ce cas utiliser la fonction "Utilise" et non "Ouvre".

    Toutefois, il sera peut-être utile de faire une procédure globale qui recharge ces 8 paramètres (qui sera donc appelée à l'ouverture de la fenêtre principale et à la validation de la fenêtre fille).
    Avec cette 2e solution, le code sera plus beau, et le programme aussi (la fonction utilise n'est pas très esthétique à mon gout à l'exécution).

  11. #11
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 525
    Points
    2 525
    Par défaut
    Pourquoi faire simple alors qu'on peut faire compliqué.

  12. #12
    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
    Citation Envoyé par JohnVist Voir le message
    ...

    Les autres variables sont globales.

    Je pense que expliquer comme cela, vous comprendrez mieux, après la saisie j'ai besoin de retransmettre les paramètres à la mère, pour qu'elle
    utilise les nouveaux paramètres et non ceux par défaut chargés au lancement de l'application.

    Merci!
    Et pourquoi ces deux variables ne sont-elles pas globales elles-aussi ?
    Tant qu'à faire.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Merci à tous de vos retour, j'ai donc utilisé des procédures globales pour charger les paramètres dont il est question.

    Cependant j'ai un petit sous avec le chargement des variables par défaut en faisant usage de la fonction ChargeParamètre() pendant l'initialisation de l'application.
    En effet, selon mon code ci-dessous.
    1.Initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    AdresseFTP		est une chaîne = "sftp://monadresse.fr"
    NomUtilisateur	est une chaîne = "user"
    MotDePasse		est une chaîne = "password"
    NumPort			est un  entier = 21
     
     
     
    AdresseFTP 		= ChargeParamètre("AdresseFTP","sftp://monadresse.fr")
    NomUtilisateur	= ChargeParamètre("NomUtilisateur","user")
    MotDePasse		= ChargeParamètre("MotDePasse","password")
    NumPort		= ChargeParamètre("NumPort",21)
    2. Utilisation des paramètres et procédures globaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connecter(AdresseFTP,NomUtilisateur,MotDePasse,NumPort)
    3. Erreur qui montre que les parametres par défaut de ChargeParamètre() n'ont pas été pris en compte.
    Nom : screen.png
Affichages : 790
Taille : 9,7 Ko

    Merci d'avance.

    Cordialement

  14. #14
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    tu peut envoyer un paramètre à la fenêtre mère avec ferme.
    et tu le reçoit avec le résultat de la fonction ouvre que tu as appelé.
    Si vous avez plusieurs paramètres, utiliser une variable de type tableau ou structure.

  15. #15
    Membre éclairé
    Avatar de Narwe
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 253
    Points : 668
    Points
    668
    Par défaut
    Le code que tu nous données dans le 1-intialisation se trouve-t-il dans une procédure globale ?
    A priori oui.
    Si ce n'est pas le cas, il ne faut pas poursuivre la lecture de mon message et il faudrait nous indiquer où se trouve ce code.

    Dans ce cas, les variables que tu déclares par ce code ne sont pas visible ailleurs que dans ce même code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AdresseFTP		est une chaîne = "sftp://monadresse.fr"
    NomUtilisateur	est une chaîne = "user"
    MotDePasse		est une chaîne = "password"
    NumPort			est un  entier = 21
    Il est possible qu'il y ait des variables portant le même nom déclaré de façon globale au projet mais il s'agit de 2 variables différentes pouvant avoir 2 valeurs différentes.

    Pour résoudre ton problème, tu as donc 2 possibilités :
    1. Ne pas re-déclarer les variables dans la procédures globales (le plus simple)
    2. Faire en sorte que ta procédure globale renvoie les paramètres lus

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par darkWD Voir le message
    tu peut envoyer un paramètre à la fenêtre mère avec ferme.
    et tu le reçoit avec le résultat de la fonction ouvre que tu as appelé.
    Si vous avez plusieurs paramètres, utiliser une variable de type tableau ou structure.
    Au fait le problème se trouve plutôt au niveau des paramètres par défaut non pris en compte par chargeparamètre()
    Merci quand même.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Narwe Voir le message
    Le code que tu nous données dans le 1-intialisation se trouve-t-il dans une procédure globale ?
    A priori oui.
    Si ce n'est pas le cas, il ne faut pas poursuivre la lecture de mon message et il faudrait nous indiquer où se trouve ce code.

    Dans ce cas, les variables que tu déclares par ce code ne sont pas visible ailleurs que dans ce même code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AdresseFTP		est une chaîne = "sftp://monadresse.fr"
    NomUtilisateur	est une chaîne = "user"
    MotDePasse		est une chaîne = "password"
    NumPort			est un  entier = 21
    Il est possible qu'il y ait des variables portant le même nom déclaré de façon globale au projet mais il s'agit de 2 variables différentes pouvant avoir 2 valeurs différentes.

    Pour résoudre ton problème, tu as donc 2 possibilités :
    1. Ne pas re-déclarer les variables dans la procédures globales (le plus simple)
    2. Faire en sorte que ta procédure globale renvoie les paramètres lus

    Bonjour,

    Au fait ces variables sont déclarées globales à toute l'application, la preuve est qu'elles
    sont bien pris en compte par toutes les fenêtres du programme.
    Seulement le fait que j'utilise chargeparamètre() pour restaurer les saisies,
    les paramètres par défaut sont pas chargés.

    J'ai trouvé une alternative qui marche pour l'instant.

    Merci.

  18. #18
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    http://doc.pcsoft.fr/fr-FR/?3025047

    pour utiliser ChargeParamètre() il faut avant utiliser SauveParamètre().

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par darkWD Voir le message
    http://doc.pcsoft.fr/fr-FR/?3025047

    pour utiliser ChargeParamètre() il faut avant utiliser SauveParamètre().
    Bonjour,

    Oui j'utilise SauveParamètre() quand l'utilisateur saisie des données.
    Mais quand je lance l'application pour la première fois il n'y a pas de saisie c'est pour cela que j'ai
    besoin des paramètres par défaut.

  20. #20
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    Désolé j'avais pas bien compris.

    Alors, à ta place je n'utiliserai pas ChargeParamètre() dans l'initialisation de la fenêtre principale.
    Je déclare les variables globales en leurs donnant les valeurs par défaut sans utiliser le ChargeParamètre().
    Cela devrai résoudre le problème des valeurs par défauts.

    Pour ouvrir la fenêtre de saisie j'utiliserai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    si ouvre(fen_saisie) alors
        ChargeParamètre(".....",".....")
        ....
    fin
    et à la fermeture de la fenetre de saisie j'utiliserai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        SauveParamètre(".....",".....")
        ....
        ferme(fen_saisie,vrai)

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

Discussions similaires

  1. Gestion des droits dans une application Java
    Par Donaldo dans le forum Langage
    Réponses: 10
    Dernier message: 14/02/2008, 18h15
  2. XML/XSL et gestion des fichiers dans une application Web
    Par fatenatwork dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/02/2008, 14h09
  3. [C#] Gestion des langues d'une application
    Par therock dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/05/2006, 08h47
  4. VB6 - gestion des menus d'une application
    Par lhirsute dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/01/2006, 19h17
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

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