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 :

Problème de Showmodal


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Par défaut Problème de Showmodal
    Bonjour,
    j'ai remarqué chez un client qu'une fenêtre (Recherche clients) appellée par un showmodal s'affichait (rarement) derrière la fiche principale. Le problème, c'est que l'utilisateur pense que le programme à planté vu qu'il ne voit pas sa fenêtre de recherche mais juste la fenêtre principale qui ne répond plus vu qu'une autre fenêtre est en showmodal.

    Si on joue à cliquer sur l'application dans la barre des tâches + cliquer sur l'icône Bureau , la fenêtre modal se raffiche en premier plan.

    Pourquoi ce problème ?

    PS : Ce problème n'arrive pas tout le temps mais arrive quand même ! Donc c'est assez ennuyant pour l'utilisateur. Ce problème arrive lorsque le temps d'affichage de celle-ci est long (Quelques secondes). Lorsque cette fenêtre est appellée, elle fait une serie de traitement qui peuvent dans certains cas durer 5 à 8 secondes puis cette fenêtre s'affiche.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    crée ta fiche modal achaque appel pas au démarage de votre application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maform:=TMaform.creat(application);
    maform.showmodal;
    maform.release;

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    Par défaut
    Est ce que ta form principale n'est pas en fsStayOnTop ?
    si oui, il faut que tu le désactives avant l'appel de la form puis que tu le remettres après.
    Modérateur Delphi

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

  4. #4
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    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 : Février 2005
    Messages : 682
    Par défaut
    Bonjour,

    C'est de sa faute ! Et de la tienne ! Mais aussi de Windows ! Et de Delphi !

    Cela arrive fréquement sous TSE et très fréquemment sous w2k3.
    Tu fais un traitement et en fin de traitement tu affiche une fenetre, que ce soit un messageDlg, un showmessage ouo une fenêtre modale perso.
    Oui mais pendant ton traitement l'utilisateur impatient va voir sa messagerie donc désactive l'appli et une appli désactivée qui ayant terminée le traitement affiche la fenêtre. Puis en sortant des toilettes ton utilisateurs revient voir le résultat et réactive donc l'application, et c'est là que tout va mal.
    Alors pourquoi ?
    Je ne sais pas. (merci Yurck )
    Moi j'élève mes clients pour qu'il utilise le ALT TAB.
    Je pense qu'il faudrais sur le Desactivate de l'application faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FenEncours := Screen.activeForm;
    et sur OnActivate de l'appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Assigned(FenEncours) then FenEncours.show;
    A voir

    a+

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Par défaut
    Citation Envoyé par Yurck
    Bonjour,

    C'est de sa faute ! Et de la tienne ! Mais aussi de Windows ! Et de Delphi !

    Cela arrive fréquement sous TSE et très fréquemment sous w2k3.
    Tu fais un traitement et en fin de traitement tu affiche une fenetre, que ce soit un messageDlg, un showmessage ouo une fenêtre modale perso.
    Oui mais pendant ton traitement l'utilisateur impatient va voir sa messagerie donc désactive l'appli et une appli désactivée qui ayant terminée le traitement affiche la fenêtre. Puis en sortant des toilettes ton utilisateurs revient voir le résultat et réactive donc l'application, et c'est là que tout va mal.
    Alors pourquoi ?
    Je ne sais pas. (merci Yurck )
    Moi j'élève mes clients pour qu'il utilise le ALT TAB.
    Je pense qu'il faudrais sur le Desactivate de l'application faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FenEncours := Screen.activeForm;
    et sur OnActivate de l'appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Assigned(FenEncours) then FenEncours.show;
    A voir

    a+
    Merci Yurk, c'est bien ce que je pensais +- au départ. Donc je vais essayer de générer ce problème exprès dans une nouvelle application et appliquer tes conseils.

    Merci.

    PS : Est ce grave si j'utilise cette manière lors de l'appel de la fenêtre modal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    maform:=TMaform.create(NIL);
    ///Traitements divers
    maform.showmodal;
    maform.release;
    Je parle bien sûr du NIL

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 932
    Billets dans le blog
    6
    Par défaut
    du moment que tu te charges de la libération de la fiche, elle n'a pas besoin de Owner : c'est toi !!!
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. [Lazarus] Problème avec ShowModal et CheckBox
    Par spetit24 dans le forum Lazarus
    Réponses: 4
    Dernier message: 06/11/2012, 09h22
  2. Problème de fermeture de forme ShowModal
    Par keisha dans le forum Delphi
    Réponses: 5
    Dernier message: 12/09/2006, 19h33
  3. Problème avec showModal?
    Par Jayceblaster dans le forum Delphi
    Réponses: 2
    Dernier message: 07/09/2006, 17h02
  4. Problème avec AnimateWindow + Showmodal
    Par Thierry Laborde dans le forum Delphi
    Réponses: 2
    Dernier message: 25/08/2006, 11h17
  5. [VBA-E] Problème avec ShowModal dans un UserForm
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 09h19

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