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

Langage Delphi Discussion :

Fermer un fenêtre lors du OnShow


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut Fermer un fenêtre lors du OnShow
    J'ai une fenêtre qui, lors de son OnShow, ouvre une autre fenêtre qui demande un paramètre. Si l'utilisateur click sur le bouton 'Cancel', j'aimerais fermer la première fenêtre avec qu'elle ne s'affiche. Or le Self.Close et le 'Self.modalresult := mrCancel' ne fonctionnent pas.

    Merci D'avance

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je dis peut-être une connerie, c'est a vérifier,
    mais ne peux-tu pas décaler ton messages dans le OnActivate de ta forme, pour que le close fonctionne ?
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Si je mets cela dans le OnActivate, ma prenière fenêtre s'affiche. Et cela je ne le veux pas...

    Puis le close ne fonctionne pas non plus dans le Onactivate....

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    Y a t'il une raison pour ne pas ouvrir la fenêtre demandant le paramêtre en premier en showmodal et n'ouvrir l'autre fenêtre que si le modalresult est mrOk ?

  5. #5
    Membre actif Avatar de TMuet
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2003
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 225
    Points : 288
    Points
    288
    Par défaut
    La bonne procédure consiste à utiliser une méthode asynchrone pour fermer la fiche.

    Par exemple avec un timer qui serait activé dans le OnShow et qui ferait le Close dans sa méthode OnTimer.

  6. #6
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par TMuet
    La bonne procédure consiste à utiliser une méthode asynchrone pour fermer la fiche.

    Par exemple avec un timer qui serait activé dans le OnShow et qui ferait le Close dans sa méthode OnTimer.
    Je ne te suis pas tout à fait.

    Peux-tu agrémenter cela d'un exemple?

    Merci

  7. #7
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Non.

    La bonne méthode est celle de bjl : demander le paramètre avant d'ouvrir la fiche. Si Cancel=> pas d'affichage.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  8. #8
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je suis d'accord avec Nono
    C'est la bonne méthode, je dirai même plus, s'il faut systématiquement poser la question et que la fenêtre est appelée depuis 15000 endroits, c'est encapsuler la fonction d'ouverture de la form dans une fonction publique hors classe. (ce qui permet d'ailleurs aussi, de l'allouer et dé-allouer au vol, c mieux...)
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  9. #9
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Mais si cette fenêtre est demandée par deux parties totallement différentes du programme, il faut mettre deux fois l'appelle à la fenêtre de paramètre. Dans le OnShow (ou autre), c'est inclu dans ma fenêtre...

  10. #10
    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,

    TMuet a raison.
    Je develope.

    Certains évenement Oncreate, onShow bloque des actions Free, Close.

    Par exemple pour fair un close vous devez avoir une fenêtre ouverte.
    sur un OnShow la fenêtre n'est pas ouverte et elle est dans un état intérmédiaire.

    Par contre si vous mettez un TTImer.
    Enabled := False;
    L'evenement fait le close pares avoir mis le timer à false.
    Le temps est de quelques millisecondes.

    Si dans le onshow vous voulez fermer la fenêtre vous devez.
    1° Mettre le timer a enabled := true
    2° Fair un exit

    Ce qui se passe:
    La procedure onShow se finit . La fenêtre est ouverte
    Le timer se declenche.
    Il se mest en enabled := false pour ne pas boucler.
    Il ferme la fenêtre

  11. #11
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Unit xxx;

    type TMaForm = class( TForm )
    ...
    end;

    procedure Ouvrir;
    begin
    if Question = OK
    then MaForm.Visible := True;
    end;

    procedure TMaForm.Show( sender )
    begin
    // RIEN A GERER
    end;


    ETANT donné que la form est déjà allouée, et que la proc. OUvrir est dans l'interface...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  12. #12
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    J'aime cette idée, mais comment déclencher le Ouvrir pour une fenêtre modale?

  13. #13
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    function Ouvrir: Boolean;
    begin
    Result := False;
    if Question = OK
    then Result := MaForm.ShowModal = mrOK;
    end;
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  14. #14
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Donc pour l'appeller, je fait un create puis un from.Ouvrir à la place d'un forum.showmodal. C'est ça?

    Je test.

    Merci

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

Discussions similaires

  1. fermer une fenêtre lors d'un évènement "clicked"
    Par poutch dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 23/05/2011, 10h17
  2. Fermer une fenêtre depuis une autre...
    Par nicolb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2005, 10h22
  3. Comment fermer une fenêtre quand la souris et clavier sont inactifs ?
    Par Goldenkiller dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/12/2004, 22h09
  4. Fermer la fentre sans quitter le programme?
    Par tomburn dans le forum OpenGL
    Réponses: 13
    Dernier message: 06/12/2004, 17h02
  5. Fermer une fenêtre au bout d'un certain temps.
    Par cprogil dans le forum Composants VCL
    Réponses: 5
    Dernier message: 27/11/2003, 18h25

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