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 :

Show en ShowModal


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Points : 89
    Points
    89
    Par défaut Show en ShowModal
    Bonsoir

    Voila mon problème, j'affiche à un moment une fenetre avec un Show.
    Puis dans certain cas, je veux la transformer en showmodal pour forcer l'utilisateur à effectuer une action.

    Cependant, si j'essaye de faire un showmodal après le show, Delphi m'indique que ce n'est pas faisable car la fenetre est déjà visible.

    Je peux donc la cacher et la reafficher avec le showmodal mais ca fait très moche.

    Y a t'il une solution pour transformer la fenetre en modal ?

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Peut-être une solution :
    • mettre tout les composants de la forme "standard" dans un panneau
    • définir une forme modale quasi "vide" (juste les boutons de OK et CANCEL).
    • suite au Create de la forme modale, on indique pour cette form taille et position identique à la forme "standard", ainsi que le panneau de la forme standard.
    • au onActivate de la forme modale (qui sera exécuté par le showmodal), on transfère le panneau depuis la forme "standard" vers la forme modale.
    • lors du retour de la forme modale, on retransfère le panneau à la forme "standard".
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Pour ma part, je gérerais un boolean, et avec l'évenement OnDeactivate
    j'essaierais de bloquer la perte de focus en fonction du boolean.
    Pareil pour le OnClose.

    C'est un peu de la bidouille, mais je ne vois pas mieux pour le moment.

    Kwasin

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    A mas connaissance transformer un show en showModal (ou inversement) est impossible, et il faut effectivement faire un close puis réouvrir avec le bon ordre.


    Peut être pourriez vous tricher de cette manière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     LockWindowUpdate(Self.Handle);
     try
       Self .close;
       Self.ShowModal;
     finally
       LockWindowUpdate(0);
      end;
    LockWindowUpdate permet de "figer" une fenêtre en l'empêchant de se repeindre. Si cela fonctionne comme prévus, vous devriez figer la fenêtre, la fermer, la réouvrir puis luis permettre de se repeindre (" LockWindowUpdate(0);")

    Je ne garanti pas que cela fonctionne dans ce cas, car je n'ai pas tester le code.

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Ce que tu veux faire n'est pas très Windows-friendly
    Je pense qu'il faudrait un peu réfléchir à l'interface afin d'éviter ce problème.

    Exemple:
    Si lors d'une saisie, un paramètre devient indispensable, affiche une nouvelle Form qui ne peut se fermer QUE si ce paramètre est renseigné C'est un exemple comme un autre mais transformer une fiche non-modale en modale n'est pas possible ou alors ça tiendrait vraiment du bricolage...

    Citation Envoyé par dd16
    Puis dans certain cas, je veux la transformer en showmodal pour forcer l'utilisateur à effectuer une action.
    Explique-nous exactement dans quels cas la fiche devient modale.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    moi j'utilise c bout de code, c'est la solution que propose kwasin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm2.FormDeactivate(Sender: TObject);
    begin
      if Form2.Visible then begin
        Beep;
        Form2.SetFocus;
      end;
    end;
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  7. #7
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Salut!

    J'ai un peu de difficulté à comprendre...

    Tu affiches une fiche avec Show (fsMDIChild ?) et soudainement, une fois affichée (l'utilisateur a déjà commencé à travailler dedans) tu veux la transformer en Showmodal (fsNormal ?) ?

    Je ne peux qu'être d'accord avec Pedro :

    Citation Envoyé par Pedro
    Explique-nous exactement dans quels cas la fiche devient modale.
    -Slimjoe

  8. #8
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Salut!

    Juste comme ça...
    Et pourquoi est-ce que tu ne pourrais pas parfois l'afficher avec Show et d'autre fois l'afficher avec Showmodal dès le départ ?

    C'est peut-être ça que tu veux au fond (et moi qui n'ai rien compris). Si c'est le cas, le truc est de laisser ta fiche en FormStyle := fsNormal et Visible := false par défaut et, si tu as besoin de faire un Show tu changes le FormStyle en fsMDIChild.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Ouverture en Showmodal()
    with TForm1.create(self) do
    try
      showmodal();
    finally
      Release();
    end;
     
    //Ouverture en Show()
    with TForm1.Create(self) do
    begin
      FormStyle := fsMDIChild;
      Show();
    end;
    -Slimjoe

Discussions similaires

  1. Comprendre les méthodes SHOW et SHOWMODAL
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 3
    Dernier message: 02/03/2022, 14h38
  2. Différence entre 'Show' et 'Showmodal'
    Par vg-matrix dans le forum Débuter
    Réponses: 1
    Dernier message: 13/04/2008, 20h39
  3. Forms en ShowModal et aussi en Show
    Par Droïde Système7 dans le forum Débuter
    Réponses: 12
    Dernier message: 03/12/2007, 11h33
  4. show showmodal ?
    Par Mihalis dans le forum Delphi
    Réponses: 4
    Dernier message: 13/06/2007, 15h11
  5. Fenêtres: show, showmodal, hint, close ??
    Par Danae dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2005, 17h29

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