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

Lazarus Pascal Discussion :

Comment interrompre la fermeture d'une fenêtre ? [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut Comment interrompre la fermeture d'une fenêtre ?
    Bonjour,
    Je rencontre actuellement un petit problème :
    je voudrais que lorsque l'on quitte l'application (même au moyen de la croix rouge de la forme principale), un message de confirmation s'affiche, qui demande à l'utilisateur s'il veut vraiment quitter.

    Pour afficher le message, j'utilise une procédure du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    begin 
      Messagedlg('Voulez vous vraiment quitter ?',mtwarning,[mbok,mbno],0)
    end;
    que je fais correspondre à l'evennement OnClose de la forme principale.
    Le problème est que je ne sais pas comment garder la forme ouverte en cas de réponse négative de l'utilisateur (puisque cette procedure s'execute à la suite d'un Form1.close; )

    Quelqun a-t-il une idée ? Merci d'avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Salut

    Il suffit de modifier la valeur de CloseAction !

    Exemple :
    Bonne chance

  3. #3
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Merci pour la réponse,
    En effet la fenêtre reste ouverte lorsque je modifie la valeur de CloseAction.
    Cependant lorsque je tente ensuite de faire autre chose dessus (que ce soit de la refermer ou toute autre action), le programme plante :
    "external SIGSEVG".
    Ne faut il pas rechanger la valeur de CloseAction pour éviter ce genre de désagrément ? Si oui, comment et quand ?

  4. #4
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Euh non ...

    Le code que tu as dans FormClose doit se limiter, dans ton cas, a :
    - L'ouverture de la MessageBox,
    - Le traitement de la réponse en affectant caNone ou caFree a CloseAction.

    Si c'est caNone, FormClose s'arrete, et tout reprends comme si l'utilisateur n'avais pas cliqué sur fermer.

  5. #5
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    ah...désolé,
    je viens de me rendre compte que ma procédure détruisait une stringlist, quelque soit la reponse de l'utilisateur,
    d'où l'erreur quand le programme se poursuivait normalement (mais sans stringlist)
    Encore merci.

  6. #6
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Ok, tout se comprends ^^

    Par contre, il vaut mieux détruire tes objets dans l'évenement OnDestroy, c'est une bonne habitude a prendre

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

Discussions similaires

  1. Comment intercepter la fermeture d'une fenêtre
    Par Claude_Azoulai dans le forum Visual Studio
    Réponses: 2
    Dernier message: 28/03/2011, 18h02
  2. Comment détecter la fermeture d'une fenêtre par la croix?
    Par man_coef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2008, 16h34
  3. Comment détecter la fermeture d'une fenêtre?
    Par Masmeta dans le forum C++Builder
    Réponses: 1
    Dernier message: 18/01/2007, 16h02
  4. [VB.Net] Comment gérer la fermeture d'une fenêtre ?
    Par nakata77 dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/09/2006, 10h31
  5. Comment interdire la fermeture d'une fiche empilée ?
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/07/2004, 14h01

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