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 :

Fenetre dans le cadre [WD19]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut Fenetre dans le cadre
    Bonjour

    j'ai une application MDI , je souhaite faire en sorte que feuille modale reste dans le cadre de la fiche mdifille.

    Mdi (feuille menu) -> ouvreFille(Feuille_Graphe2D) qui est une mdifille -> OuvreFille (FicheInformations) qui est une libre

    la fiche information doit rester dans le cadre de la mdifille , si j'iconise mdifille la fiche renseignement doit suivre.

    j'ai essayé les ouvrexxx , sans succés

    Merci

    Fred

  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
    Je n'ai pas forcément tout compris de ta demande mais regarde plutôt du côté de "événement" afin de capturer les actions souris.

    C'est sans garantie...
    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
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Le comportement demandé n'est pas un comportement standard, il va donc falloir bricoler et coder pas mal de choses.

    Frenchsting propose d' intercepter tous les évenements ( iconisation , déplacement , fermeture )

    Une autre piste, c'est d'utiliser une fenêtre interne. Mais là aussi, il faudra ajouter des fonctionnalités aux fonctionnalités de base des fenêtres internes.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Bonsoir

    merci , pour les réponses.

    bon reste plus qu'à


    Fred

  5. #5
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Bonjour

    le code suivant me donne bien ma "contrainte" de fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       nParent est un entier système = Handle(FEN_Nuages_2D_avec_k_contraintes_differentielles)
       nFille est un entier système = Handle(FEN_Informations_2D)
       AppelDLL32("user32","SetParent",nFille,nParent)
    mais j'ai l'effet de bord suivant :

    une idée ?

    Fred
    Images attachées Images attachées  

  6. #6
    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
    Un multitâcherepeint de ta fenêtre "en arrière plan" ?
    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

  7. #7
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Un multitâcherepeint de ta fenêtre "en arrière plan" ?
    Sans effet

    dans le code WM_Move de la fenêtre information

    j'ai essayé

    multitâcherepeint
    fenRepeint

  8. #8
    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
    Comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multitâcheRepeint(Fen_ArrierePlan)
    Sinon, regarder dans les API windows ce qu'il y a dans les dessins de rectangles, canevas et autres...
    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

  9. #9
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Oui , j'ai bien passé en paramètre la fenêtre parent , mais que néni.

    pour le reste je continue à chercher.

    Fred

  10. #10
    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 Fred 57220 Voir le message
    Bonjour

    j'ai une application MDI , je souhaite faire en sorte que feuille modale reste dans le cadre de la fiche mdifille.

    Mdi (feuille menu) -> ouvreFille(Feuille_Graphe2D) qui est une mdifille -> OuvreFille (FicheInformations) qui est une libre

    la fiche information doit rester dans le cadre de la mdifille , si j'iconise mdifille la fiche renseignement doit suivre.

    j'ai essayé les ouvrexxx , sans succés

    Merci

    Fred
    Ce n'est pas très clair et je crois qu'il y a de la confusion dans l'air.

    Pour récapituler :
    • Vous avez une fenêtre mère (ou de rang N-1) MDI "feuille menu".
    • Vous ouvrez (en rang N) une fenêtre fille MDI "Feuille_Graphe2D".
    • Vous ouvrez enfin (en rang N+1) une fenêtre fille libre + modale "FicheInformations", qui est fille de "Feuille_Graphe2D" ou petite-fille de "feuille menu".
    • On suppose que "FicheInformations" et la "fiche renseignement" désignent la même fenêtre


    Il y a des anomalies dans votre présentation :
    1. Vous ouvrez la fenêtre fille MDI "Feuille_Graphe2D" avec OuvreFille or
      OuvreFille ouvre des fenêtres filles libres non modales
      Pour ouvrir une fille MDI non modale, il faut utiliser MDIOuvre()
      Donc, "Feuille_Graphe2D" ne peut pas être une fenêtre MDI.
    2. Vous écrivez que la feuille modale (donc "FicheInformations" ou renseignement) doit rester dans le cadre de la fiche MDI flle (donc "Feuille_Graphe2D") mais
      Pour ouvrir une fille modale, il faut utiliser Ouvre()
      Vous ouvrez "FicheInformations" avec OuvreFille() qui ouvre des filles non-modales.
      Donc, "FicheInformations" ne va pas se comporter comme une fenêtre modale.


    Si je reviens à votre recherche, vous voulez ouvrir une fenêtre fille "FicheInformations"
    • qui est positionnée sur/dans sa fenêtre mère "Feuille_Graphe2D"
    • qui s'iconise quand sa fenêtre mère est iconisée.


    Pour obtenir ce résultat, je pense qu'il faut ouvrir "FicheInformations" en mode non modal et en précisant ses coordonnées dans l'instruction OuvreFille()
    • Dans le mode non modal, "•si la fenêtre mère est iconisée, toutes ses filles deviennent invisibles temporairement.", ce qui devrait correspondre au résultat recherché
    • Les coordonnées de la fenêtre peuvent être précisées dans l'instruction OuvreFille(), ainsi que dans Ouvre() dont la doc donne, elle, un exemple précis applicable à OuvreFille().
      Les coordonnées de la fenêtre "FicheInformations" doivent être calculées à partir de la position de sa fenêtre mère "Feuille_Graphe2D" (voir FenIntPosX et Y ou FenExtPosX et Y)


    Une fenêtre interne pourrait sans doute faire l'affaire, de même qu'une fenêtre PopUp en utilisant OuvrePopupPosition(), mais avec plus de traitement dans les deux cas.

    J'espère que cela pourra vous aider.

    Hemgé

  11. #11
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Bonsoir

    Il n'y a pas confusion pour ma part mais en me relisant je pense avoir commis une erreur.

    pour reprendre

    Feuille MDI (avec les menus fenêtre mère) , un bouton dans la fenêtre mère (btn_fenetre_nuage) appelle la fenêtre Nuages_2D par mdiOuvre(fenetre_nuage_2D)
    dans la déclaration d'ouverture de la fenêtre Fenetre_nuage_2D , j'appelle l'ouverture de la fenêtre informations_2D par OuvreFille(fen_informations_2D).

    la fiche informations_2D doit rester Modale car elle centralise les informations des calculs des matheux, d'où la déclaration fiche libre.

    jusque la tout cela fonctionne.

    j'ai essayé les différentes façon d'ouvrir la fiche informations_2D > Ouvre , OuvreFille , OuvreSoeur.

    c'est différentes façons entrainent toujours le même comportement de la fenetre , elle est indépendante.

    ce que je souhaite c'est que cette fiche reste confinés dans la fiche MDI Nuages_2D.

    mes essais ne m'ont pas permis d'avoir ce comportement.

    Merci de m'avoir répondu

    Fred

  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 Fred 57220 Voir le message
    Il n'y a pas confusion pour ma part mais en me relisant je pense avoir commis une erreur.
    Bon, ce serait peut-être intéressant et utile pour vous comprendre sans reprendre tout à zéro, de savoir laquelle ...

    Citation Envoyé par Fred 57220 Voir le message
    pour reprendre

    Feuille MDI (avec les menus fenêtre mère) , un bouton dans la fenêtre mère (btn_fenetre_nuage) appelle la fenêtre Nuages_2D par mdiOuvre(fenetre_nuage_2D)
    dans la déclaration d'ouverture de la fenêtre Fenetre_nuage_2D , j'appelle l'ouverture de la fenêtre informations_2D par OuvreFille(fen_informations_2D).
    Ce serait peut-être plus simple si les noms ne changeaient pas d'un message à l'autre.
    D'autre part, au lieu de repartir à zéro, vous pourriez peut-être aussi continuer à partir du récapitulatif que je vous ai proposé, en le confirmant ou le corrigeant.
    Idem pour la définition de votre recherche.

    Citation Envoyé par Fred 57220 Voir le message
    la fiche informations_2D doit rester Modale car elle centralise les informations des calculs des matheux, d'où la déclaration fiche libre.
    Là, je ne vous comprends pas.
    Pourquoi une fenêtre doit-elle être gérée de façon modale parce qu'elle centralise des informations ?
    Où se situe ensuite la relation de cause à effet, qui aboutit à la "déclaration fiche libre" ? (je suppose que "fiche libre" se traduit par "fenêtre libre" en langage windévien)
    Fondamentalement, je crois qu'il n'y a aucune obligation, c'est simplement un choix d'IHM que vous faites sans véritable obligation fonctionnelle.

    Citation Envoyé par Fred 57220 Voir le message
    j'ai essayé les différentes façon d'ouvrir la fiche informations_2D > Ouvre , OuvreFille , OuvreSoeur.
    D'accord, mais avez-vous essayé ma proposition et analysé les justifications qui la sous-tendent ?
    Quand vous aurez essayé, faites nous savoir ce qui ne fonctionne éventuellement pas et à ce moment-là, il faudra nous montrer un peu plus de détails.

    Citation Envoyé par Fred 57220 Voir le message
    c'est différentes façons entrainent toujours le même comportement de la fenetre , elle est indépendante.
    (c'est différentes façons <= ces différentes façons)
    Comme rappelé plus haut, il n'existe ni "fiche libre", ni "fenêtre indépendante" dans la terminologie Windev : fenêtre MDI ou fenêtre libre, gérée de manière modale ou non modale, mère, fille ou sœur.
    Si vous vous tenez à ces termes, vous aurez les idées plus précises et nous vous comprendrons sans devoir "interpréter" ce qui m'apparaît un peu confus (je persiste).
    Il ne sert à rien de "tout" essayer, il faut essayer de comprendre la situation, puis étudier et comprendre les différentes possibilités exploitables de Windev, pour enfin essayer en connaissance de cause (ce qui ne garantit pas encore le succès ... !)

    Citation Envoyé par Fred 57220 Voir le message
    ce que je souhaite c'est que cette fiche reste confinés dans la fiche MDI Nuages_2D.
    Qu'est-ce que cela veut dire ?
    Cela signifie-t-il qu'elle ne peut pas sortir du cadre de sa fenêtre mère ?
    Ce qui relèverait de la gestion modale des fenêtres, voir la doc ici.

    Bref, j'ai l'impression que vous n'avez pas lu attentivement ma réponse qui se réfère pourtant très précisément à votre message initial, qui n'a pas été modifié par les interventions intermédiaires.
    Vous vous bornez à ré-exposer votre problème sans engager de véritable discussion par rapport aux observations et propositions.
    Ce n'est pas comme cela que l'illumination va me ou vous éclairer. (Peut-être les feux d'artifices de ce réveillon, mais je n'ai rien vu !)

    Si j'ai bien compris votre recherche, vous souhaitez obtenir un résultat qui ne correspond à aucun des deux modes de gestion des fenêtres, mais emprunte à chacun des deux.
    Vouloir "confiner" une fenêtre fille dans sa fenêtre mère ressort de la gestion modale.
    Vouloir fermer, iconiser de manière descendante ressort de la gestion non modale, comme je l'avais relevé en vous citant un extrait de la doc sur la gestion non modale
    "•si la fenêtre mère est iconisée, toutes ses filles deviennent invisibles temporairement."
    En gestion modale, on iconise de manière ascendante, càd que l'iconisation de la fenêtre fille iconise l'application et donc la fenêtre mère.

    Bref, si vous sortez des sentiers battus, il vous faut ruser comme souvent et je vous renvoie à ma proposition pour gérer ce besoin hybride.

    En vous souhaitant une bonne année 2015 et en espérant que quelque chose va sortit de tout ceci,

    Hemgé

  13. #13
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Bonjour

    Voici la solution à mon problème , il existe encore quelques effets de bord indésirable avec mon ActiveX Teechart (la fenêtre informations_2D se dessine en dessous ,
    mais revient au premier plan lorsque l'on clique dessus.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    GWL_EXSTYLE est un entier = -20
    WS_EX_TOOLWINDOW est un entier = 128
    HWND_NOTOPMOST est un entier = -2
    HWND_TOPMOST est un entier = -1
    SWP_NOMOVE est un entier = 2
    SWP_NOSIZE est un entier = 1
    SWP_NOZORDER est un entier = 4
    SWP_ASYNCWINDOWPOS  est entier = 16384
    SWP_FRAMECHANGED est un entier = 32
    SWP_DEFERERASE  est un entier = 8192
    GWL_ID est un entier = -12
    GWL_HINSTANCE  est un entier = -6
     
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    OuvreFille('FEN_Informations_2D')
    nParent est un entier système = Handle(FEN_Nuages_2D_avec_k_contraintes_differentielles)
    nFille est un entier système = Handle(FEN_Informations_2D)
    AppelDLL32("user32","SetParent",nFille,nParent)
    AppelDLL32("user32","SetWindowLongA",nFille ,GWL_EXSTYLE , WS_EX_TOOLWINDOW)
    AppelDLL32("user32","SetWindowPos",nFille,nParent,0,0,445,300,SWP_FRAMECHANGED)
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Voici le lien des informations pour ceux que cela intéresse : http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Merci à Mr Hemgé du temps qu'il à pris à me répondre

    Cordialement

    Fred

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/05/2009, 14h28
  2. Réponses: 2
    Dernier message: 23/04/2005, 13h29
  3. Fenetre dans barre des taches windows
    Par BOUBOU81 dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/08/2004, 11h23
  4. Réponses: 8
    Dernier message: 17/03/2004, 14h40
  5. [VB6] Ouverture d'une nouvelle fenêtre dans un MDI
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 17/02/2003, 14h03

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