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

Delphi Discussion :

Fenêtre Modale qui passe en arrière plan sur rafraîchissement


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut Fenêtre Modale qui passe en arrière plan sur rafraîchissement
    Bonjour,
    Alors voici mon "Etrange" problème ... je vais essayer d'être le plus precis dans ma description en esperant que quelqu'un puisse m'aider à le reseoudre.

    Mon application principale fonctionne sur le principe des plugins : Une DLL qui renferme une TForm et qui est chargée par mon appli principlae. Pour afficher la TForm je lui passe via appel d'une fonction de la DLL (ShowForm) le Handle du Panel dans lequel la Form (Plugin) doit s'integrer (j'appel alors un SetParent sur la la form) et puis je fais un Show sur ma Form. Voilà jusque là tout va bien ça marche et tout s'affiche trés bien.
    Ma Form (incluse dans la DLL) est rafraichie via une connexion TCP par des données provenant d'une application serveur. Mon probleme c'est que quand j'affiche cette Form (Plugin) qu'en même temps une fenêtre modale (toujours de l'appli principale) est affiché ... alors celle ci (la fenêtre modale) passe en arrière plan au premier rafraichissement de ma FORM
    Bizzare pour une fenetre Modale ... et le pire c'est que aux prochains rafraichissement tout se passe bien (la fenetre modale reste toujours affichée et on voit la Form (Plugin) se rafraichir tranquillement derrière)
    Je ne comprends vraiment rien ....
    Quelqu'un aurait il déjà connu ce genre de probleme?
    Merci d'avance
    ANIS

  2. #2
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Salut,
    si jai bien compris, ta une forme, pui tu fais un schow, puis tu fais un showmodal:
    TaForm(Principa)-->Show(PremiereForm)-->ShowModal(2emeForm).
    si c le cas, je crois que ta premiere methode Show dois aussi etre modal.

    Soulama
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Autrement le formstyle de ta form ne serait-il pas positionné à fsmdiChild par hasard, plutot qu'à fsNormal?

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Est ce que ta form principale ne serait pas en fsStayOnTop ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Bonjour Tout le monde merci pour toutes vos reponses, voici quelques eclaircissement sur la façon dont mes fenetres sont gérées :
    Je Vais Appeller :
    - FormPrincipale : Ma Fenêtre Principale de l'appli
    - FormPlugin : La Form incluse dans la DLL et qui sera affiché dans un Panel de FormPrincipale (cette form est fsNormal)
    - FormModale : La Fenetre Modale ouverte dans l'application principale par la fenetre principale.

    Voici le sequencement de la chose : Depuis l'application Principale je fais appel à la DLL :
    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
    ShowFormPlugin (PanelHandle : HWND)
    Begin
        FormPlugin.BorderStyle := bsNone;
        FormPlugin.ParentWindow := PanelHandle ;
        If GetWindowRect( PanelHandle , WindowRect ) Then
        Begin
          MoveWindow( FormPlugin.Handle,
                      0,
                      0,
                      WindowRect.Right - WindowRect.Left,
                      WindowRect.Bottom - WindowRect.Top,
                      false );
     
          FormPlugin.Show;
        End;
    End;
    Ce bout de code me permet d'afficher la FormPlugin dans un Panel de la fenetre principale ... puis j'appelle

    FormModale.ShowModal

    Puis je lance une connexion vers le serveur qui elle va mettre à jour (rafraichir l'affichage) de FormPlugin ... Et là FormModale Passe en arrière plan ... le seul truc à faire c'est de cliquer sur l'icone de l'application dans la barre et là on revoir notre fenetre modale ... J'insite sur le fait que cela n'arrive que la premiere connexion (après le lancement de l'appli)
    ANIS

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Bonjour Suite à mon Post au sujet d'un phenomene qui me semble etrange j'ai pu invesitguer de mon coté et trouver "la raison" ... en effet, j'utilisais un composanht externe qui fait appel à des fonctions Windows et je me suis rendu compte que le passage en arrière plan de la fenetre modale se fait sur appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    R := CreatePolygonRgn(APoints, 8, WINDING);
    SetWindowRgn(Handle, R, True);
    Dans le composant incriminé : cette fonction permet de créer une fleche qui sera affiché pendant un Drag'nDrop
    Voilà j'ai donc desactivé cette fonction et tout remarche bien. Merci bien à vous
    ANIS

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

Discussions similaires

  1. Vb.Net apres le clic sur un bouton, l'application passe en arrière plan
    Par aiglelibre dans le forum Développement Windows
    Réponses: 0
    Dernier message: 30/11/2012, 15h04
  2. Réponses: 0
    Dernier message: 19/06/2011, 00h33
  3. Une fenêtre qui reste en arrière plan ?
    Par supergrey dans le forum Windows
    Réponses: 7
    Dernier message: 27/06/2008, 16h40
  4. Problème de fenêtre modal qui ne stoppe pas le code en arrière plan
    Par Sebcaen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/09/2006, 13h43
  5. Réponses: 11
    Dernier message: 03/09/2006, 21h25

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